All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.objectfabric.InternalsGenerator Maven / Gradle / Ivy

There is a newer version: 0.9.1
Show newest version
/**
 * This file is part of ObjectFabric (http://objectfabric.org).
 *
 * ObjectFabric is licensed under the Apache License, Version 2.0, the terms
 * of which may be found at http://www.apache.org/licenses/LICENSE-2.0.html.
 * 
 * Copyright ObjectFabric Inc.
 * 
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

package org.objectfabric;

import java.util.ArrayList;

@SuppressWarnings("rawtypes")
public class InternalsGenerator {

    public static void main(String[] args) throws Exception {
        ObjectModelDef model = new ObjectModelDef("DefaultObjectModel");
        model.setSkip();

        PackageDef pack = new PackageDef("org.objectfabric");
        model.Packages.add(pack);

        //

        ClassDef methodCall = new ClassDef("MethodCall");
        methodCall.setAbstract();
        methodCall.Public = false;
        pack.Classes.add(methodCall);

        FieldDef target = new FieldDef(TGenerated.class, "target");
        target.Readonly = true;
        methodCall.Fields.add(target);

        FieldDef isDone = new FieldDef(Immutable.BOOLEAN, "isDone");
        methodCall.Fields.add(isDone);

        FieldDef ret = new FieldDef(Object.class, "result_");
        ret.Public = "false";
        methodCall.Fields.add(ret);

        FieldDef error = new FieldDef(Immutable.STRING, "exception");
        methodCall.Fields.add(error);

        //

        Generator generator = new Generator(model);
        generator.copyright(PlatformGenerator.readCopyright());
        generator.run("../api/src/main/generated", Target.JAVA);

        // TIndexed
        generator.write(new FileWriterTIndexedBase(generator, "org.objectfabric"));

        //

        ArrayList classes = new ArrayList();

        for (Immutable c : Immutable.ALL)
            if (!c.isPrimitive() || c.isBoxed())
                classes.add(PlatformGenerator.forName(c.java()));

        classes.add(TObject.class);
        classes.add(Object.class);

        // TArray
        {
            for (Class c : classes)
                generator.write(new FileWriterTArray(generator, "org.objectfabric", c));

            for (Class c : classes)
                generator.write(new FileWriterTArrayVersion(generator, "org.objectfabric", c));
        }

        // JS
        {
            generator.folder("../js/src/main/java");

            for (Class c : classes)
                generator.write(new FileWriterTArrayJS(generator, "org.objectfabric.generated", c));
        }

        // CLR
        {
            generator.folder("../clr/Shared2/Generated");
            generator.target(Target.CSHARP);
            generator.write(new FileWriterTArrayVersionDotNet(generator));
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy