public static void setup() { typeDeclarationList_ = new ArrayList<TypeDeclaration>(); final StaticScope globalScope = StaticScope.globalScope(); final Type integerType = StaticScope.globalScope().lookupTypeDeclaration("int"); assert null != integerType; final Type voidType = StaticScope.globalScope().lookupTypeDeclaration("void"); assert null != voidType; final Type booleanType = StaticScope.globalScope().lookupTypeDeclaration("boolean"); assert null != booleanType; if (null == globalScope.lookupTypeDeclaration("Map")) { final StaticScope newScope = new StaticScope(globalScope); final ClassDeclaration objectBaseClass = globalScope.lookupClassDeclaration("Object"); assert null != objectBaseClass; final TemplateDeclaration templateDecl = new TemplateDeclaration("Map", newScope, objectBaseClass, 0); newScope.setDeclaration(templateDecl); final Type K = new TemplateParameterType("K", null); final Type V = new TemplateParameterType("V", null); final IdentifierExpression keyTypeParamID = new IdentifierExpression("K", K, newScope, 0); final IdentifierExpression valueTypeParamID = new IdentifierExpression("V", V, newScope, 0); templateDecl.addTypeParameter(keyTypeParamID, 2); templateDecl.addTypeParameter(valueTypeParamID, 2); mapType_ = new TemplateType("Map", newScope, null); templateDecl.setType(mapType_); typeDeclarationList_.add(templateDecl); final Type intType = globalScope.lookupTypeDeclaration("int"); declareMapMethod("Map", mapType_, null, null); declareMapMethod("put", voidType, asList("value", "key"), asList(V, K)); declareMapMethod("get", V, asList("key"), asList(K)); declareMapMethod("containsKey", booleanType, asList("key"), asList(K)); declareMapMethod("containsValue", booleanType, asList("value"), asList(V)); declareMapMethod("remove", V, asList("key"), asList(K)); declareMapMethod("size", intType, null, null); // Declare the type globalScope.declareType(mapType_); globalScope.declareTemplate(templateDecl); } }
public static void setup() { typeDeclarationList_ = new ArrayList<TypeDeclaration>(); final StaticScope globalScope = StaticScope.globalScope(); final Type integerType = StaticScope.globalScope().lookupTypeDeclaration("int"); assert null != integerType; final Type voidType = StaticScope.globalScope().lookupTypeDeclaration("void"); assert null != voidType; final Type booleanType = StaticScope.globalScope().lookupTypeDeclaration("boolean"); assert null != booleanType; if (null == globalScope.lookupTypeDeclaration("Set")) { final StaticScope newScope = new StaticScope(globalScope); final TemplateDeclaration templateDecl = new TemplateDeclaration("Set", newScope, /*Base Class*/ null, 0); newScope.setDeclaration(templateDecl); final Type T = new TemplateParameterType("T", null); final IdentifierExpression typeParamId = new IdentifierExpression("T", T, newScope, 0); templateDecl.addTypeParameter(typeParamId, 1); listType_ = new TemplateType("Set", newScope, null); templateDecl.setType(listType_); typeDeclarationList_.add(templateDecl); final Type intType = globalScope.lookupTypeDeclaration("int"); declareSetMethod("Set", listType_, null, null, false); declareSetMethod("add", voidType, "element", T, false); declareSetMethod("remove", booleanType, "element", T, false); declareSetMethod("contains", booleanType, "element", T, true); declareSetMethod("size", intType, null, null, true); declareSetMethod("isEmpty", booleanType, null, null, true); // Declare the type globalScope.declareType(listType_); globalScope.declareTemplate(templateDecl); } }