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]);
        }
Пример #5
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);
        }