private void ReloadInfo() { m_class_dec = null; m_class_ctor_dec = null; m_class_setter_dec = null; m_class_method_dec = null; m_class_static_dec = null; ABnfElement parent = m_element; while (true) { if (parent == null) { break; } if (parent is ALittleScriptNamespaceDecElement) { break; } else if (parent is ALittleScriptClassDecElement) { m_class_dec = (ALittleScriptClassDecElement)parent; break; } else if (parent is ALittleScriptClassCtorDecElement) { m_class_ctor_dec = (ALittleScriptClassCtorDecElement)parent; } else if (parent is ALittleScriptClassGetterDecElement) { m_class_getter_dec = (ALittleScriptClassGetterDecElement)parent; var modifier = (m_class_getter_dec.GetParent() as ALittleScriptClassElementDecElement).GetModifierList(); m_is_const = ALittleScriptUtility.IsConst(modifier); } else if (parent is ALittleScriptClassSetterDecElement) { m_class_setter_dec = (ALittleScriptClassSetterDecElement)parent; var modifier = (m_class_setter_dec.GetParent() as ALittleScriptClassElementDecElement).GetModifierList(); m_is_const = ALittleScriptUtility.IsConst(modifier); } else if (parent is ALittleScriptClassMethodDecElement) { m_class_method_dec = (ALittleScriptClassMethodDecElement)parent; var modifier = (m_class_method_dec.GetParent() as ALittleScriptClassElementDecElement).GetModifierList(); m_is_const = ALittleScriptUtility.IsConst(modifier); } else if (parent is ALittleScriptClassStaticDecElement) { m_class_static_dec = (ALittleScriptClassStaticDecElement)parent; } else if (parent is ALittleScriptGlobalMethodDecElement) { m_global_method_dec = (ALittleScriptGlobalMethodDecElement)parent; } parent = parent.GetParent(); } }
public ALittleScriptClassDecElement GetClassDec() { if (m_class_dec != null) { return(m_class_dec); } m_class_dec = ALittleScriptUtility.FindClassDecFromParent(m_element); return(m_class_dec); }
public ALittleScriptGuessClass(string p_namespace_name, string p_class_name , ALittleScriptClassDecElement p_class_dec, string p_using_name, bool p_is_const, bool p_is_native) { is_register = ALittleScriptUtility.IsRegister(p_class_dec); namespace_name = p_namespace_name; class_name = p_class_name; class_dec = p_class_dec; using_name = p_using_name; is_const = p_is_const; is_native = p_is_native; }
public ABnfElement FindClassAttr(ALittleScriptClassDecElement dec , int access_level, ALittleScriptUtility.ClassAttrType attr_type, string name) { var result = new List <ABnfElement>(); FindClassAttrList(dec, access_level, attr_type, name, result); if (result.Count == 0) { return(null); } return(result[0]); }
public ALittleScriptClassDecElement GetClassDec() { if (m_flag_ClassDec) { return(m_cache_ClassDec); } m_flag_ClassDec = true; foreach (var child in m_childs) { if (child is ALittleScriptClassDecElement) { m_cache_ClassDec = child as ALittleScriptClassDecElement; break; } } return(m_cache_ClassDec); }
// 获取类索引数据 public ALittleScriptClassData GetClassData(ALittleScriptClassDecElement dec) { var name_dec = dec.GetClassNameDec(); if (name_dec == null) { return(null); } if (!m_class_data_map.TryGetValue(dec.GetFile(), out Dictionary <string, ALittleScriptClassData> map)) { return(null); } if (!map.TryGetValue(name_dec.GetElementText(), out ALittleScriptClassData data)) { return(null); } return(data); }
// 添加类索引数据 private void AddClassData(ALittleScriptClassDecElement dec) { var name_dec = dec.GetClassNameDec(); if (name_dec == null) { return; } if (!m_class_data_map.TryGetValue(dec.GetFile(), out Dictionary <string, ALittleScriptClassData> map)) { map = new Dictionary <string, ALittleScriptClassData>(); m_class_data_map.Add(dec.GetFile(), map); } var class_data = new ALittleScriptClassData(); string name = name_dec.GetElementText(); if (map.ContainsKey(name)) { map.Remove(name); } map.Add(name, class_data); var template_dec = dec.GetTemplateDec(); if (template_dec != null) { class_data.AddClassChildDec(template_dec); } var body_dec = dec.GetClassBodyDec(); if (body_dec == null) { return; } var element_dec_list = body_dec.GetClassElementDecList(); foreach (var element_dec in element_dec_list) { class_data.AddClassChildDec(element_dec); } }
public void FindClassAttrList(ALittleScriptClassDecElement dec , int access_level, ALittleScriptUtility.ClassAttrType attr_type, string name, List <ABnfElement> result) { var name_dec = dec.GetClassNameDec(); if (name_dec == null) { return; } if (!m_class_data_map.TryGetValue(dec.GetFile(), out Dictionary <string, ALittleScriptClassData> map)) { return; } if (!map.TryGetValue(name_dec.GetElementText(), out ALittleScriptClassData data)) { return; } data.FindClassAttrList(access_level, attr_type, name, result); }