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); }
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); }