Example #1
0
        // Use the fragment dirctly
        static void CodeTest()
        {
            FragmentManager cpp_writer = new FragmentManager();
            cpp_writer.AddChild( new Description() );

            DefineGuards define_guards = new DefineGuards();
            cpp_writer.AddChild( define_guards );

            Headers headers = new Headers();
            cpp_writer.AddChildTo( define_guards , headers , 0 );
            headers.AddHeader( "iostrem" ,false);
            headers.AddHeader( "<fstream>" ,false);
            headers.AddHeader( "json.hpp" , true );

            NameSpace nmspace = new NameSpace();
            cpp_writer.AddChildTo( define_guards , nmspace , 0 );
            nmspace.AddNameSpace( "demo" );

            Class cls = new Class();
            cpp_writer.AddChildTo( nmspace , cls , 1 );
            cls.AddClass( "FirstClass" ,"ParentClass");
            cls.AddAccessModifer( "public" );
            Dictionary<string , string> param_list = new Dictionary<string , string>();
            param_list.Add( "int" , "num" );
            param_list.Add( "string" , "str" );
            param_list.Add( "float" , "flt" );
            cls.AddMethod( "int" , "method1" , param_list );
            cls.AddAccessModifer( "private" );
            cls.AddMethod( "int" , "method2" , null );

            cpp_writer.GenerateAll();
        }
 public MessageRecipeParser()
 {
     fragment_root_      = new FragmentManager();
     fragment_factory_   = new FragmentFactory();
     guide_book_file_    = string.Empty;
     material_path_      = string.Empty;
     order_list_         = new List<HppFileDescrption>();
 }
Example #3
0
        // Test for using the fragments in relection way
        static void ReflectionTest()
        {
            FragmentManager cppWriter = new FragmentManager();

            FragmentFactory fragmentFactory = new FragmentFactory();

            IFragment codeDescription = fragmentFactory.Creat( "CodeGenerator.Description" );
            cppWriter.AddChild( codeDescription );

            IFragment defineGuards = fragmentFactory.Creat( "CodeGenerator.DefineGuards" );
            MethodInfo tempMethod = defineGuards.GetType().GetMethod( "AddGuardMark" );
            List<object> lis = new List<object>();
            lis.Add( "SOME_HPP_" );
            tempMethod.Invoke( defineGuards , lis.ToArray() );
            cppWriter.AddChild( defineGuards );

            IFragment headers = fragmentFactory.Creat( "CodeGenerator.Headers" );
            MethodInfo addHeader = headers.GetType().GetMethod( "AddHeader" );
            List<object> headername = new List<object>();
            headername.Add( "<iostream>" );
            headername.Add( false );
            addHeader.Invoke( headers , headername.ToArray() );
            headername.Clear();
            headername.Add( "fstream" );
            headername.Add( false );
            addHeader.Invoke( headers , headername.ToArray() );
            headername.Clear();
            headername.Add( "json.hpp" );
            headername.Add( true );
            addHeader.Invoke( headers , headername.ToArray() );
            headername.Clear();
            cppWriter.AddChildTo( defineGuards , headers , 0 );

            IFragment NameSpace = fragmentFactory.Creat( "CodeGenerator.NameSpace" );
            MethodInfo addNS = NameSpace.GetType().GetMethod( "AddNameSpace" );
            lis.Clear();
            lis.Add( "maratonprotocol" );
            addNS.Invoke( NameSpace , lis.ToArray() );
            cppWriter.AddChildTo( defineGuards , NameSpace , 0 );

            IFragment ClassName = fragmentFactory.Creat( "CodeGenerator.Class" );
            MethodInfo addClass = ClassName.GetType().GetMethod( "AddClass" );
            lis.Clear();
            lis.Add( "MessageXXX" );
            lis.Add( "Message" );
            addClass.Invoke( ClassName , lis.ToArray() );
            cppWriter.AddChildTo( NameSpace , ClassName , 1 );
            cppWriter.GenerateAll();
        }