/// <summary> /// Поиск символа в пространстве имен. /// </summary> /// <param name="name">Имя для поиска.</param> /// <returns>Первый элемент списка найденных имен. null если ни чего не найдено.</returns> public override SymbolInfoList find(string name) { bool is_ns = NetHelper.IsNetNamespace(_name + "." + name); SymbolInfoList sil = null; if (is_ns) { compiled_namespace_node cnn = compiled_namespace_node.get_compiled_namespace(_name + "." + name, _tcst); sil = new SymbolInfoList(new SymbolInfo(cnn)); } else { //Kolay changed next string. throwOnError=false ignoreCase=true, . //Type t = Type.GetType(_name+"."+name,false,true); if (common_namespace != null) { sil = common_namespace.scope.FindOnlyInScope(name); if (sil != null) { return(sil); } } Type t = NetHelper.FindType(_name + "." + name); if (t != null) { sil = new SymbolInfoList(new SymbolInfo(compiled_type_node.get_type_node(t, _tcst))); } else { t = NetHelper.FindType(_name + "." + _name); if (t != null && NetHelper.IsEntryType(t)) { sil = NetHelper.FindName(t, name); if (sil == null) { type_node tn = NetHelper.FindCompiledPascalType(_name + "." + name); if (tn != null) { sil = new SymbolInfoList(new SymbolInfo(tn)); } else { template_class tc = NetHelper.FindCompiledTemplateType(_name + "." + name); if (tc != null) { sil = new SymbolInfoList(new SymbolInfo(tc)); } } } } } } return(sil); }
public static compiled_namespace_node get_compiled_namespace(string full_name, PascalSharp.Internal.TreeConverter.SymbolTable.TreeConverterSymbolTable tcst) { compiled_namespace_node cnn = null; if (!compiled_namespaces.TryGetValue(full_name, out cnn)) { cnn = new compiled_namespace_node(full_name, tcst); compiled_namespaces.Add(full_name, cnn); } cnn._tcst = tcst; return(cnn); }