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)); }
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()); }
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); }