Example #1
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#pragma once\r\n#include <map>");

            #line 7 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"

            foreach (GameFile file in CxxHelper.Definition.Files)
            {
            #line default
            #line hidden
                this.Write("\r\n#include \"");

            #line 12 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(file.Name)));

            #line default
            #line hidden
                this.Write(".h\"");

            #line 12 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            }


            #line default
            #line hidden
            this.Write("\r\nnamespace ugly\r\n{\r\n    namespace ");

            #line 18 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n    {\r\n        class Serializer\r\n        {\r\n        public:\r\n            std::s" +
                       "tring SerializeState(");

            #line 23 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 23 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
            this.Write("& playerSetup, ");

            #line 23 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, ");

            #line 23 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
            this.Write("& playerState);\r\n            std::string SerializeSetup(");

            #line 24 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 24 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
            this.Write("& playerSetup, ");

            #line 24 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, ");

            #line 24 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
            this.Write("& playerState);\r\n            bool ExecuteOrder(const std::string& order, ");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, int playerId);\r\n            \r\n            class IdMap\r\n            {" +
                       "\r\n            public:");

            #line 29 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"

            foreach (GameClass c in CxxHelper.Definition.Class.Values)
            {
                if (c.IdMember != null)
                {
            #line default
            #line hidden
                    this.Write("\r\n                std::map<");

            #line 36 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(CxxHelper.Definition.GetBasicType(c.IdMember.Type))));

            #line default
            #line hidden
                    this.Write(", ");

            #line 36 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write("*> ");

            #line 36 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write(";");

            #line 36 "D:\ugly\CodeGenerator\cxx\CxxSerializerHeader.tt"
                }
            }


            #line default
            #line hidden
            this.Write("\r\n                void Clear();\r\n            };\r\n        private:\r\n            Id" +
                       "Map gameSetupId;\r\n            IdMap gameStateId;\r\n        };\r\n    }\r\n}");
            return(this.GenerationEnvironment.ToString());
        }
