Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
     }
 }
Esempio n. 4
0
 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;
 }
Esempio n. 6
0
 static ICSharpClosure GetClosure(ICSharpClosure closure)
 {
     while (closure != null && (closure.ClosureType == ClosureType.Interface || closure.ClosureType == ClosureType.AnonymousInterface))
     {
         closure = closure.Parent;
     }
     return(closure);
 }
Esempio n. 7
0
 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>();
 }
Esempio n. 8
0
 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>();
 }
Esempio n. 9
0
 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;
 }
Esempio n. 10
0
 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);
     }
 }
Esempio n. 12
0
        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)
 {
 }
Esempio n. 14
0
 public Delegate(ICSharpClosure @object, string name, AccessSpecifier access, Type @return, bool @static = false, IEnumerable <MethodParameter> parameters = null) : base(@object, name, access, @return, @static, parameters)
 {
 }
Esempio n. 15
0
 public ArrayDataType(ICSharpClosure closure, Type type) : base(closure, type.Name + "[]")
 {
     Type = type;
 }
Esempio n. 16
0
 public EnumeratedClass(ICSharpClosure @namespace, string name, AccessSpecifier access = AccessSpecifier.Public, IEnumerable <Class> baseClass = null) : base(@namespace, name, access, false, baseClass)
 {
 }
Esempio n. 17
0
 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)
 {
 }
Esempio n. 21
0
 public Type(ICSharpClosure closure, string name, Type alias = null) : base(closure, name)
 {
     Alias = alias;
 }
Esempio n. 22
0
 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;
 }
Esempio n. 24
0
 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)
 {
 }
Esempio n. 25
0
 public Struct(ICSharpClosure closure, string name, AccessSpecifier access = AccessSpecifier.Private, bool partial = true) : base(closure, name, access, partial)
 {
 }
Esempio n. 26
0
 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)
 {
 }
Esempio n. 29
0
 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;
 }