Examples of JavaFieldDeclaration


Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

                    JavaTypeName type = types.next();
                    String javaFieldName = typeConstructorInfo.fieldJavaNames.get(fieldName);
       
                    int modifiers = Modifier.FINAL;
                   
                    JavaFieldDeclaration fieldDec = new JavaFieldDeclaration (modifiers, type, javaFieldName, null);
                    javaClassRep.addFieldDeclaration(fieldDec);
                }
               

            }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

                // For each data constructor create a constant int field for the ordinal.
                for (int i = 0, n = typeConstructor.getNDataConstructors(); i < n; ++i) {
                    DataConstructor dc = typeConstructor.getNthDataConstructor(i);
                    String ordinalFieldName = createEnumFieldName(dc.getName().getUnqualifiedName()) + "_ORDINAL";
                    JavaExpression initializer = LiteralWrapper.make(new Integer(dc.getOrdinal()));
                    JavaFieldDeclaration fieldDec =
                        new JavaFieldDeclaration (
                                Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL,
                                JavaTypeName.INT, ordinalFieldName, initializer);
                    dataTypeClass.addFieldDeclaration(fieldDec);
                   
                    JavaDocComment jdc =
                        new JavaDocComment ("Ordinal value corresponding to the " + dc.getName().getUnqualifiedName() + " data constructor.");
                    fieldDec.setJavaDoc(jdc);
                }
               
                // For each data constructor create a static field
                for (int i = 0, n = typeConstructor.getNDataConstructors(); i < n; ++i) {
                    DataConstructor dc = typeConstructor.getNthDataConstructor(i);
                   
                    String staticFieldName = createEnumFieldName(dc.getName().getUnqualifiedName());
                   
                    JavaExpression initializer =
                        new JavaExpression.ClassInstanceCreationExpression(
                                dataType_TypeName,
                                new JavaExpression[]{
                                        new JavaField.Static(
                                                dataType_TypeName,
                                                staticFieldName + "_ORDINAL",
                                                JavaTypeName.INT),
                                        LiteralWrapper.make(dc.getName().getUnqualifiedName())},
                                constructorArgTypes);
                   
                    JavaFieldDeclaration fieldDec =
                        new JavaFieldDeclaration (
                                Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL,
                                dataType_TypeName, staticFieldName, initializer);

                    JavaDocComment jdc =
                        new JavaDocComment ("This instance of " + typeConstructorInfo.javaClassName + " representing the " + dc.getName().getUnqualifiedName() + " data constructor.");
                    fieldDec.setJavaDoc(jdc);

                    dataTypeClass.addFieldDeclaration(fieldDec);
                }
               
                // Add two instance fields.
                // int ordinal$;
                // String name$;
                JavaFieldDeclaration fieldDec = new JavaFieldDeclaration (Modifier.PRIVATE, JavaTypeName.INT, ORDINAL_FIELD_NAME, null);
                dataTypeClass.addFieldDeclaration(fieldDec);
                fieldDec = new JavaFieldDeclaration (Modifier.PRIVATE, JavaTypeName.STRING, DC_NAME_FIELD_NAME, null);
                dataTypeClass.addFieldDeclaration(fieldDec);
   
            }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

            private final void createFields (JavaClassRep dcClass, DataConstructor dc, TypeConstructorInfo typeConstructorInfo) {
               
                DataConstructorInfo dci = (DataConstructorInfo)typeConstructorInfo.dataConstructorInfo.get(dc);
               
                // Add a volatile int field for the hashcode.
                JavaFieldDeclaration hashCodeFieldDecl =
                    new JavaFieldDeclaration(
                            Modifier.PRIVATE | Modifier.VOLATILE,
                            JavaTypeName.INT,
                            HASH_CODE_FIELD_NAME,
                            LiteralWrapper.make(new Integer(0)));
               
                hashCodeFieldDecl.setJavaDoc(new JavaDocComment("Lazily initialized, cached hashCode."));
               
                dcClass.addFieldDeclaration(hashCodeFieldDecl);

                for (int i = 0, n = dc.getArity(); i < n; ++i) {
                    FieldName fieldName = dc.getNthFieldName(i);
                    if (typeConstructorInfo.commonFieldNames.contains(fieldName)) {
                        continue;
                    }
                   
                    JavaTypeName type = (JavaTypeName)dci.fieldTypeNames.get(fieldName);
                    String javaFieldName = (String)typeConstructorInfo.fieldJavaNames.get(fieldName);
       
                    int modifiers = Modifier.FINAL | Modifier.PRIVATE;
                   
                    JavaFieldDeclaration fieldDec = new JavaFieldDeclaration (modifiers, type, javaFieldName, null);
                    dcClass.addFieldDeclaration(fieldDec);
                }
            }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

                        if (SCJavaDefn.canTypeBeUnboxed(fieldTypes[i])) {
                            fieldType = SCJavaDefn.typeExprToTypeName(fieldTypes[i]);
                        }
                    }

                    JavaFieldDeclaration fieldDec = new JavaFieldDeclaration (modifiers, fieldType, javaFieldNames[i], null);

                    javaClassRep.addFieldDeclaration(fieldDec);
                }
            }

            // We want a singleton instance of the data constructor class to use as a
            // supercombinator.
            // private static final (typeConsType) self = new ThisClass();
            int modifiers = Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL;
            JavaExpression selfInitializer;
            if (LECCMachineConfiguration.passExecContextToDataConstructors()) {
                selfInitializer = new ClassInstanceCreationExpression(className, JavaExpression.LiteralWrapper.NULL, JavaTypeNames.RTEXECUTION_CONTEXT);
            } else {
                selfInitializer = new ClassInstanceCreationExpression(className);
            }
            JavaFieldDeclaration selfFieldDeclaration = new JavaFieldDeclaration(modifiers, className, instanceName, selfInitializer);
            javaClassRep.addFieldDeclaration(selfFieldDeclaration);

        }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

            int fieldModifiers = Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL;
            for (final DataConstructor dc : dataConsList) {
                if (dc.getArity() == 0) {
                    JavaExpression initializer = new ClassInstanceCreationExpression(tagDCTypeName, LiteralWrapper.make(Integer.valueOf(dc.getOrdinal())), JavaTypeName.INT);
                    String fieldName = CALToJavaNames.fixupVarName(dc.getName().getUnqualifiedName());
                    JavaFieldDeclaration fieldDec = new JavaFieldDeclaration(fieldModifiers, tagDCTypeName, fieldName, initializer);
                    javaClassRep.addFieldDeclaration(fieldDec);
                }
            }
        }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

                    modifiers = Modifier.FINAL;
                    type = fieldNameToType.get(fieldName);
                }
                String javaFieldName = SCJavaDefn.getJavaFieldNameFromFieldName(fieldName);

                JavaFieldDeclaration fieldDec = new JavaFieldDeclaration (modifiers, type, javaFieldName, null);
                javaClassRep.addFieldDeclaration(fieldDec);
            }
        }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

            JavaClassRep tagDCClassRep = new JavaClassRep(tagDCTypeName, className, classModifiers, interfaces);

            // Add the body of the class.

            // private final int tag;
            JavaFieldDeclaration tagField = new JavaFieldDeclaration (Modifier.PRIVATE | Modifier.FINAL, JavaTypeName.INT, "tag", null);
            tagDCClassRep.addFieldDeclaration(tagField);

            // public TagDC(int tagVal) {this.tag = tagVal;}
            JavaConstructor javaConstructor = new JavaConstructor(Modifier.PUBLIC, new String[]{"tagVal"}, new JavaTypeName[]{JavaTypeName.INT}, "TagDC");
            tagDCClassRep.addConstructor(javaConstructor);
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

                    //so declare them private for safety sake.
                    instanceModifiers = Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL;
                } else {
                    instanceModifiers = Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL;
                }
                final JavaFieldDeclaration instanceDeclaration =
                    new JavaFieldDeclaration(instanceModifiers,
                            className,
                            fieldName,
                            initializer);

                if (functions.getNFunctions() <= 1) {
                    instanceDeclaration.setJavaDoc(new JavaDocComment("Singleton instance of this class."));
                } else {
                    instanceDeclaration.setJavaDoc(new JavaDocComment("Instance of this class representing CAL function " + mf.getName() + "."));
                }
                javaClassRep.addFieldDeclaration(instanceDeclaration);
            }


            if (sharedValues.getNStaticErrorInfo() > 0) {
                javaClassRep.addComment(new JavaStatement.MultiLineComment("ErrorInfo instances."));
            }
            for (final String name : sharedValues.getStaticErrorInfoNames()) {

                final JavaExpression initializer = sharedValues.getStaticError(name);
                final int instanceModifiers = Modifier.PRIVATE | Modifier.STATIC | Modifier.FINAL;
                final JavaFieldDeclaration errorDeclaration = new JavaFieldDeclaration(instanceModifiers, JavaTypeName.ERRORINFO, name, initializer);
                javaClassRep.addFieldDeclaration(errorDeclaration);

            }

            // If this function references other supercombinators we need to set
            // up a field for each referenced SC, a flag to indicate the
            // initialization state of the referenced SC fields, and potentially an
            // object to be used as a synchronization mutex for the initialization method.
            final int referencedDCModifiers = Modifier.STATIC | Modifier.PRIVATE | Modifier.FINAL;

            // Create an instance field for each referenced data constructor.  This will give us
            // a local reference that can be used in the body function.
            //  e.g. RTFunction i_Foo;
            if (sharedValues.getNReferencedDCs() > 0) {
                javaClassRep.addComment(new JavaStatement.MultiLineComment("Data constructor class instances for all referenced data constructors."));
            }
            for (final ReferencedDCInfo rfi : sharedValues.getReferencedDCs()) {
                DataConstructor dc = rfi.getDC();
                JavaField jf = rfi.getJField();
                JavaExpression fieldInitializer;
                if (dc.getArity() > 0) {
                    // Just invoke the regular make invocation to get the singleton SC/DC instance.
                    fieldInitializer =
                        new MethodInvocation.Static(jf.getFieldType(), "make", JavaExpression.EMPTY_JAVA_EXPRESSION_ARRAY, JavaExpression.EMPTY_TYPE_NAME_ARRAY, jf.getFieldType());
                } else {
                    // This is a zero arity data constructor.  We get the singleton instance by accessing
                    // the DataType class factory method if the data type has more than one zero arity DC.
                    TypeConstructor typeCons = dc.getTypeConstructor();
                    if (SCJavaDefn.isTagDC(dc, module)) {
                        JavaTypeName typeClass = CALToJavaNames.createTypeNameFromType(typeCons, module);
                        JavaTypeName tagDCTypeName = CALToJavaNames.createTypeNameForTagDCFromType(typeCons, module);
                        Integer ordinal = Integer.valueOf(dc.getOrdinal());
                        fieldInitializer = new MethodInvocation.Static(typeClass, "getTagDC", LiteralWrapper.make(ordinal), JavaTypeName.INT, tagDCTypeName);
                    } else {
                        // Just invoke the regular make invocation to get the singleton SC/DC instance.
                        fieldInitializer =
                            new MethodInvocation.Static(jf.getFieldType(), "make", JavaExpression.EMPTY_JAVA_EXPRESSION_ARRAY, JavaExpression.EMPTY_TYPE_NAME_ARRAY, jf.getFieldType());
                    }
                }

                JavaFieldDeclaration dcDeclaration =
                    new JavaFieldDeclaration(
                            referencedDCModifiers,
                            jf.getFieldType(),
                            jf.getFieldName(),
                            fieldInitializer);
                javaClassRep.addFieldDeclaration(dcDeclaration);
            }

            if (functions.includesCAFs()) {

                javaClassRep.addComment(new JavaStatement.MultiLineComment("Mappings of execution context to CAF instances."));
                // Add an instance field to hold a Map of
                // ExecutionContext -> RTFullApp.General._0
                // A map for associating instances of this SC with execution contexts.
                // This is only created for CAF functions.  There are two reasons why CAFs
                // have an instance for each execution context.  One is thread safety.  The
                // other is so that different threads of execution can release cached CAF
                // results at will.
                for (final MachineFunction mf : functions.getTopLevelCALFunctions()) {
                    if (mf.isCAF()) {

                        //we do not synchronize the instance map, but rather the methods in the CAF class that mutate it.
                        //this is because the make method has check-then-modify semantics, and so needs to be synchronized at the method
                        //level anyways.
                        JavaExpression instancesMapInit = new ClassInstanceCreationExpression(JavaTypeName.WEAK_HASH_MAP);

                        String mapPrefix = functions.getFNamePrefix(mf.getName());
                        JavaFieldDeclaration instancesMap =
                            new JavaFieldDeclaration (
                                Modifier.STATIC | Modifier.PRIVATE | Modifier.FINAL,
                                JavaTypeName.MAP,
                                mapPrefix + "$instancesMap",
                                instancesMapInit);

                        instancesMap.setJavaDoc(new JavaDocComment("Execution context -> instance map for " + mf.getName()));
                        javaClassRep.addFieldDeclaration(instancesMap);
                    }
                }
            }

            // We have two int instance fields to hold the tag, indicating which function
            // is represented by the class instance, and the arity of that function.
            // These fields are only needed if the class represents more than one function.
            if (functions.getNFunctions() > 1) {
                JavaFieldDeclaration scTagDeclaration =
                    new JavaFieldDeclaration(Modifier.PRIVATE | Modifier.FINAL,
                                             JavaTypeName.INT,
                                             SCDefinitionBuilder.functionTagFieldName,
                                             null);

                List<String> commentLines = new ArrayList<String> ();
                commentLines.add ("Tag field indicating which CAL function this class instance represents.");
                for (int i = 0, n = functions.getTopLevelCALFunctions().size(); i < n; ++i) {
                    String fName = functions.getFunctionNameFromIndex(i);
                    commentLines.add("    " + i + " -> " + fName);
                }

                scTagDeclaration.setJavaDoc(new JavaStatement.JavaDocComment(commentLines));
                javaClassRep.addFieldDeclaration(scTagDeclaration);

                JavaFieldDeclaration arityDeclaration =
                    new JavaFieldDeclaration(Modifier.PRIVATE | Modifier.FINAL,
                            JavaTypeName.INT,
                            "arity",
                            null);
                arityDeclaration.setJavaDoc(new JavaStatement.JavaDocComment("Field holding arity of represented function."));
                javaClassRep.addFieldDeclaration(arityDeclaration);
            }


            if (LECCMachineConfiguration.SANITY_CHECK_LET_VARS) {
                // Create a boolean flag for each lifted let variable definition.
                for (final MachineFunction mf : functions.getLiftedLetVarDefFunctions()) {
                    String flagName = CALToJavaNames.cleanSCName(mf.getName()) + "_flag_";

                    javaClassRep.addFieldDeclaration(
                            new JavaFieldDeclaration(Modifier.PRIVATE, JavaTypeName.BOOLEAN, flagName, LiteralWrapper.make(Boolean.FALSE)));
                }
            }
        }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

            // Now instantiate the java class representation.
            JavaClassRep strictAppClassRep = new JavaClassRep(strictAppTypeName, superClassTypeName, classModifiers, interfaces);

            //add the function field, which is a reference to the function singleton.
            JavaFieldDeclaration functionFieldDec = new JavaFieldDeclaration (Modifier.PRIVATE | Modifier.FINAL, className, "function", null);
            strictAppClassRep.addFieldDeclaration(functionFieldDec);
            JavaField functionField = new JavaField.Instance (null, "function", className);

            // This class has a member field for each argument to the SC.
            JavaField[] functionArgumentMemberFields = new JavaField [mf.getArity()];
            for (int i = 0; i < mf.getArity(); ++i) {
                JavaFieldDeclaration fieldDec;
                JavaField field;
                String fieldName = CALToJavaNames.fixupVarName(mf.getParameterNames()[i]);
                if (mf.getParameterStrictness()[i] && SCJavaDefn.canTypeBeUnboxed(mf.getParameterTypes()[i])) {
                    fieldDec = new JavaFieldDeclaration (Modifier.PRIVATE, SCJavaDefn.typeExprToTypeName(mf.getParameterTypes()[i]), fieldName, null);
                    field = new JavaField.Instance (null, fieldName, SCJavaDefn.typeExprToTypeName(mf.getParameterTypes()[i]));
                } else {
                    fieldDec = new JavaFieldDeclaration (Modifier.PRIVATE, JavaTypeNames.RTVALUE, fieldName, null);
                    field = new JavaField.Instance (null, fieldName, JavaTypeNames.RTVALUE);
                }
                strictAppClassRep.addFieldDeclaration(fieldDec);
                functionArgumentMemberFields[i] = field;
            }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaFieldDeclaration

            // Now instantiate the java class representation.
            JavaClassRep lazyAppClassRep = new JavaClassRep(lazyAppTypeName, superClassTypeName, classModifiers, interfaces);

            //add the function field, which is a reference to the function singleton.
            JavaFieldDeclaration functionFieldDec = new JavaFieldDeclaration (Modifier.PRIVATE | Modifier.FINAL, className, "function", null);
            lazyAppClassRep.addFieldDeclaration(functionFieldDec);
            JavaField functionField = new JavaField.Instance (null, "function", className);

            // This class has a member field for each argument to the SC.
            JavaField[] functionArgumentMemberFields = new JavaField [mf.getArity()];
            for (int i = 0; i < mf.getArity(); ++i) {
                JavaFieldDeclaration fieldDec;
                JavaField field;
                String fieldName = CALToJavaNames.fixupVarName(mf.getParameterNames()[i]);
                fieldDec = new JavaFieldDeclaration (Modifier.PRIVATE, JavaTypeNames.RTVALUE, fieldName, null);
                field = new JavaField.Instance (null, fieldName, JavaTypeNames.RTVALUE);
                lazyAppClassRep.addFieldDeclaration(fieldDec);
                functionArgumentMemberFields[i] = field;
            }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.