Пример #1
0
        public Enumeration FindEnum(string name, bool createDecl = false)
        {
            var entries = name.Split(new string[] { "::" },
                                     StringSplitOptions.RemoveEmptyEntries).ToList();

            if (entries.Count <= 1)
            {
                var @enum = Enums.Find(e => e.Name.Equals(name));

                if (@enum == null && createDecl)
                {
                    @enum = new Enumeration()
                    {
                        Name = name, Namespace = this
                    };
                    Enums.Add(@enum);
                }

                return(@enum);
            }

            var enumName   = entries[entries.Count - 1];
            var namespaces = entries.Take(entries.Count - 1);

            var @namespace = FindNamespace(namespaces);

            if (@namespace == null)
            {
                return(null);
            }

            return(@namespace.FindEnum(enumName, createDecl));
        }
Пример #2
0
 public Enumeration FindEnumWithItem(string name)
 {
     return(Enums.Find(e => e.ItemsByName.ContainsKey(name)) ??
            (from declContext in Namespaces.Union <DeclarationContext>(Classes)
             let @enum = declContext.FindEnumWithItem(name)
                         where @enum != null
                         select @enum).FirstOrDefault());
 }
Пример #3
0
        public Enumeration FindEnumWithItem(string name)
        {
            var result = Enums.Find(e => e.ItemsByName.ContainsKey(name));

            if (result == null)
            {
                result = Namespaces.Select(ns => ns.FindEnumWithItem(name)).FirstOrDefault();
            }
            if (result == null)
            {
                result = Classes.Select(c => c.FindEnumWithItem(name)).FirstOrDefault();
            }
            return(result);
        }