Example #2
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#pragma once\r\n#include <vector>\r\n#include <cstdint>");

            #line 8 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            foreach (string d in CxxHelper.CurrentFile.Dependency)
            {
            #line default
            #line hidden
                this.Write("\r\n#include \"");

            #line 13 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(d)));

            #line default
            #line hidden
                this.Write(".h\"");

            #line 13 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }
            if (CxxHelper.Server)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\nnamespace ugly\r\n{");

            #line 21 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                this.PushIndent("    ");
            }


            #line default
            #line hidden
            this.Write("\r\nnamespace ");

            #line 26 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n{");

            #line 27 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            foreach (GameEnum e in CxxHelper.CurrentFile.Enum)
            {
            #line default
            #line hidden
                this.Write("\r\n    \r\n    enum class ");

            #line 33 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(e.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 34 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (KeyValuePair <string, int> kvp in e.Value)
                {
            #line default
            #line hidden
                    this.Write("        \r\n        ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(kvp.Key)));

            #line default
            #line hidden
                    this.Write(" = ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(kvp.Value));

            #line default
            #line hidden
                    this.Write(",");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    };");

            #line 43 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }

            foreach (GameClass c in CxxHelper.CurrentFile.Class)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\n    struct ");

            #line 51 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("\r\n    {");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (ClassMember m in c.Member)
                {
            #line default
            #line hidden
                    this.Write("\r\n        ");

            #line 57 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                    for (int i = 0; i < m.Array; ++i)
                    {
            #line default
            #line hidden
                        this.Write("std::vector<");

            #line 60 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    BasicType type = CxxHelper.Definition.GetBasicType(m.Type);
                    if (type.IsBasic())
                    {
            #line default
            #line hidden

            #line 65 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 65 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    else
                    {
            #line default
            #line hidden

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Type)));

            #line default
            #line hidden

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    for (int i = 0; i < m.Array; ++i)
                    {
            #line default
            #line hidden
                        this.Write(">");

            #line 73 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 75 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write(";");

            #line 75 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n\r\n        ");

            #line 80 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("();\r\n        ");

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                foreach (ClassMethod m in c.Method)
                {
                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        bool");

            #line 88 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("\r\n        void");

            #line 94 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write("(");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState, ");

            #line 99 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
                        MethodParam a    = m.Param[idxParam];
                        BasicType   type = CxxHelper.Definition.GetBasicType(a.Type);
                        if (idxParam != 0)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 107 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("const ");

            #line 111 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type.IsBasic())
                        {
            #line default
            #line hidden

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        else
                        {
            #line default
            #line hidden

            #line 119 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden

            #line 119 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("&");

            #line 123 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        }


            #line default
            #line hidden
                        this.Write(" ");

            #line 125 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 125 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }


            #line default
            #line hidden
                    this.Write(");");

            #line 127 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                }
                if (CxxHelper.Server)
                {
                    if (c.ConditionMethod.Any())
                    {
            #line default
            #line hidden
                        this.Write("\r\n");

            #line 135 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                    foreach (string m in c.ConditionMethod)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        bool ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m)));

            #line default
            #line hidden
                        this.Write("(struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState);");

            #line 141 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
                    }
                }


            #line default
            #line hidden
                this.Write("\r\n    };");

            #line 146 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }


            #line default
            #line hidden
            this.Write("\r\n}");

            #line 150 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"

            if (CxxHelper.Server)
            {
                this.PopIndent();


            #line default
            #line hidden
                this.Write("\r\n}");

            #line 156 "D:\ugly\CodeGenerator\cxx\CxxHeader.tt"
            }


            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Example #3
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#include \"");

            #line 6 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.CurrentFile.Name)));

            #line default
            #line hidden
            this.Write(".h\"\r\n#include <cstdio>");

            #line 7 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            if (CxxHelper.Server)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\nnamespace ugly\r\n{");

            #line 14 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                this.PushIndent("    ");
            }


            #line default
            #line hidden
            this.Write("\r\nnamespace ");

            #line 19 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n{");

            #line 20 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            foreach (GameClass c in CxxHelper.CurrentFile.Class)
            {
            #line default
            #line hidden
                this.Write("\r\n    ");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("::");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("()");

            #line 25 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                for (int i = 0; i < c.Member.Count; ++i)
                {
            #line default
            #line hidden
                    this.Write("\r\n        ");

            #line 30 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (i == 0)
                    {
            #line default
            #line hidden
                        this.Write(":");

            #line 33 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write(",");

            #line 37 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Member[i].Name)));

            #line default
            #line hidden
                    this.Write("()");

            #line 39 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n    { }\r\n        ");

            #line 44 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                foreach (ClassMethod m in c.Method)
                {
            #line default
            #line hidden
                    this.Write("\r\n    ");

            #line 49 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("bool");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("void");

            #line 56 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(" ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write("::");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                    this.Write("(");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState, ");

            #line 61 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    for (int idxParam = 0; idxParam < m.Param.Count; ++idxParam)
                    {
                        MethodParam a    = m.Param[idxParam];
                        BasicType   type = CxxHelper.Definition.GetBasicType(a.Type);
                        if (idxParam != 0)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 69 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("const ");

            #line 73 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type.IsBasic())
                        {
            #line default
            #line hidden

            #line 77 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden

            #line 77 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        else
                        {
            #line default
            #line hidden

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden

            #line 81 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }
                        if (type == BasicType.Class)
                        {
            #line default
            #line hidden
                            this.Write("&");

            #line 85 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }


            #line default
            #line hidden
                        this.Write(" ");

            #line 87 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 87 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }


            #line default
            #line hidden
                    this.Write(")\r\n    {");

            #line 90 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                    if (CxxHelper.Server)
                    {
            #line default
            #line hidden
                        this.Write("\r\n        return false;");

            #line 95 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                    else
                    {
            #line default
            #line hidden
                        this.Write("        std::printf(\"");

            #line 100 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(m.MethodId));

            #line default
            #line hidden

            #line 100 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
                            BasicType type = CxxHelper.Definition.GetBasicType(a.Type);
                            if (type == BasicType.Class)
                            {
                                type = CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type);
                            }


            #line default
            #line hidden
                            this.Write(" %");

            #line 106 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypePrinter(type)));

            #line default
            #line hidden

            #line 106 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        }


            #line default
            #line hidden
                        this.Write("\\n\"");

            #line 108 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
                            BasicType type = CxxHelper.Definition.GetBasicType(a.Type);
                            if (type == BasicType.Class)
                            {
                                BasicType realType = CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type);


            #line default
            #line hidden
                                this.Write(", ");

            #line 115 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

                                if (realType == BasicType.Enum)
                                {
            #line default
            #line hidden
                                    this.Write("(int)");

            #line 118 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                }


            #line default
            #line hidden

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write(".");

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(CxxHelper.Definition.Class[a.Type].IdMember.Name)));

            #line default
            #line hidden

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                            else if (type == BasicType.Enum)
                            {
            #line default
            #line hidden
                                this.Write(", (int)");

            #line 124 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 124 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                            else
                            {
            #line default
            #line hidden
                                this.Write(", ");

            #line 128 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 128 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                            }
                        }


            #line default
            #line hidden
                        this.Write(");");

            #line 131 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }

            #line default
            #line hidden
                    this.Write("\r\n    }");

            #line 134 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                }
                if (CxxHelper.Server)
                {
                    foreach (string m in c.ConditionMethod)
                    {
            #line default
            #line hidden
                        this.Write("\r\n\r\n    bool ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write("::");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m)));

            #line default
            #line hidden
                        this.Write("(struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                        this.Write("& gameSetup, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                        this.Write("& playerSetup, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                        this.Write("& gameState, struct ");

            #line 143 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                        this.Write("& playerState)\r\n    {\r\n        return true;\r\n    }");

            #line 146 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
                    }
                }
            }


            #line default
            #line hidden
            this.Write("\r\n}");

            #line 152 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"

            if (CxxHelper.Server)
            {
                this.PopIndent();


            #line default
            #line hidden
                this.Write("\r\n}");

            #line 158 "D:\ugly\CodeGenerator\cxx\CxxCode.tt"
            }


            #line default
            #line hidden
            return(this.GenerationEnvironment.ToString());
        }
Example #4
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            this.Write("#include \"Serializer.h\"\r\n#include <cctype>\r\n#include <sstream>\r\n\r\nnamespace ugly\r" +
                       "\n{\r\n    namespace ");

            #line 12 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.Namespace)));

            #line default
            #line hidden
            this.Write("\r\n    {\r\n        void Serializer::IdMap::Clear()\r\n        {");

            #line 15 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

            foreach (GameClass c in CxxHelper.Definition.Class.Values)
            {
                if (c.IdMember != null)
                {
            #line default
            #line hidden
                    this.Write("\r\n                ");

            #line 22 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write(".clear();");

            #line 22 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                }
            }


            #line default
            #line hidden
            this.Write(@"
        }

        namespace
        {
            template<class T> T ReadNext(const char*& buf)
            {
                std::uint64_t data = 0;
                bool negative = false;
                if (*buf == '-')
                {
                    negative = true;
                    ++buf;
                }
                while (std::isdigit(*buf))
                {
                    data *= 10;
                    data += ((*buf) - '0');
                }
                if (*buf)
                    ++buf;
                if (negative)
                    return static_cast<T>(-static_cast<std::int64_t>(data));
                return static_cast<T>(data);
            }

            template<typename T> void SerializeInternal(T& data, std::stringstream& buffer, Serializer::IdMap& ids, ");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
            this.Write("& playerSetup, ");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, ");

            #line 52 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
            this.Write("& playerState);\r\n            ");

            #line 53 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

            foreach (GameClass c in CxxHelper.Definition.Class.Values)
            {
            #line default
            #line hidden
                this.Write("\r\n            template<> void SerializeInternal(");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("& data, std::stringstream& buffer, Serializer::IdMap& ids, ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                this.Write("& gameSetup, ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                this.Write("& playerSetup, ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                this.Write("& gameState, ");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                this.Write("& playerState);");

            #line 58 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            }

            foreach (GameClass c in CxxHelper.Definition.Class.Values)
            {
            #line default
            #line hidden
                this.Write("\r\n\r\n            template<> void SerializeInternal(");

            #line 66 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                this.Write("& data, std::stringstream& buffer, Serializer::IdMap& ids, ");

            #line 66 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
                this.Write("& gameSetup, ");

            #line 66 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
                this.Write("& playerSetup, ");

            #line 66 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
                this.Write("& gameState, ");

            #line 66 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
                this.Write("& playerState)\r\n            {");

            #line 67 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                if (c.IdMember != null)
                {
            #line default
            #line hidden
                    this.Write("\r\n                ids.");

            #line 72 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                    this.Write("[data.");

            #line 72 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.IdMember.Name)));

            #line default
            #line hidden
                    this.Write("] = &data;");

            #line 72 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                }
                foreach (ClassMember m in c.Member)
                {
            #line default
            #line hidden
                    this.Write("\r\n                {");

            #line 78 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                    if (m.Array != 0)
                    {
                        for (int i = 0; i < m.Array; ++i)
                        {
            #line default
            #line hidden
                            this.Write("\r\n                    int size");

            #line 85 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                            this.Write(" = (int)(");

            #line 85 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                            if (i != 0)
                            {
            #line default
            #line hidden
                                this.Write("size");

            #line 88 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(i - 1));

            #line default
            #line hidden
                                this.Write(" == 0 ? 0 : ");

            #line 88 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }


            #line default
            #line hidden
                            this.Write("data.");

            #line 90 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden

            #line 90 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                            for (int j = 0; j < i; ++j)
                            {
            #line default
            #line hidden
                                this.Write("[0]");

            #line 93 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }


            #line default
            #line hidden
                            this.Write(".size());\r\n                    buffer << size");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                            this.Write(" << \" \";");

            #line 96 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        }
                    }
                    if (m.Condition != null && m.Condition.Type == ConditionType.While && m.Array != 0)
                    {
            #line default
            #line hidden
                        this.Write("                    bool executeLoop = true;");

            #line 102 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    }
                    string arrayIdxSuffix = "";
                    for (int i = 0; i < m.Array; ++i)
                    {
            #line default
            #line hidden
                        this.Write("\r\n                    for (int idx");

            #line 109 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                        this.Write(" = 0; idx");

            #line 109 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                        this.Write(" < size");

            #line 109 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                        this.Write("; ++idx");

            #line 109 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(i));

            #line default
            #line hidden
                        this.Write(")\r\n                    {");

            #line 110 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        this.PushIndent("    ");
                        arrayIdxSuffix += string.Format("[idx{0}]", i);
                    }
                    switch (CxxHelper.Definition.GetBasicType(m.Type))
                    {
                    case BasicType.Char:
                    case BasicType.Enum:


            #line default
            #line hidden
                        this.Write("                \r\n                    buffer << (int)data.");

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(arrayIdxSuffix));

            #line default
            #line hidden
                        this.Write(" << \" \";");

            #line 120 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        break;

                    case BasicType.Class:
                        if (m.Condition != null)
                        {
            #line default
            #line hidden
                            this.Write("                    \r\n                    if (");

            #line 127 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                            if (m.Condition.Type == ConditionType.While)
                            {
            #line default
            #line hidden
                                this.Write("(executeLoop = (executeLoop && ");

            #line 130 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }


            #line default
            #line hidden
                            this.Write("data.");

            #line 132 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden

            #line 132 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(arrayIdxSuffix));

            #line default
            #line hidden
                            this.Write(".");

            #line 132 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Condition.Function)));

            #line default
            #line hidden
                            this.Write("(gameSetup, playerSetup, gameState, playerState))");

            #line 132 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                            if (m.Condition.Type == ConditionType.While)
                            {
            #line default
            #line hidden
                                this.Write("))");

            #line 135 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }


            #line default
            #line hidden
                            this.Write("\r\n                    {");

            #line 139 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                            this.PushIndent("    ");
                        }


            #line default
            #line hidden
                        this.Write("\r\n                    SerializeInternal(data.");

            #line 144 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden

            #line 144 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(arrayIdxSuffix));

            #line default
            #line hidden
                        this.Write(", buffer, ids, gameSetup, playerSetup, gameState, playerState);");

            #line 144 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        if (m.Condition != null)
                        {
                            this.PopIndent();


            #line default
            #line hidden
                            this.Write("\r\n                    }");

            #line 150 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        }
                        break;

                    default:


            #line default
            #line hidden
                        this.Write("                \r\n                    buffer << data.");

            #line 156 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(m.Name)));

            #line default
            #line hidden

            #line 156 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(arrayIdxSuffix));

            #line default
            #line hidden
                        this.Write(" << \" \";");

            #line 156 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        break;
                    }
                    for (int i = 0; i < m.Array; ++i)
                    {
                        this.PopIndent();


            #line default
            #line hidden
                        this.Write("\r\n                    }");

            #line 164 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    }


            #line default
            #line hidden
                    this.Write("\r\n                }");

            #line 168 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                }


            #line default
            #line hidden
                this.Write("\r\n            }");

            #line 172 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            }


            #line default
            #line hidden
            this.Write("\r\n        }\r\n\r\n        std::string Serializer::SerializeSetup(");

            #line 178 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 178 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
            this.Write("& playerSetup, ");

            #line 178 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, ");

            #line 178 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
            this.Write(@"& playerState)
        {
            std::stringstream buffer;
            gameSetupId.Clear();
            buffer << playerSetup.id << '\n';
            SerializeInternal(gameSetup, buffer, gameSetupId, gameSetup, playerSetup, gameState, playerState);
            buffer << '\n';
            return buffer.str();
        }

        std::string Serializer::SerializeState(");

            #line 188 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 188 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerSetup)));

            #line default
            #line hidden
            this.Write("& playerSetup, ");

            #line 188 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, ");

            #line 188 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.PlayerState)));

            #line default
            #line hidden
            this.Write(@"& playerState)
        {
            std::stringstream buffer;
            gameStateId.Clear();
            SerializeInternal(gameState, buffer, gameStateId, gameSetup, playerSetup, gameState, playerState);
            buffer << '\n';
            return buffer.str();
        }

        bool Serializer::ExecuteOrder(const std::string& order, ");

            #line 197 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameSetup)));

            #line default
            #line hidden
            this.Write("& gameSetup, ");

            #line 197 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
            this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(CxxHelper.Definition.Config.GameState)));

            #line default
            #line hidden
            this.Write("& gameState, int currentPlayerId)\r\n        {\r\n            const char* buf = order" +
                       ".c_str();\r\n            int _methodId = ReadNext<int>(buf);\r\n            switch (" +
                       "_methodId)\r\n            {");

            #line 202 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

            foreach (GameFile f in CxxHelper.Definition.Files)
            {
                foreach (GameClass c in f.Class)
                {
                    foreach (ClassMethod m in c.Method)
                    {
            #line default
            #line hidden
                        this.Write("\r\n                case ");

            #line 211 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(m.MethodId));

            #line default
            #line hidden
                        this.Write(":\r\n                {\r\n                    ");

            #line 213 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(CxxHelper.Definition.GetBasicType(c.IdMember.Type))));

            #line default
            #line hidden
                        this.Write(" argThisId = ReadNext<");

            #line 213 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(CxxHelper.Definition.GetBasicType(c.IdMember.Type))));

            #line default
            #line hidden
                        this.Write(">(buf);\r\n                    auto argThisIt = gameStateId.");

            #line 214 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write(".find(argThisId);\r\n                    if (argThisIt == gameStateId.");

            #line 215 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write(".end())\r\n                    {\r\n                        argThisIt = gameSetupId.");

            #line 217 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write(".find(argThisId);\r\n                        if (argThisIt == gameSetupId.");

            #line 218 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write(".end())\r\n                            return false;\r\n                    }\r\n      " +
                                   "              ");

            #line 221 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(c.Name)));

            #line default
            #line hidden
                        this.Write("& argThis = *(argThisIt->second);");

            #line 221 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
                            BasicType type = CxxHelper.Definition.GetBasicType(a.Type);
                            if (type == BasicType.Class)
                            {
            #line default
            #line hidden
                                this.Write("\r\n                    ");

            #line 229 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type))));

            #line default
            #line hidden
                                this.Write(" ");

            #line 229 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_id = ReadNext<");

            #line 229 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(CxxHelper.Definition.GetBasicType(CxxHelper.Definition.Class[a.Type].IdMember.Type))));

            #line default
            #line hidden
                                this.Write(">(buf);\r\n                    auto ");

            #line 230 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_it = gameStateId.");

            #line 230 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(".find(");

            #line 230 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_id);\r\n                    if (");

            #line 231 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_it == gameStateId.");

            #line 231 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(".end())\r\n                    {\r\n                        ");

            #line 233 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_it = gameSetupId.");

            #line 233 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(".find(");

            #line 233 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_id);\r\n                        if (");

            #line 234 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_it == gameSetupId.");

            #line 234 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(".end())\r\n                            return false;\r\n                    }\r\n      " +
                                           "              ");

            #line 237 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write("& ");

            #line 237 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write(" = *(");

            #line 237 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write("_it->second);");

            #line 237 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }
                            else if (type == BasicType.Enum)
                            {
            #line default
            #line hidden
                                this.Write("\r\n                    ");

            #line 243 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(" ");

            #line 243 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write(" = ReadNext<");

            #line 243 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(a.Type)));

            #line default
            #line hidden
                                this.Write(">(buf);");

            #line 243 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }
                            else
                            {
            #line default
            #line hidden
                                this.Write("\r\n                    ");

            #line 249 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden
                                this.Write(" ");

            #line 249 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden
                                this.Write(" = ReadNext<");

            #line 249 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                                this.Write(this.ToStringHelper.ToStringWithCulture(CxxHelper.GetBasicTypeName(type)));

            #line default
            #line hidden
                                this.Write(">(buf);");

            #line 249 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            }
                        }


            #line default
            #line hidden
                        this.Write("\r\n                    return argThis.");

            #line 254 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        this.Write(this.ToStringHelper.ToStringWithCulture(Case.CamelCase.Convert(m.Name)));

            #line default
            #line hidden
                        this.Write("(gameSetup, gameSetup.player[currentPlayerId], gameState, gameState.player[curren" +
                                   "tPlayerId]");

            #line 254 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"

                        foreach (MethodParam a in m.Param)
                        {
            #line default
            #line hidden
                            this.Write(", ");

            #line 257 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                            this.Write(this.ToStringHelper.ToStringWithCulture(Case.LowerCamelCase.Convert(a.Name)));

            #line default
            #line hidden

            #line 257 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                        }


            #line default
            #line hidden
                        this.Write(");\r\n                }");

            #line 260 "D:\ugly\CodeGenerator\cxx\CxxSerializationCode.tt"
                    }
                }
            }

            #line default
            #line hidden
            this.Write("\r\n                default:\r\n                    return false;\r\n            }\r\n   " +
                       "     }\r\n    }\r\n}");
            return(this.GenerationEnvironment.ToString());
        }