Пример #1
0
        string GetParamString(List <StructNode> structs, string structName, bool bNoType = false, string prefix = "")
        {
            StructNode sn = structs.Find(obj => obj.name == structName);

            if (sn == null)
            {
                return("");
            }

            string code = "";

            for (int i = 0; i < sn.paramList.Count; ++i)
            {
                ParamNode param = sn.paramList[i];
                if (i > 0)
                {
                    code += ", ";
                }

                if (bNoType)
                {
                    code += string.Format("{0}{1}", prefix, param.name);
                    continue;
                }

                string type = param.bBaseType ? param.type : param.type;
                if (string.IsNullOrEmpty(param.lenParam))
                {
                    code += string.Format("{0} {1}", type, param.name);
                }
                else
                {
                    code += string.Format("List<{0}> {1}", type, param.name);
                }
            }
            return(code);
        }
Пример #2
0
        bool ParseStruct(string name, string[] strList)
        {
            if (strList.Length <= 0)
            {
                return(false);
            }

            StructNode structNode = new StructNode();

            structNode.name = name;
            structNode.paramList.Clear();

            string[] keyValue   = null;
            string[] typeAndLen = null;
            string[] lenAndSize = null;

            for (int index = 0; index < strList.Length; ++index)
            {
                keyValue = strList[index].Split(new char[] { ' ', '\t', '\n', ';' }, StringSplitOptions.RemoveEmptyEntries);
                if (keyValue.Length != 2)
                {
                    Debug.Log(string.Format("ParseStruct Error: {0}", strList[index]));
                    return(false);
                }

                ParamNode paramNode = new ParamNode();
                paramNode.name = keyValue[1];
                if (keyValue[0].Contains("["))
                {
                    typeAndLen = keyValue[0].Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries);
                    if (typeAndLen.Length != 2)
                    {
                        Debug.Log(string.Format("ParseStruct Error: {0}", strList[index]));
                        return(false);
                    }

                    paramNode.type = ToCSType(typeAndLen[0]);
                    lenAndSize     = typeAndLen[1].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    if (lenAndSize.Length == 1)
                    {
                        paramNode.lenParam = typeAndLen[1];
                        paramNode.lenMax   = MAX_ARRAY_SIZE.ToString();
                    }
                    else
                    {
                        paramNode.lenParam = lenAndSize[0];
                        paramNode.lenMax   = lenAndSize[1];
                    }
                }
                else
                {
                    paramNode.type     = ToCSType(keyValue[0]);
                    paramNode.lenParam = "";
                    paramNode.lenMax   = "";
                }
                paramNode.bBaseType = IsBaseType(paramNode.type);
                structNode.paramList.Add(paramNode);
            }

            foreach (var param in structNode.paramList)
            {
                if (!param.bBaseType)
                {
                    bool validType = _arrStructs.Find(obj => obj.name == param.type) != null;
                    if (!validType)
                    {
                        Debug.Log(string.Format("ParseStruct Error: Invalid type [{0}]", param.type));
                        return(false);
                    }
                }
            }

            _arrStructs.Add(structNode);
            return(true);
        }