AddConstructor() public method

public AddConstructor ( ) : BooMethodBuilder
return BooMethodBuilder
Ejemplo n.º 1
0
        public ClassDefinition GetCompilerGeneratedExtensionsClass()
        {
            if (null == _compilerGeneratedExtensionsClass)
            {
                BooClassBuilder builder = CodeBuilder.CreateClass("CompilerGeneratedExtensions");
                builder.Modifiers = TypeMemberModifiers.Final | TypeMemberModifiers.Transient | TypeMemberModifiers.Public;
                builder.AddBaseType(ObjectType);

                BooMethodBuilder ctor = builder.AddConstructor();
                ctor.Modifiers = TypeMemberModifiers.Private;
                ctor.Body.Add(
                    CodeBuilder.CreateSuperConstructorInvocation(ObjectType));

                ClassDefinition cd     = builder.ClassDefinition;
                Module          module = GetCompilerGeneratedExtensionsModule();
                module.Members.Add(cd);
                ((ModuleEntity)module.Entity).InitializeModuleClass(cd);

                _compilerGeneratedExtensionsClass = cd;
            }
            return(_compilerGeneratedExtensionsClass);
        }
Ejemplo n.º 2
0
 BooMethodBuilder CreateConstructor(BooClassBuilder builder)
 {
     BooMethodBuilder constructor = builder.AddConstructor();
     constructor.Body.Add(CodeBuilder.CreateSuperConstructorInvocation(builder.Entity.BaseType));
     return constructor;
 }
Ejemplo n.º 3
0
        public void DeclareFieldsAndConstructor(BooClassBuilder builder)
        {
            // referenced entities turn into fields
            foreach (ITypedEntity entity in Builtins.array(_referencedEntities.Keys))
            {
                Field field = builder.AddInternalField("__" + entity.Name + _context.AllocIndex(), entity.Type);
                _referencedEntities[entity] = field.Entity;
            }

            // single constructor taking all referenced entities
            BooMethodBuilder constructor = builder.AddConstructor();
            constructor.Modifiers = TypeMemberModifiers.Public;
            constructor.Body.Add(CodeBuilder.CreateSuperConstructorInvocation(builder.Entity.BaseType));
            foreach (ITypedEntity entity in _referencedEntities.Keys)
            {
                InternalField field = (InternalField)_referencedEntities[entity];
                ParameterDeclaration parameter = constructor.AddParameter(field.Name, entity.Type);
                constructor.Body.Add(
                    CodeBuilder.CreateAssignment(CodeBuilder.CreateReference(field),
                                    CodeBuilder.CreateReference(parameter)));
            }
        }