예제 #1
0
 public ALittleScriptGuessStruct(string p_namespace_name, string p_struct_name
                                 , ALittleScriptStructDecElement p_struct_dec, bool p_is_const)
 {
     is_register    = ALittleScriptUtility.IsRegister(p_struct_dec);
     namespace_name = p_namespace_name;
     struct_name    = p_struct_name;
     struct_dec     = p_struct_dec;
     is_const       = p_is_const;
 }
예제 #2
0
 public ALittleScriptStructDecElement GetStructDec()
 {
     if (m_flag_StructDec)
     {
         return(m_cache_StructDec);
     }
     m_flag_StructDec = true;
     foreach (var child in m_childs)
     {
         if (child is ALittleScriptStructDecElement)
         {
             m_cache_StructDec = child as ALittleScriptStructDecElement;
             break;
         }
     }
     return(m_cache_StructDec);
 }
        // 获取结构体数据
        public ALittleScriptStructData GetStructData(ALittleScriptStructDecElement dec)
        {
            var name_dec = dec.GetStructNameDec();

            if (name_dec == null)
            {
                return(null);
            }
            if (!m_struct_data_map.TryGetValue(dec.GetFile(), out Dictionary <string, ALittleScriptStructData> map))
            {
                return(null);
            }
            if (!map.TryGetValue(name_dec.GetElementText(), out ALittleScriptStructData data))
            {
                return(null);
            }
            return(data);
        }
        // 添加结构体数据
        private void AddStructData(ALittleScriptStructDecElement dec)
        {
            var name_dec = dec.GetStructNameDec();

            if (name_dec == null)
            {
                return;
            }

            if (!m_struct_data_map.TryGetValue(dec.GetFile(), out Dictionary <string, ALittleScriptStructData> map))
            {
                map = new Dictionary <string, ALittleScriptStructData>();
                m_struct_data_map.Add(dec.GetFile(), map);
            }
            var    struct_data = new ALittleScriptStructData();
            string name        = name_dec.GetElementText();

            if (map.ContainsKey(name))
            {
                map.Remove(name);
            }
            map.Add(name, struct_data);

            var body_dec = dec.GetStructBodyDec();

            if (body_dec == null)
            {
                return;
            }

            var var_dec_list = body_dec.GetStructVarDecList();

            foreach (var var_dec in var_dec_list)
            {
                struct_data.AddVarDec(var_dec);
            }
        }