예제 #1
0
        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());
            }
        }
예제 #2
0
        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());
            }
        }