Examples of MethodVariable


Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

        String varName = localName.getName();
        if (context.getLocalVarIndex(varName) != -1) {
            return encodeLocalVariableExpr(new LocalVariable(varName, localName.getTypeName()), context);

        } else if (context.getMethodVarIndex(varName) != -1) {
            return encodeMethodVariableExpr(new MethodVariable(varName), context);

        } else {
            return encodeJavaFieldExpr(new JavaField.Instance(null, varName, localName.getTypeName()), context);
        }             
    }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

            LocalName localName = (LocalName)lhs;
            String varName = localName.getName();
            if (context.getLocalVarIndex(varName) != -1) {
                lhs = new LocalVariable(varName, localName.getTypeName());
            } else if (context.getMethodVarIndex(varName) != -1) {
                lhs = new MethodVariable(varName);
            } else {
                lhs = new JavaField.Instance(null, varName, localName.getTypeName());
            }
        }
       
        // assign the value
        if (lhs instanceof JavaField.Instance) {                      
                       
            JavaField.Instance javaInstanceField = (JavaField.Instance)lhs;           
                 
            //push the reference to the Java field itself. We can't just call encodeJavaField because we need the type of the instance object.
            JavaExpression instance = javaInstanceField.getInstance();
            JavaTypeName instanceType;
            if (instance == null) {
                //use 'this' as the instance expression, so if the field is 'foo', then it is 'this.foo'.
                instanceType = encodeThis(context);              
               
            } else {
                instanceType = encodeExpr(instance, context);              
            }
                      
            //push the rhs expression
            // the type of the assignment takes on the type of the value (not the assigned variable).      
            JavaTypeName returnType = encodeExpr(assignment.getValue(), context);
           
            if (retainValue) {
                //duplicate the value so that a copy will be left over after assignment
                //field, value --->
                //value, field, value
                mv.visitInsn(getDupX1OpCode(returnType));
            }
           
            //do the assignment
            mv.visitFieldInsn(Opcodes.PUTFIELD, instanceType.getJVMInternalName(), javaInstanceField.getFieldName(), javaInstanceField.getFieldType().getJVMDescriptor());
           
            return returnType;
           
        } else if (lhs instanceof JavaField.Static) {
           
            JavaField.Static javaStaticField = (JavaField.Static)lhs;
                                  
            //push the rhs expression
            // the type of the assignment takes on the type of the value (not the assigned variable).      
            JavaTypeName returnType = encodeExpr(assignment.getValue(), context);
           
            if (retainValue) {
                //duplicate the value so that a copy will be left over after assignment
                //value --->
                //value, value
                mv.visitInsn(getDupOpCode(returnType));
            }
           
            //do the assignment
            mv.visitFieldInsn(Opcodes.PUTSTATIC, javaStaticField.getInvocationClass().getJVMInternalName(), javaStaticField.getFieldName(), javaStaticField.getFieldType().getJVMDescriptor());           
           
            return returnType;
                  
        } else if (lhs instanceof LocalVariable) {
            LocalVariable localVariable = (LocalVariable)lhs;
                       
            int localVarIndex = context.getLocalVarIndex(localVariable.getName());
   
            //push the rhs expression
            JavaTypeName returnType = encodeExpr(assignment.getValue(), context);
           
            if (retainValue) {
                //duplicate the value so that a copy will be left over after assignment
                //value --->
                //value, value
                mv.visitInsn(getDupOpCode(returnType));
            }
                           
            //encode the store instruction
            mv.visitVarInsn(getStoreOpCode(localVariable.getTypeName()), localVarIndex);
           
            return returnType;
   
        } else if (lhs instanceof MethodVariable) {
            MethodVariable methodVariable = (MethodVariable)lhs;
            String varName = methodVariable.getName();
                       
            int methodVarIndex = context.getMethodVarIndex(varName);
            JavaTypeName methodVarType = context.getMethodVarType(varName);
   
            //push the rhs expression
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

    /* (non-Javadoc)
     * @see org.openquark.cal.internal.runtime.lecc.JavaModelVisitor#visitMethodVariableExpression(org.openquark.cal.internal.runtime.lecc.JavaExpression.MethodVariable, java.lang.Object)
     */
    public JavaExpression visitMethodVariableExpression(MethodVariable methodVariable,
            T arg) {
        return new MethodVariable(methodVariable.getName());
    }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                            true,
                            "fromOrdinal");
               
                // build up a switch.
                JavaStatement.SwitchStatement switchStatement =
                    new JavaStatement.SwitchStatement(new MethodVariable("ordinal"));
               
                for (int i = 0, n = typeConstructorInfo.typeConstructor.getNDataConstructors(); i < n; ++i) {
                    DataConstructor dc = typeConstructorInfo.typeConstructor.getNthDataConstructor(i);
                   
                    String enumFieldName = createEnumFieldName(dc.getName().getUnqualifiedName());
                    JavaField field = new JavaField.Static(dataType_TypeName, enumFieldName, dataType_TypeName);
                   
                    JavaStatement.SwitchStatement.IntCaseGroup intCase =
                        new SwitchStatement.IntCaseGroup(
                                dc.getOrdinal(),
                                new ReturnStatement(field));
                    switchStatement.addCase(intCase);
                }
               
                // Throw an error if ordinal is outside accepted range.
                JavaExpression message =
                    new JavaExpression.OperatorExpression.Binary(
                            JavaOperator.STRING_CONCATENATION,
                            LiteralWrapper.make ("Invalid ordinal " ),
                            new MethodVariable("ordinal"));
               
                message =
                    new JavaExpression.OperatorExpression.Binary(
                            JavaOperator.STRING_CONCATENATION,
                            message,
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                    argNames[i] = argName;
                    argTypes[i] = type;
                   
                    JavaExpression.JavaField.Instance field =
                        new JavaExpression.JavaField.Instance(null, fieldName, type);
                    JavaExpression assign = new Assignment (field, new MethodVariable(argName));
                    constructorBody.addStatement(new ExpressionStatement(assign));
                    i++;
                }
               
                String constructorName = className.getUnqualifiedJavaSourceName();
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                                className.getUnqualifiedJavaSourceName());
                   
                    JavaExpression assignOrdinal =
                        new JavaExpression.Assignment (
                                new JavaField.Instance(null, ORDINAL_FIELD_NAME, JavaTypeName.INT),
                                new MethodVariable("ordinal"));
                    constructor.addStatement(new ExpressionStatement(assignOrdinal));
                   
                    JavaExpression assignName =
                        new JavaExpression.Assignment (
                                new JavaField.Instance(null, DC_NAME_FIELD_NAME, JavaTypeName.STRING),
                                new MethodVariable("name"));
                    constructor.addStatement(new ExpressionStatement(assignName));
                   
                } else {
                    constructor = new JavaConstructor (Modifier.PUBLIC, className.getUnqualifiedJavaSourceName());
                }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                        argName,
                        JavaTypeName.OBJECT,
                        false,
                        "equals");

            MethodVariable objectArg = new MethodVariable (argName);
            JavaField thisField = new JavaField.This(typeName);
           
            // if (object == this) {
            //     return true;
            // }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

            if (typeConsApp.isNonParametricType(CAL_Prelude.TypeConstructors.Boolean)) {               
                JavaExpression makeBoolean =
                    new MethodInvocation.Static(
                            SOURCE_MODEL_EXPR_TYPE_NAME,
                            "makeBooleanValue",
                            new MethodVariable(argName),
                            JavaTypeName.BOOLEAN,
                            SOURCE_MODEL_EXPR_TYPE_NAME);
               
                return makeBoolean;
            }

            if(typeConsApp.getForeignTypeInfo() != null) {
                ForeignTypeInfo fti = typeConsApp.getForeignTypeInfo();
                Class<?> foreignClass = fti.getForeignType();
               
                // We handle the primitive Java types, excluding void.
                if(foreignClass.isPrimitive() && foreignClass != void.class) {
                    MethodVariable mv = new MethodVariable(argName);
                    String funcName;
                    JavaTypeName valueType;
                    if (foreignClass == boolean.class) {
                        funcName = "makeBooleanValue";
                        valueType = JavaTypeName.BOOLEAN;
                    } else if (foreignClass == byte.class) {
                        funcName = "makeByteValue";
                        valueType = JavaTypeName.BYTE;
                    } else if (foreignClass == char.class) {
                        funcName = "makeCharValue";
                        valueType = JavaTypeName.CHAR;
                    } else if (foreignClass == double.class) {
                        funcName = "makeDoubleValue";
                        valueType = JavaTypeName.DOUBLE;
                    } else if (foreignClass == float.class) {
                        funcName = "makeFloatValue";
                        valueType = JavaTypeName.FLOAT;
                    } else if (foreignClass == int.class) {
                        funcName = "makeIntValue";
                        valueType = JavaTypeName.INT;
                    } else if (foreignClass == long.class) {
                        funcName = "makeLongValue";
                        valueType = JavaTypeName.LONG;
                    } else if (foreignClass == short.class) {
                        funcName = "makeShortValue";
                        valueType = JavaTypeName.SHORT;
                    } else {
                        throw new IllegalStateException("Unhandled primitive type " + foreignClass.getName());
                    }
                   
                    JavaExpression makeValue =
                        new MethodInvocation.Static(
                                SOURCE_MODEL_EXPR_TYPE_NAME,
                                funcName,
                                mv,
                                valueType,
                                SOURCE_MODEL_EXPR_TYPE_NAME);
                   
                    return makeValue;
                }
               
                // Handle java.lang.String.
                if (foreignClass == java.lang.String.class) {
                    return new MethodInvocation.Static(
                                    SOURCE_MODEL_EXPR_TYPE_NAME,
                                    "makeStringValue",
                                    new MethodVariable(argName),
                                    JavaTypeName.STRING,
                                    SOURCE_MODEL_EXPR_TYPE_NAME);
                }
            }              
        }
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                    argTypes[i] = type;

                    if (!typeConstructorInfo.commonFieldNames.contains(fn)) {
                        JavaExpression.JavaField.Instance field =
                            new JavaExpression.JavaField.Instance(null, fieldName, type);
                        JavaExpression assign = new Assignment (field, new MethodVariable(argName));
                        constructorBody.addStatement(new ExpressionStatement(assign));
                    }
                }
               
                String constructorName = dcClassTypeName.getUnqualifiedJavaSourceName();
                int index = constructorName.lastIndexOf('.');
                if (index > -1) {
                    constructorName = constructorName.substring(index + 1);
                }
               
                JavaConstructor constructor;
                if (typeConstructorInfo.commonFieldNames.size() > 0) {
                    JavaExpression superArgValues[] = new JavaExpression[typeConstructorInfo.commonFieldNames.size()];
                    JavaTypeName superArgTypes[] = new JavaTypeName[superArgValues.length];
                    int i = 0;
                    for (FieldName superFieldName : typeConstructorInfo.commonFieldNames) {
                        JavaTypeName fieldType = (JavaTypeName)dci.fieldTypeNames.get(superFieldName);
                        String fieldName = (String)typeConstructorInfo.fieldJavaNames.get(superFieldName);
                        String argName = fieldName+"$";
                        JavaExpression superArgValue = new MethodVariable(argName);
                        superArgValues[i] = superArgValue;
                        superArgTypes[i] = fieldType;
                        ++i;
                    }
                   
View Full Code Here

Examples of org.openquark.cal.internal.javamodel.JavaExpression.MethodVariable

                String fieldName = SCJavaDefn.getJavaFieldNameFromFieldName(fn);
                String argName = fieldName+"$";

                argNames[i] = argName;
                argTypes[i] = type;
                MethodVariable mv = new MethodVariable (argName);
                JavaExpression.JavaField.Instance field =
                    new JavaExpression.JavaField.Instance(null, fieldName, type);
                JavaExpression assign = new Assignment (field, mv);
                constructorBody.addStatement(new ExpressionStatement(assign));
                i++;
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.