Example #1
0
        protected CodegenProperty(
            Type returnType,
            string returnTypeName,
            Type generator,
            CodegenSymbolProvider optionalSymbolProvider,
            CodegenScope env)
        {
            if (generator == null) {
                throw new ArgumentException("Invalid null generator");
            }

            ReturnType = returnType;
            ReturnTypeName = returnTypeName;
            OptionalSymbolProvider = optionalSymbolProvider;
            Block = new CodegenBlock(); // no return from the property block
            GetterStatement = new Getter(Block);
            SetterStatement = new Getter(Block);
            GetterBlock = new CodegenBlock(GetterStatement);
            SetterBlock = new CodegenBlock(SetterStatement);
            if (env.IsDebug) {
                AdditionalDebugInfo = GetGeneratorDetail(generator);
            }
            else {
                AdditionalDebugInfo = generator.GetSimpleName();
            }
        }
Example #2
0
 public CodegenExpression Make(
     CodegenMethodScope parent,
     CodegenSymbolProvider symbols,
     CodegenClassScope classScope)
 {
     return Make(parent, (SAIFFInitializeSymbol) symbols, classScope);
 }
Example #3
0
        public CodegenMethod AddMethodWithSymbols(
            Type returnType,
            string methodName,
            IList<CodegenNamedParam> @params,
            Type generator,
            CodegenClassScope classScope,
            Consumer<CodegenMethod> code,
            CodegenSymbolProvider symbolProvider)
        {
            if (_methods == null) {
                _methods = new Dictionary<string, CodegenMethod>();
            }

            var existing = _methods.Get(methodName);
            if (existing != null) {
                if (ListExtensions.AreEqual(@params, existing.LocalParams)) {
                    return existing;
                }

                throw new IllegalStateException("Method by name '" + methodName + "' already registered");
            }

            var method = CodegenMethod
                .MakeMethod(returnType, generator, symbolProvider, classScope)
                .AddParam(@params);
            method.Block.DebugStack();
            _methods.Put(methodName, method);
            code.Invoke(method);
            return method;
        }
Example #4
0
        public CodegenProperty AddPropertyWithSymbols(
            Type returnType,
            string propertyName,
            Type generator,
            CodegenClassScope classScope,
            Consumer<CodegenProperty> code,
            CodegenSymbolProvider symbolProvider)
        {
            var existing = _properties.Get(propertyName);
            if (existing != null) {
                if (existing.ReturnType == returnType) {
                    return existing;
                }

                throw new IllegalStateException("Property by name '" + propertyName + "' already registered");
            }

            var property = CodegenProperty.MakePropertyNode(
                returnType, 
                generator,
                symbolProvider,
                classScope);

            _properties.Put(propertyName, property);
            code.Invoke(property);
            return property;
        }
Example #5
0
 public CodegenExpression Make(
     CodegenMethodScope parent,
     CodegenSymbolProvider symbols,
     CodegenClassScope classScope)
 {
     throw new UnsupportedOperationException("not supported for merge forge");
 }
Example #6
0
        public CodegenExpression Make(
            CodegenMethodScope parent,
            CodegenSymbolProvider symbolsArg,
            CodegenClassScope classScope)
        {
            var symbols = (SAIFFInitializeSymbol) symbolsArg;
            var itemsAsMakeables = Items.Transform<
                CodegenMakeable,
                CodegenMakeable,
                TableLookupIndexReqKey,
                QueryPlanIndexItemForge>(
                k => k,
                v => v,
                k => (TableLookupIndexReqKey) k,
                v => (QueryPlanIndexItemForge) v);

            return NewInstance<QueryPlanIndex>(
                CodegenMakeableUtil.MakeMap(
                    "items",
                    typeof(TableLookupIndexReqKey),
                    typeof(QueryPlanIndexItem),
                    itemsAsMakeables,
                    GetType(),
                    parent,
                    symbols,
                    classScope));
        }
Example #7
0
 public static CodegenMethod MakeParentNode(
     Type returnType,
     Type generator,
     CodegenSymbolProvider symbolProvider,
     CodegenScope env)
 {
     return MakeParentNode(returnType.FullName, generator, symbolProvider, env);
 }
Example #8
0
 public CodegenExpression Make(
     CodegenMethodScope parent,
     CodegenSymbolProvider symbols,
     CodegenClassScope classScope)
 {
     return NewInstance<TableLookupIndexReqKey>(
         Constant(IndexName),
         Constant(IndexModuleName),
         Constant(TableName));
 }
Example #9
0
        public CodegenProperty MakeChildWithScope(
            string returnType,
            Type generator,
            CodegenSymbolProvider symbolProvider,
            CodegenScope env)
        {
            if (returnType == null) {
                throw new ArgumentException("Invalid null return type");
            }

            return AddChild(new CodegenProperty(null, returnType, generator, symbolProvider, env));
        }
 public CodegenExpression Make(
     CodegenMethodScope parent,
     CodegenSymbolProvider symbols,
     CodegenClassScope classScope)
 {
     return new SAIFFInitializeBuilder(
             typeof(MyFlushedSimpleViewFactory),
             GetType(),
             "factory",
             parent,
             (SAIFFInitializeSymbol) symbols,
             classScope)
         .Eventtype("eventType", EventType)
         .Build();
 }
Example #11
0
        public static CodegenProperty MakePropertyNode(
            string returnTypeName,
            Type generator,
            CodegenSymbolProvider symbolProvider,
            CodegenScope env)
        {
            if (returnTypeName == null) {
                throw new ArgumentException("Invalid null return type");
            }

            if (symbolProvider == null) {
                throw new ArgumentException("No symbol provider");
            }

            return new CodegenProperty(null, returnTypeName, generator, symbolProvider, env);
        }
Example #12
0
        public static CodegenMethod MakeMethod(
            Type returnType,
            Type generator,
            CodegenSymbolProvider symbolProvider,
            CodegenScope env)
        {
            if (returnType == null) {
                throw new ArgumentException("Invalid null return type");
            }

            if (symbolProvider == null) {
                throw new ArgumentException("No symbol provider");
            }

            return new CodegenMethod(returnType, null, generator, symbolProvider, env);
        }
Example #13
0
        protected CodegenMethod(
            Type returnType,
            string returnTypeName,
            Type generator,
            CodegenSymbolProvider optionalSymbolProvider,
            CodegenScope env)
        {
            if (generator == null) {
                throw new ArgumentException("Invalid null generator");
            }

            ReturnType = returnType;
            ReturnTypeName = returnTypeName;
            OptionalSymbolProvider = optionalSymbolProvider;
            Block = new CodegenBlock(this);
            if (env.IsDebug) {
                AdditionalDebugInfo = GetGeneratorDetail(generator);
            }
            else {
                AdditionalDebugInfo = generator.GetSimpleName();
            }
        }