public static void GenerateCode(object obj, StreamWriter stream, string indent, string itemTypename, string var) { if (obj != null) { Type type = obj.GetType(); if (Plugin.IsArrayType(type)) { System.Collections.IList list = (System.Collections.IList)obj; if (list.Count > 0) { stream.WriteLine("{0}{1}.reserve({2});", indent, var, list.Count); for (int i = 0; i < list.Count; ++i) { string itemName = string.Format("{0}_item{1}", var.Replace(".", "_"), i); DataCppExporter.GenerateCode(list[i], stream, indent, itemTypename, itemName, string.Empty); stream.WriteLine("{0}{1}.push_back({2});", indent, var, itemName); } } } } }
public static string GenerateCode(Behaviac.Design.VariableDef variable, bool isRefParam, StreamWriter stream, string indent, string typename, string var, string caller) { string retStr = string.Empty; if (variable.ValueClass == Behaviac.Design.VariableDef.kConst) { bool shouldGenerate = true; Type type = variable.Value.GetType(); if (Plugin.IsArrayType(type) || Plugin.IsCustomClassType(type) || (Plugin.IsStringType(type) && !variable.IsConst)) { shouldGenerate = false; } if (shouldGenerate) { retStr = DataCppExporter.GenerateCode(variable.Value, stream, indent, typename, var, caller); } } else if (variable.Property != null) { retStr = PropertyCppExporter.GenerateCode(variable.Property, variable.ArrayIndexElement, isRefParam, stream, indent, typename, var, caller); } return(retStr); }
public static void GenerateClassConstructor(Behaviac.Design.VariableDef variable, StreamWriter stream, string indent, string var) { if (variable.ValueClass == Behaviac.Design.VariableDef.kConst) { Type type = variable.Value.GetType(); if (Plugin.IsRefType(type)) { string nativeType = DataCppExporter.GetBasicGeneratedNativeType(variable.NativeType); stream.WriteLine("{0}\t\t\t{1} = NULL;", indent, var); } else if (Plugin.IsArrayType(type) || Plugin.IsCustomClassType(type) || (Plugin.IsStringType(type) && !variable.IsConst)) { if (Plugin.IsArrayType(type)) { string nativeType = DataCppExporter.GetGeneratedNativeType(variable.NativeType); int startIndex = nativeType.IndexOf('<'); int endIndex = nativeType.LastIndexOf('>'); string itemType = nativeType.Substring(startIndex + 1, endIndex - startIndex - 1); ArrayCppExporter.GenerateCode(variable.Value, stream, indent + "\t\t\t", itemType, var); } else if (Plugin.IsCustomClassType(type)) { StructCppExporter.GenerateCode(variable.Value, stream, indent + "\t\t\t", var, null, ""); } else if ((Plugin.IsStringType(type) && !variable.IsConst)) { string nativeType = DataCppExporter.GetBasicGeneratedNativeType(variable.NativeType); string retStr = DataCppExporter.GenerateCode(variable.Value, stream, indent + "\t\t\t", nativeType, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\t{1} = {2};", indent, var, retStr); } } } }
public static void GenerateCode(object obj, StreamWriter stream, string indent, string var, object parent, string paramName) { Debug.Check(obj != null); Type type = obj.GetType(); Debug.Check(Plugin.IsCustomClassType(type)); MethodDef method = parent as MethodDef; IList <DesignerPropertyInfo> properties = DesignerProperty.GetDesignerProperties(type); foreach (DesignerPropertyInfo property in properties) { if (!property.Attribute.HasFlags(DesignerProperty.DesignerFlags.NoSave)) { object member = property.GetValue(obj); Type memberType = member.GetType(); if (Plugin.IsArrayType(memberType)) { string memberNativeType = Plugin.GetNativeTypeName(memberType); string nativeTypeStr = DataCppExporter.GetGeneratedNativeType(memberNativeType); int startIndex = nativeTypeStr.IndexOf('<'); int endIndex = nativeTypeStr.LastIndexOf('>'); string itemType = nativeTypeStr.Substring(startIndex + 1, endIndex - startIndex - 1); ArrayCppExporter.GenerateCode(member, stream, indent, itemType, paramName); } else { if (property.Attribute is DesignerStruct) { GenerateCode(member, stream, indent, var + "." + property.Property.Name, parent, paramName); } else { bool bStructProperty = false; if (method != null) { MethodDef.Param param = method.GetParam(paramName, property); if (param != null) { bStructProperty = true; ParameterCppExporter.GenerateCode(param, stream, indent, string.Empty, var + "." + property.Property.Name, string.Empty); } } if (!bStructProperty) { DataCppExporter.GenerateCode(member, stream, indent, string.Empty, var + "." + property.Property.Name, string.Empty); } } } } } }
public static string GenerateCode(DefaultObject defaultObj, Behaviac.Design.MethodDef.Param param, StreamWriter stream, string indent, string typename, string var, string caller) { Behaviac.Design.ParInfo par = param.Value as Behaviac.Design.ParInfo; if (par != null) { return(ParInfoCppExporter.GenerateCode(par, param.IsRef, stream, indent, typename, var, caller)); } Behaviac.Design.VariableDef v = param.Value as Behaviac.Design.VariableDef; if (v != null) { return(VariableCppExporter.GenerateCode(defaultObj, v, param.IsRef, stream, indent, typename, var, caller)); } return(DataCppExporter.GenerateCode(param.Value, defaultObj, stream, indent, typename, var, caller)); }
public static void GenerateClassConstructor(DefaultObject defaultObj, Behaviac.Design.MethodDef method, StringWriter stream, string indent, string var) { for (int i = 0; i < method.Params.Count; ++i) { // const value if (!method.Params[i].IsProperty && !method.Params[i].IsLocalVar) { object obj = method.Params[i].Value; if (obj != null) { string param = var + "_p" + i; Type type = obj.GetType(); if (Plugin.IsArrayType(type)) { string nativeType = DataCppExporter.GetGeneratedNativeType(method.Params[i].NativeType); int startIndex = nativeType.IndexOf('<'); int endIndex = nativeType.LastIndexOf('>'); string itemType = nativeType.Substring(startIndex + 1, endIndex - startIndex - 1); ArrayCppExporter.GenerateCode(obj, defaultObj, stream, indent + "\t\t\t", itemType, param); } else if (Plugin.IsCustomClassType(type)) { if (Plugin.IsRefType(type)) { stream.WriteLine("{0}\t\t\t{1} = NULL;", indent, param); } else if (DesignerStruct.IsPureConstDatum(obj, method, method.Params[i].Name)) { StructCppExporter.GenerateCode(obj, defaultObj, stream, indent + "\t\t\t", param, null, ""); } } else { string nativeType = DataCppExporter.GetBasicGeneratedNativeType(method.Params[i].NativeType); string retStr = DataCppExporter.GenerateCode(obj, defaultObj, stream, string.Empty, nativeType, string.Empty, string.Empty); stream.WriteLine("{0}\t\t\t{1} = {2};", indent, param, retStr); } } } } }
public static void GenerateCode(object obj, StreamWriter stream, string indent, string var, object parent, string paramName) { Debug.Check(obj != null); Type type = obj.GetType(); Debug.Check(Plugin.IsCustomClassType(type)); MethodDef method = parent as MethodDef; IList <DesignerPropertyInfo> properties = DesignerProperty.GetDesignerProperties(type); foreach (DesignerPropertyInfo property in properties) { if (!property.Attribute.HasFlags(DesignerProperty.DesignerFlags.NoSave)) { object member = property.GetValue(obj); if (property.Attribute is DesignerStruct) { GenerateCode(member, stream, indent, var + "." + property.Property.Name, parent, paramName); } else { bool bStructProperty = false; if (method != null) { MethodDef.Param param = method.GetParam(paramName, property); if (param != null) { bStructProperty = true; ParameterCppExporter.GenerateCode(param, stream, indent, string.Empty, var + "." + property.Property.Name, string.Empty); } } if (!bStructProperty) { DataCppExporter.GenerateCode(member, stream, indent, string.Empty, var + "." + property.Property.Name, string.Empty); } } } } }