public Lexicon.Type GetOrCreateDataTypeByName(ICSharpClosure closure, string name, Func <string, Lexicon.Type> create = null) { var dt = closure?.GetByName(name); if (dt != null) { return(dt); } dt = Objects.SingleOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.Closure?.Equals(closure) ?? closure == ddt.Closure)); if (dt == null) { dt = Lookups.FirstOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.FromClosure?.Equals(closure) ?? closure == ddt.FromClosure)); if (dt == null) { if (create == null) { LookupObjectType lt = new LookupObjectType(closure, name); dt = lt; Lookups.Add(lt); } else { Objects.Add(dt = create(name)); } } } return(dt); }
public TType GetOrCreateDataTypeByName <TType>(ICSharpClosure closure, string name, Func <string, TType> create = null) where TType : Lexicon.Type { var dt = (TType)closure?.GetByName(name); if (dt != null) { return(dt); } dt = (TType)Objects.SingleOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.Closure?.Equals(closure) ?? closure == ddt.Closure)); if (dt == null) { //dt = Lookups.SingleOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.FromClosure?.Equals(closure) ?? closure == ddt.FromClosure)); if (dt == null) { //if (create == null) //{ // LookupObjectType lt = new LookupObjectType(closure, name); // dt = lt; // Lookups.Add(lt); //} //else { Objects.Add(dt = create(name)); } } } return(dt); }
public GenericType(ICSharpClosure closure, string name, IEnumerable <Type> constraints = null) : base(closure, name) { Constraints = new List <Type>(); if (constraints != null) { Constraints.AddRange(constraints); } }
static ICSharpClosure RootClosure(ICSharpClosure closure) { while (closure.Parent != null) { return(RootClosure(closure.Parent)); } return(closure); }
public Property(ICSharpClosure closure, string name, AccessSpecifier access, Type type, bool @static = false, bool @readonly = false, bool optional = false, AccessSpecifier get = AccessSpecifier.Public, AccessSpecifier set = AccessSpecifier.Public) : base(closure, name, access, @static) { Type = type; ReadOnly = @readonly; IsOptional = optional; GetSpecifier = get; SetSpecifier = set; }
static ICSharpClosure GetClosure(ICSharpClosure closure) { while (closure != null && (closure.ClosureType == ClosureType.Interface || closure.ClosureType == ClosureType.AnonymousInterface)) { closure = closure.Parent; } return(closure); }
public Object(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Private, bool partial = true) : base(closure, name) { Access = access; Partial = partial; InnerObjects = new List <Object>(); Variables = new List <Variable>(); Methods = new List <Method>(); Properties = new List <Property>(); }
public Class(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Public, bool @partial = true, IEnumerable <Class> baseClass = null) : base(GetClosure(closure), name, access, @partial) { Implements = new List <Type>(); Extends = new List <Type>(); if (baseClass != null) { Extends.AddRange(baseClass); } Attributes = new List <string>(); }
public Method(ICSharpClosure @object, string name, AccessSpecifier access, Type @return, bool @static = false, IEnumerable <MethodParameter> parameters = null) : base(@object, name, access, @static) { Return = @return; Parameters = new List <MethodParameter>(); if (parameters != null) { Parameters.AddRange(parameters); } IsConstructor = name == @object?.Name.Split(new char[] { '<' })[0]; IsIndexer = name == null; }
public Member(ICSharpClosure closure, string name, AccessSpecifier access, bool @static = false, bool @readonly = false, Comment comment = null) : base(closure, name) { Access = access; Static = @static; Readonly = @readonly; Comment = comment; Attributes = new List <string>(); if (name != Name) { //Attributes.Add($"Name(\"{name}\")"); } }
public CSharpConstruct(ICSharpClosure closure, string name) { if (typeof(Type).IsAssignableFrom(GetType())) { Name = name; } else { Name = name.FormatCSharpTypeName(); } if (closure == this) { throw new InvalidOperationException(); } Closure = closure; if (Closure != null) { Closure.Add(this); } }
public Lexicon.Type GetOrCreateArrayDataTypeByName(ICSharpClosure closure, Lexicon.Type type) { string name = type.FullName + "[]"; var dt = closure?.GetByName(name); if (dt != null) { return(dt); } dt = Objects.SingleOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.Closure?.Equals(closure) ?? closure == ddt.Closure)); if (dt == null) { dt = Lookups.FirstOrDefault(ddt => ddt.FullName.Equals(name) && (ddt.FromClosure?.Equals(closure) ?? closure == ddt.FromClosure)); if (dt == null) { LookupObjectType lt = new LookupObjectType(closure, name); dt = lt; Lookups.Add(lt); } } return(dt); }
public GenericInterface(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Public, bool partial = true, IEnumerable <Class> baseClass = null) : base(closure, name, access, partial, baseClass) { }
public Delegate(ICSharpClosure @object, string name, AccessSpecifier access, Type @return, bool @static = false, IEnumerable <MethodParameter> parameters = null) : base(@object, name, access, @return, @static, parameters) { }
public ArrayDataType(ICSharpClosure closure, Type type) : base(closure, type.Name + "[]") { Type = type; }
public EnumeratedClass(ICSharpClosure @namespace, string name, AccessSpecifier access = AccessSpecifier.Public, IEnumerable <Class> baseClass = null) : base(@namespace, name, access, false, baseClass) { }
public Variable(ICSharpClosure closure, Type type, string name, AccessSpecifier access = AccessSpecifier.Private, bool @static = false, bool @readonly = false, string initialValue = null) : base(closure, name, access, @static, @readonly) { Type = type; InitialValue = initialValue; }
public AnonymousInterface(ICSharpClosure closure, string name) : base(closure, name, AccessSpecifier.Public) { this.name = name; }
public GenericAbstractClass(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Public, bool partial = true, IEnumerable <Class> baseClass = null) : base(closure, name, access, partial, baseClass) { GenericTypes = new List <Type>(); }
public AbstractClass(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Private, bool partial = true, IEnumerable <Class> baseClass = null) : base(closure, name, access, partial, baseClass) { }
public Type(ICSharpClosure closure, string name, Type alias = null) : base(closure, name) { Alias = alias; }
public MethodParameter(ICSharpClosure closure, Type type, string name, string initialValue = null, bool isOptional = false, bool defaultParameter = false, bool isParams = false) : base(closure, type, name, AccessSpecifier.Private, false, false, initialValue) { Optional = isOptional; IsParams = isParams; }
public LookupObjectType(ICSharpClosure closure, string name) : base(null, name) { FromClosure = closure; }
public Literal(ICSharpClosure closure, string name, AccessSpecifier access, Type type, bool @static = false, bool @readonly = false, bool optional = false, AccessSpecifier get = AccessSpecifier.Public, AccessSpecifier set = AccessSpecifier.Public) : base(closure, name, access, type, @static, @readonly, optional, get, set) { }
public Struct(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Private, bool partial = true) : base(closure, name, access, partial) { }
public AliasType(ICSharpClosure closure, string name, Type alias, IEnumerable <GenericType> genericTypes) : base(closure, name) { Alias = alias; GenericTypes = genericTypes; }
public ConcreteClass(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Public, bool partial = true, IEnumerable <Class> baseClass = null) : base(closure, name, access, partial, baseClass) { //Attributes.Add("External"); }
public FunctionDataType(ICSharpClosure closure, string name) : base(closure, name) { }
public ImplicitType(ICSharpClosure closure, string name, Type alias = null) : base(closure, name, alias) { }
public GenericClass(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Public, bool partial = true, IEnumerable <Class> baseClass = null, bool internalType = false) : base(closure, name, access, partial, baseClass) { _internalType = internalType; }