public Type LookupType(string fullName) { var split = fullName.Split(new char[] { '.', ':' }, StringSplitOptions.RemoveEmptyEntries); if (split.Length == 0) { return(null); } else if (split.Length == 1) { return(AllTypes.FirstOrDefault(t => t.Namespace == BasicTypes.GlobalNamespace && t.Name == fullName)); } else { var typeName = split.Last(); var ns = LookupNamespace(split.Take(split.Length - 1).ToArray()); if (ns == null) { return(null); } else { return(AllTypes.FirstOrDefault(t => t.Namespace == ns && t.Name == typeName)); } } }
public CodeType GetCodeType(string name, FileDiagnostics diagnostics, DocRange range) { var type = AllTypes.FirstOrDefault(type => type.Name == name); if (range != null && type == null) { diagnostics.Error(string.Format("The type {0} does not exist.", name), range); } return(type); }
/// <summary> /// Find an existing AST type equivalent to the given system type. /// If AST type names are modified, only basic types will continue to successfully resolve. /// </summary> /// <param name="type"></param> /// <returns></returns> public Type LookupType(System.Type type) { type = U.Deref(type); var ret = BasicTypes.Of(type); if (ret != null) { return(ret); } var ns = LookupNamespace(type.Namespace); if (ns != null) { ret = AllTypes.FirstOrDefault(t => t.Namespace == ns && t.Name == type.Name); } return(null); }
public T GetCodeType <T>() where T : CodeType => (T)AllTypes.FirstOrDefault(type => type.GetType() == typeof(T));
public CodeType GetCodeType(string name) => AllTypes.FirstOrDefault(type => type.Name == name);