private static void CreateDataTypeRegisterMethod(CodeNamespace codeNamespace, TypeInfo dataTypeInfo, CodeGenerationInfo generationInfo) { using (IndentedTextWriter tw = new IndentedTextWriter(new StringWriter())) { tw.WriteLine("void register_{0}()", dataTypeInfo.Name); tw.WriteLine("{"); tw.Indent++; tw.WriteLine("static ntreev::crema::enum_info enumData({0});", dataTypeInfo.IsFlag.ToString().ToLower()); tw.WriteLine("if(ntreev::crema::enum_util::contains(typeid({0})) == true)", dataTypeInfo.Name); tw.Indent++; tw.WriteLine("return;"); tw.Indent--; foreach (var item in dataTypeInfo.Members) { tw.WriteLine("enumData.add(\"{0}_{1}\", {0}_{1});", dataTypeInfo.Name, item.Name); } tw.WriteLine("ntreev::crema::enum_util::add(typeid({0}), &enumData);", dataTypeInfo.Name); tw.Indent--; tw.Write("}"); tw.Flush(); codeNamespace.AddCppStatement(tw.InnerWriter.ToString()); } }
private static void CreateDataTypeRegisterMethods(CodeNamespace codeNamespace, CodeGenerationInfo generationInfo) { foreach (var item in generationInfo.Types) { CreateDataTypeRegisterMethod(codeNamespace, item, generationInfo); } using (var tw = new IndentedTextWriter(new StringWriter())) { tw.WriteLine("void register_enums()"); tw.WriteLine("{"); tw.Indent++; foreach (var item in generationInfo.Types) { tw.WriteLine("register_{0}();", item.Name); } tw.Indent--; tw.Write("}"); tw.Flush(); codeNamespace.AddCppStatement(tw.InnerWriter.ToString()); } }