public Function(IdContainer Container, CodeString Name, TypeOfFunction Type, FunctionOverloads Overload) : base(Container, Name) { this.Overload = Overload; this.Children = new Identifier[] { Type }; this.DeclaredIdType = DeclaredIdType.Function; }
public Constructor CreateDeclaredConstructor(CodeString Declaration, FunctionParameter[] Params, List <Modifier> Mods = null) { if (ConstructorOverloads == null) { ConstructorOverloads = new FunctionOverloads(null); } var RetType = (Type)GlobalContainer.CommonIds.Void; if (StructuredType is ClassType) { if ((Mods == null || (Modifiers.GetFlags(Mods) & IdentifierFlags.Static) == 0) && (StructuredType.Flags & (IdentifierFlags.Static | IdentifierFlags.Abstract)) == 0) { RetType = StructuredType; } } var FuncType = new TypeOfFunction(this, DefaultCallConv, RetType, Params); var Func = new Constructor(this, FuncType, ConstructorOverloads, Declaration); if (!AdjustAndDeclareFunction(Func, Mods)) { return(null); } return(Func); }
public override Function OnCreateFunction(CodeString Name, TypeOfFunction FuncType, FunctionOverloads Overload, List <Modifier> Mods = null) { if (Mods != null && (Modifiers.GetFlags(Mods) & IdentifierFlags.Static) != 0) { return(new Function(this, Name, FuncType, Overload)); } else { return(new MemberFunction(this, Name, FuncType, Overload)); } }
public FunctionOverloads GetOverload(string Name) { for (var i = 0; i < FunctionOverloads.Count; i++) { var Overload = FunctionOverloads[i]; if (Overload.Name == Name) { return(Overload); } } var Ret = new FunctionOverloads(Name); FunctionOverloads.Add(Ret); return(Ret); }
public override Function OnCreateFunction(CodeString Name, TypeOfFunction FuncType, FunctionOverloads Overload, List <Modifier> Mods = null) { throw new ApplicationException(); }
public virtual Function OnCreateFunction(CodeString Name, TypeOfFunction FuncType, FunctionOverloads Overload = null, List <Modifier> Mods = null) { return(new Function(this, Name, FuncType, Overload)); }
public Constructor(IdContainer Container, TypeOfFunction Type, FunctionOverloads Overload, CodeString Declaration) : base(Container, new CodeString(), Type, Overload) { this.Declaration = Declaration; this.DeclaredIdType = DeclaredIdType.Constructor; }
public MemberFunction(IdContainer Container, CodeString Name, TypeOfFunction Type, FunctionOverloads Overload) : base(Container, Name, Type, Overload) { }