コード例 #1
0
ファイル: client.cs プロジェクト: tian1ll1/WPF_Examples
        static void GenerateVBCodeForService(Uri metadataAddress, string outputFile)
        {
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress, MetadataExchangeClientMode.HttpGet);
              mexClient.ResolveMetadataReferences = true;
              MetadataSet metaDocs = mexClient.GetMetadata();

              WsdlImporter importer = new WsdlImporter(metaDocs);
              ServiceContractGenerator generator = new ServiceContractGenerator();

              System.Collections.ObjectModel.Collection<ContractDescription> contracts = importer.ImportAllContracts();
              foreach (ContractDescription contract in contracts)
              {
            generator.GenerateServiceContractType(contract);
              }
              if (generator.Errors.Count != 0)
            throw new ApplicationException("There were errors during code compilation.");

              // Write the code dom.
              System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
              options.BracingStyle = "C";
              System.CodeDom.Compiler.CodeDomProvider codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("VB");
              System.CodeDom.Compiler.IndentedTextWriter textWriter = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
              codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
              textWriter.Close();
        }
コード例 #2
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("continue;");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("Continue For");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #3
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             if (_csStatement != null)
                 using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                 {
                     System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                     using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                     {
                         provider.GenerateCodeFromStatement(_csStatement, tw, opts);
                         Value = tw.InnerWriter.ToString();
                     }
                 }
             break;
         case CodeDomGenerator.Language.VB:
             if (_vbStatement != null)
                 using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                 {
                     System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                     using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                     {
                         provider.GenerateCodeFromStatement(_vbStatement, tw, opts);
                         Value = tw.InnerWriter.ToString();
                     }
                 }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #4
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("var {0} = ", provider.CreateEscapedIdentifier(VariableName));
                     provider.GenerateCodeFromExpression(InitExpression, tw, opts);
                     tw.Write(";");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("Dim {0} = ", provider.CreateEscapedIdentifier(VariableName));
                     provider.GenerateCodeFromExpression(InitExpression, tw, opts);
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #5
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
                case CodeDomGenerator.Language.CSharp:
                    using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {

                            tw.WriteLine("do");
                            tw.WriteLine("{");
                            tw.Indent++;
                            if (Statements != null)
                                foreach (CodeStatement statement in Statements)
                                {
                                    provider.GenerateCodeFromStatement(statement, tw, opts);
                                }
                            tw.Indent--;
                            tw.Write("} while (");
                            if (TestExpression != null)
                                provider.GenerateCodeFromExpression(TestExpression, tw, opts);
                            tw.WriteLine(");");

                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                case CodeDomGenerator.Language.VB:
                    using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            tw.WriteLine("Do");
                            tw.Indent++;
                            if (Statements != null)
                                foreach (CodeStatement statement in Statements)
                                {
                                    provider.GenerateCodeFromStatement(statement, tw, opts);
                                }
                            tw.Indent--;
                            tw.Write("Loop Until ");
                            if (TestExpression != null)
                                provider.GenerateCodeFromExpression(TestExpression, tw, opts);
                            tw.WriteLine();

                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                default:
                    throw new NotImplementedException(language.ToString());
            }
        }
コード例 #6
0
        public void WriteAsYAML(System.CodeDom.Compiler.IndentedTextWriter TW, bool showConstraints, bool showVariables)
        {
            TW.WriteLine("state_id: {0}", this.Id);
            TW.Write("status:");
            if (Finished())
            {
                // Nested dictionary
                TW.Indent += 1;
                TW.WriteLine("");
                TW.WriteLine("message: \"{0}\"", this.TerminationType.GetMessage());

                var exitLoc = this.TerminationType.ExitLocation;
                TW.WriteLine("line_num: {0}", exitLoc.LineNumber);
                TW.WriteLine("termination_type: \"{0}\"", this.TerminationType.GetType().ToString());
                TW.Indent -= 1;
            }
            else
            {
                TW.WriteLine(" \"running\"");
            }

            TW.Write("created_at:");
            if (CreatedAt == null)
            {
                TW.WriteLine(" null");
            }
            else
            {
                TW.Indent += 1;
                TW.WriteLine("");
                TW.WriteLine("line_num: {0}", CreatedAt.LineNumber);
                // FIXME: The line should be escaped to be YAML compatible
                TW.WriteLine("line: \"{0}\"", CreatedAt.Line);
                TW.Indent -= 1;
            }

            TW.WriteLine("explicit_branch_depth: {0}", this.ExplicitBranchDepth.ToString().ToLower());
            TW.WriteLine("speculative: {0}", this.Speculative.ToString().ToLower());

            // write memory
            TW.WriteLine("memory:");
            TW.Indent += 1;
            Mem.WriteAsYAML(TW, showVariables);
            TW.Indent -= 1;

            // Write constraints
            TW.WriteLine("constraints:");
            TW.Indent += 1;
            Constraints.WriteAsYAML(TW, showConstraints);
            TW.Indent -= 1;
        }
コード例 #7
0
ファイル: Default.cs プロジェクト: outrera/game-creator
        internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, GmlFormatter formatter, bool semicolon)
        {
            var indent = writer.Indent;

            if (indent != 0)
            {
                writer.Indent--;
            }
            writer.WriteLine("default:");
            if (indent != 0)
            {
                writer.Indent++;
            }
        }
コード例 #8
0
        public override string ToString()
        {
            string result;

            using (var SW = new StringWriter())
            {
                using (var ITW = new System.CodeDom.Compiler.IndentedTextWriter(SW))
                {
                    WriteAsYAML(ITW);
                }
                result = SW.ToString();
            }
            return(result);
        }
コード例 #9
0
 internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, JsFormatter formatter)
 {
     writer.Write("if");
     writer.Write(formatter.Padding + "(");
     Condition.Write(writer, formatter);
     writer.Write(")" + formatter.Padding);
     Action.Write(writer, formatter);
     if (Else != null)
     {
         writer.Write("else");
         writer.Write(Else is JsBlock ? formatter.Padding : " ");
         Else.Write(writer, formatter);
     }
 }
コード例 #10
0
 internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, GmlFormatter formatter, bool semicolon)
 {
     writer.Write(string.Concat("switch", formatter.Padding, "("));
     Expression.Write(writer, formatter);
     writer.WriteLine(")");
     writer.WriteLine("{");
     writer.Indent++;
     foreach (var stmt in Statements)
     {
         stmt.Write(writer, formatter);
     }
     writer.Indent--;
     writer.WriteLine("}");
 }
コード例 #11
0
        static void Main()
        {
            string outputFile = "c:\\temp\\test";

            //<Snippet0>
            EndpointAddress mexAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/service/mex");
            //</Snippet0>

            //<Snippet1>
            MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaSet = mexClient.GetMetadata();
            //</Snippet1>

            //<Snippet2>
            WsdlImporter importer = new WsdlImporter(metaSet);

            System.Collections.ObjectModel.Collection <ContractDescription> contracts = importer.ImportAllContracts();
            //</Snippet2>

            //<Snippet3>
            ServiceContractGenerator generator = new ServiceContractGenerator();

            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }

            if (generator.Errors.Count != 0)
            {
                throw new Exception("There were errors during code compilation.");
            }
            //</Snippet3>

            // Write the code dom
            //<Snippet4>
            System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider    codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
            System.CodeDom.Compiler.IndentedTextWriter textWriter      = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
            textWriter.Close();
            //</Snippet4>

            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }
コード例 #12
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
            case CodeDomGenerator.Language.CSharp:
                using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        if (!_eq)
                        {
                            tw.Write("!");
                        }
                        tw.Write("ReferenceEquals(");
                        provider.GenerateCodeFromExpression(_left, tw, opts);
                        tw.Write(", ");
                        provider.GenerateCodeFromExpression(_right, tw, opts);
                        tw.Write(")");
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            case CodeDomGenerator.Language.VB:
                using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(_left, tw, opts);
                        if (_eq)
                        {
                            tw.Write(" Is ");
                        }
                        else
                        {
                            tw.Write(" IsNot ");
                        }
                        provider.GenerateCodeFromExpression(_right, tw, opts);
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            default:
                throw new NotImplementedException(language.ToString());
            }
        }
コード例 #13
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("new ");
                     provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(TypeReference.ArrayElementType), tw, opts);
                     tw.Write("[");
                     for (int i = 0; i < Dimensions.Count; i++)
                     {
                         if (i > 0)
                             tw.Write(",");
                         provider.GenerateCodeFromExpression(Dimensions[i], tw, opts);
                     }
                     tw.Write("]");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("(");
                     for (int i = 0; i < Dimensions.Count; i++)
                     {
                         if (i > 0)
                             tw.Write(",");
                         tw.Write("(");
                         provider.GenerateCodeFromExpression(Dimensions[i], tw, opts);
                         tw.Write(")-1");
                     }
                     tw.Write(") as ");
                     provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(TypeReference), tw, opts);
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #14
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("Gender=");
     writer.Write(this.Gender);
     writer.Write(",");
     writer.Write("Day=");
     writer.Write(this.Day);
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #15
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("FirstName=");
     writer.Write(this.FirstName);
     writer.Write(",");
     writer.Write("LastName=");
     writer.Write(this.LastName);
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #16
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("Name=");
     writer.Write(this.Name);
     writer.Write(",");
     writer.Write("CardNumber=");
     writer.Write(this.CardNumber);
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #17
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("FullName=");
     writer.Write(this.FullName);
     writer.Write(",");
     writer.Write("DateOfBirth=");
     writer.Write(this.DateOfBirth);
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #18
0
ファイル: While.cs プロジェクト: outrera/game-creator
 internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, GmlFormatter formatter, bool semicolon)
 {
     writer.Write(string.Concat("while", formatter.Padding, "("));
     Expression.Write(writer, formatter);
     writer.WriteLine(")");
     if (Body.Kind != StatementKind.Sequence)
     {
         writer.Indent++;
     }
     Body.Write(writer, formatter);
     if (Body.Kind != StatementKind.Sequence)
     {
         writer.Indent--;
     }
 }
コード例 #19
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("Password="******",");
     writer.Write("UserName="******",");
     writer.Write("SecurityStamp=");
     writer.Write(this.SecurityStamp);
     writer.Write(",");
     writer.Write("Roles=");
     if ((this._roles != null))
     {
         ((CodeFluent.Runtime.ICodeFluentObject)(this._roles)).Trace(writer);
     }
     else
     {
         writer.Write("<null>");
     }
     writer.Write(",");
     writer.Write("ExternalLogins=");
     if ((this._externalLogins != null))
     {
         ((CodeFluent.Runtime.ICodeFluentObject)(this._externalLogins)).Trace(writer);
     }
     else
     {
         writer.Write("<null>");
     }
     writer.Write(",");
     writer.Write("Claims=");
     if ((this._claims != null))
     {
         ((CodeFluent.Runtime.ICodeFluentObject)(this._claims)).Trace(writer);
     }
     else
     {
         writer.Write("<null>");
     }
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #20
0
        static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
        {
            MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);

            mexClient.ResolveMetadataReferences = true;
            MetadataSet metaDocs = mexClient.GetMetadata();

            WsdlImporter             importer  = new WsdlImporter(metaDocs);
            ServiceContractGenerator generator = new ServiceContractGenerator();

            // Uncomment the following code if you are going to do your work programmatically rather than add
            // the WsdlDocumentationImporters through a configuration file.

            /*
             * // The following code inserts the custom WSDL programmatically adding the custom WsdlImporter without
             * // removing the other importers already in the collection.
             * System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlExtensions;
             * System.Collections.Generic.List<IWsdlImportExtension> newExts = new System.Collections.Generic.List<IWsdlImportExtension>();
             * foreach (IWsdlImportExtension ext in exts)
             * newExts.Add(ext);
             * newExts.Add(new WsdlDocumentationImporter());
             * importer = new WsdlImporter(newExts.ToArray(), metaDocs.MetadataSections);
             */

            System.Collections.ObjectModel.Collection <ContractDescription> contracts
                = importer.ImportAllContracts();
            foreach (ContractDescription contract in contracts)
            {
                generator.GenerateServiceContractType(contract);
            }
            if (generator.Errors.Count != 0)
            {
                throw new ApplicationException("There were errors during code compilation.");
            }

            // Write the code dom
            System.CodeDom.Compiler.CodeGeneratorOptions options
                = new System.CodeDom.Compiler.CodeGeneratorOptions();
            options.BracingStyle = "C";
            System.CodeDom.Compiler.CodeDomProvider codeDomProvider
                = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
            System.CodeDom.Compiler.IndentedTextWriter textWriter
                = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
            codeDomProvider.GenerateCodeFromCompileUnit(
                generator.TargetCompileUnit, textWriter, options
                );
            textWriter.Close();
        }
コード例 #21
0
ファイル: Memory.cs プロジェクト: ccadar/symbooglix
        public void WriteAsYAML(System.CodeDom.Compiler.IndentedTextWriter TW, bool showVariables)
        {
            TW.WriteLine("procedure: \"{0}\"", IsDummy? Proc.Name : Impl.Name);

            if (!IsDummy)
            {
                TW.WriteLine("current_block: \"{0}\"", CurrentBlock);
                TW.Write("current_instruction:");

                if (CurrentInstruction.Current != null)
                {
                    TW.WriteLine("");
                    TW.Indent += 1;
                    // Should we mention the filename too?
                    TW.WriteLine("line: {0}", CurrentInstruction.Current.tok.line);
                    TW.WriteLine("instruction: \"{0}\"", CurrentInstruction.Current.ToString().TrimEnd('\n'));
                    TW.Indent -= 1;
                }
                else
                {
                    TW.WriteLine(" null");
                }
            }

            TW.WriteLine("num_locals: {0}", Locals.Count);
            if (showVariables)
            {
                TW.WriteLine("locals:");

                TW.Indent += 1;
                if (Locals.Count == 0)
                {
                    TW.WriteLine("{}");
                }
                else
                {
                    foreach (var pair in Locals)
                    {
                        TW.WriteLine("\"{0}\":", pair.Key.ToString());
                        TW.Indent += 1;
                        TW.WriteLine("type: \"{0}\"", pair.Key.TypedIdent.Type);
                        TW.WriteLine("expr: \"{0}\"", pair.Value);
                        TW.Indent -= 1;
                    }
                }
                TW.Indent -= 1;
            }
        }
コード例 #22
0
        public static void FileOpen(System.CodeDom.Compiler.IndentedTextWriter inWriter,
                                    string import,
                                    string fileName,
                                    string genDateTime)
        {
            inWriter.WriteLine("using System;");
            foreach (string s in import.Split(','))
            {
                inWriter.WriteLine("using " + s.Trim() + ";");
            }

            inWriter.WriteLine("/// <summary>");
            inWriter.WriteLine("/// " + System.IO.Path.GetFileName(fileName));
            inWriter.WriteLine("/// Last Generated on Date: " + genDateTime);
            inWriter.WriteLine("/// </summary>");
        }
コード例 #23
0
        internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, GmlFormatter formatter, bool semicolon)
        {
            var indent = writer.Indent;

            if (indent != 0)
            {
                writer.Indent--;
            }
            writer.Write("case ");
            Expression.Write(writer, formatter);
            writer.WriteLine(":");
            if (indent != 0)
            {
                writer.Indent++;
            }
        }
コード例 #24
0
 protected override void RefreshValue()
 {
     using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
     {
         System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
         using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
         {
             tw.Write("(");
             provider.GenerateCodeFromExpression(Expression, tw, opts);
             tw.Write(" is ");
             provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(TypeReference), tw, opts);
             tw.Write(")");
             Value = tw.InnerWriter.ToString();
         }
     }
 }
コード例 #25
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            if (_left == null)
            {
                return;
            }

            switch (language)
            {
            case CodeDomGenerator.Language.CSharp:
                using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(_left, tw, opts);
                        if (_right != null)
                        {
                            tw.Write(_separator);
                            provider.GenerateCodeFromExpression(_right, tw, opts);
                        }
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            case CodeDomGenerator.Language.VB:
                using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(_left, tw, opts);
                        if (_right != null)
                        {
                            tw.Write(_separator);
                            provider.GenerateCodeFromExpression(_right, tw, opts);
                        }
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            default:
                throw new NotImplementedException(language.ToString());
            }
        }
コード例 #26
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
            case CodeDomGenerator.Language.CSharp:
                using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(Parameter, tw, opts);
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            case CodeDomGenerator.Language.VB:
                using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    StringBuilder sb = new StringBuilder();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(sb), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(Parameter, tw, opts);
                        switch (Option)
                        {
                        case ParamOption.Optional:
                            sb.Replace("ByVal " + Parameter.Name, "Optional ByVal " + Parameter.Name);
                            break;

                        case ParamOption.ParamArray:
                            sb.Replace("ByVal " + Parameter.Name, "ByVal ParamArray " + Parameter.Name);
                            break;

                        default:
                            throw new NotSupportedException(Option.ToString());
                        }
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            default:
                throw new NotImplementedException(language.ToString());
            }
        }
コード例 #27
0
            public void WriteAsYAML(System.CodeDom.Compiler.IndentedTextWriter TW)
            {
                double total   = (ConstraintSetsReduced + ConstraintSetsLeftUnchanged);
                double reduceP = 100 * ((float)ConstraintSetsReduced) / total;
                double sameP   = 100 * ((float)ConstraintSetsLeftUnchanged) / total;


                TW.WriteLine("{0}:", this.GetType().ToString());
                TW.Indent += 1;
                TW.WriteLine("constraint_sets_reduced: {0} #({1}%)", ConstraintSetsReduced, reduceP);
                TW.WriteLine("constraint_sets_left_unchanged: {0} #({1}%)", ConstraintSetsLeftUnchanged, sameP);
                TW.WriteLine("constraint_set_reduction_time: {0}", TimeUsedToComputeReducedConstraintSet.TotalSeconds);
                TW.WriteLine("underlying_solver:");
                TW.Indent += 1;
                UnderlyingSolverStats.WriteAsYAML(TW);
                TW.Indent -= 2;
            }
コード例 #28
0
 protected virtual void BaseTrace(System.CodeDom.Compiler.IndentedTextWriter writer)
 {
     writer.Write("[");
     writer.Write("Id=");
     writer.Write(this.Id);
     writer.Write(",");
     writer.Write("Line1=");
     writer.Write(this.Line1);
     writer.Write(",");
     writer.Write("Line2=");
     writer.Write(this.Line2);
     writer.Write(",");
     writer.Write("City=");
     writer.Write(this.City);
     writer.Write(",");
     writer.Write("Zip=");
     writer.Write(this.Zip);
     writer.Write(",");
     writer.Write("Country=");
     writer.Write(this.Country);
     writer.Write(",");
     writer.Write("Contact=");
     if ((this._contact != null))
     {
         ((CodeFluent.Runtime.Diagnostics.ITraceable)(this._contact)).Trace(writer);
     }
     else
     {
         writer.Write("<null>");
     }
     writer.Write(",");
     writer.Write("_contactId=");
     writer.Write(this._contactId);
     writer.Write(",");
     writer.Write("GoogleMapUrl=");
     writer.Write(this.GoogleMapUrl);
     writer.Write(",");
     writer.Write("LiveMapUrl=");
     writer.Write(this.LiveMapUrl);
     writer.Write(", EntityState=");
     writer.Write(this.EntityState);
     writer.Write("]");
 }
コード例 #29
0
 internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, JsFormatter formatter)
 {
     writer.Write("function");
     if (!string.IsNullOrEmpty(Name))
     {
         writer.Write(string.Concat(" ", Name));
     }
     writer.Write(formatter.Padding + "(");
     writer.Write(string.Join("," + formatter.Padding, Parameters));
     writer.Write(")" + formatter.Padding);
     writer.WriteLine("{");
     writer.Indent++;
     foreach (var js in Body)
     {
         js.Write(writer, formatter);
     }
     writer.Indent--;
     writer.Write("}");
 }
コード例 #30
0
        public void XmlDocumentLoading()
        {
            string xml = "<customer id='1' pp:id='aba' xmlns='urn-kzu' xmlns:pp='urn-pepenamespace'><pp:order /><order id='1'>Chocolates</order></customer>";

            XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator();

            XmlReader reader = new XPathNavigatorReader(nav);

            //XmlReader reader = new XmlTextReader(new StringReader(xml));

            //reader.MoveToContent();
            //Console.WriteLine(reader.ReadOuterXml());

            System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(Console.Out);

            while (reader.Read())
            {
                tw.Indent = reader.Depth;
                tw.WriteLine("Name={0}, Type={1}", reader.Name, reader.NodeType);
                int count = reader.AttributeCount;
                //reader.MoveToFirstAttribute();
                //for (int i = 0; i < count; i++)
                while (reader.MoveToNextAttribute())
                {
                    tw.Indent = reader.Depth;
                    tw.Write("{0}=", reader.Name);
                    reader.ReadAttributeValue();
                    tw.WriteLine(reader.Value);
                    //reader.MoveToNextAttribute();
                }
            }

            //reader = new DebuggingXmlTextReader(new XPathNavigatorReader(nav));
            reader = new XPathNavigatorReader(nav);
            XmlDocument doc = new XmlDocument(nav.NameTable);

            doc.Load(reader);

            Assert.AreEqual("customer", doc.DocumentElement.LocalName);
            Assert.AreEqual("urn-kzu", doc.DocumentElement.NamespaceURI);
            Assert.AreEqual(4, doc.DocumentElement.Attributes.Count);
            Assert.AreEqual(2, doc.DocumentElement.ChildNodes.Count);
        }
コード例 #31
0
ファイル: For.cs プロジェクト: outrera/game-creator
 internal override void Write(System.CodeDom.Compiler.IndentedTextWriter writer, GmlFormatter formatter, bool semicolon)
 {
     writer.Write(string.Concat("for", formatter.Padding, "("));
     Initializer.Write(writer, formatter, false);
     writer.Write(";" + formatter.Padding);
     Test.Write(writer, formatter);
     writer.Write(";" + formatter.Padding);
     Iterator.Write(writer, formatter, false);
     writer.WriteLine(")");
     if (Body.Kind != StatementKind.Sequence)
     {
         writer.Indent++;
     }
     Body.Write(writer, formatter);
     if (Body.Kind != StatementKind.Sequence)
     {
         writer.Indent--;
     }
 }
コード例 #32
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     if (!_eq)
                     {
                         tw.Write("!");
                     }
                     tw.Write("ReferenceEquals(");
                     provider.GenerateCodeFromExpression(_left, tw, opts);
                     tw.Write(", ");
                     provider.GenerateCodeFromExpression(_right, tw, opts);
                     tw.Write(")");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     provider.GenerateCodeFromExpression(_left, tw, opts);
                     if (_eq)
                         tw.Write(" Is ");
                     else
                         tw.Write(" IsNot ");
                     provider.GenerateCodeFromExpression(_right, tw, opts);
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #33
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
            case CodeDomGenerator.Language.CSharp:
                using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        provider.GenerateCodeFromExpression(_condition, tw, opts);
                        tw.Write("?");
                        provider.GenerateCodeFromExpression(_truePart, tw, opts);
                        tw.Write(":");
                        provider.GenerateCodeFromExpression(_falsePart, tw, opts);
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            case CodeDomGenerator.Language.VB:
                using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                {
                    System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                    using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                    {
                        tw.Write("If(");
                        provider.GenerateCodeFromExpression(_condition, tw, opts);
                        tw.Write(",");
                        provider.GenerateCodeFromExpression(_truePart, tw, opts);
                        tw.Write(",");
                        provider.GenerateCodeFromExpression(_falsePart, tw, opts);
                        tw.Write(")");
                        Value = tw.InnerWriter.ToString();
                    }
                }
                break;

            default:
                throw new NotImplementedException(language.ToString());
            }
        }
コード例 #34
0
ファイル: Memory.cs プロジェクト: ccadar/symbooglix
        public void WriteAsYAML(System.CodeDom.Compiler.IndentedTextWriter TW, bool showVariables)
        {
            // Globals
            TW.WriteLine("num_globals: {0}", Globals.Count);
            if (showVariables)
            {
                TW.WriteLine("globals:");
                TW.Indent += 1;
                if (Globals.Count == 0)
                {
                    TW.WriteLine("{}"); // Emtpy dictionary
                }
                else
                {
                    foreach (var pair in Globals)
                    {
                        TW.WriteLine("\"{0}\":", pair.Key.ToString());
                        TW.Indent += 1;
                        TW.WriteLine("type: \"{0}\"", pair.Key.TypedIdent.Type);
                        TW.WriteLine("expr: \"{0}\"", pair.Value);
                        TW.Indent -= 1;
                    }
                }
                TW.Indent -= 1;
            }

            // Stackframe
            int depth = Stack.Count;

            TW.WriteLine("stack_depth: {0}", depth);
            TW.WriteLine("stack:");
            TW.Indent += 1;

            for (int index = depth - 1; index >= 0; --index)
            {
                TW.WriteLine("-");
                TW.Indent += 1;
                Stack[index].WriteAsYAML(TW, showVariables);
                TW.Indent -= 1;
            }
            TW.Indent -= 1;
        }
コード例 #35
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     provider.GenerateCodeFromExpression(Parameter, tw, opts);
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 StringBuilder sb = new StringBuilder();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(sb), opts.IndentString))
                 {
                     provider.GenerateCodeFromExpression(Parameter, tw, opts);
                     switch (Option)
                     {
                         case ParamOption.Optional:
                             sb.Replace("ByVal " + Parameter.Name, "Optional ByVal " + Parameter.Name);
                             break;
                         case ParamOption.ParamArray:
                             sb.Replace("ByVal " + Parameter.Name, "ByVal ParamArray " + Parameter.Name);
                             break;
                         default:
                             throw new NotSupportedException(Option.ToString());
                     }
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #36
0
        public static void GenerateViaCodeDOM(string outputFileName,
                                              System.CodeDom.Compiler.CodeDomProvider provider,
                                              System.CodeDom.CodeCompileUnit compileunit)
        {
            System.CodeDom.Compiler.ICodeGenerator     gen = provider.CreateGenerator();
            System.CodeDom.Compiler.IndentedTextWriter tw;

            try
            {
                tw = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFileName, false), "    ");
                gen.GenerateCodeFromCompileUnit(compileunit, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
                tw.Flush();
                tw.Close();
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                throw;
            }
        }
コード例 #37
0
        public static System.IO.Stream GenerateViaCodeDOM(Utility.OutputType outputType, System.CodeDom.CodeCompileUnit compileunit)
        {
            System.CodeDom.Compiler.CodeDomProvider    provider = null;
            System.CodeDom.Compiler.ICodeGenerator     gen;
            System.CodeDom.Compiler.IndentedTextWriter tw = null;
            System.IO.MemoryStream stream;
            System.IO.StreamWriter writer;

            switch (outputType)
            {
            case Utility.OutputType.VB:
                provider = new Microsoft.VisualBasic.VBCodeProvider();
                break;

            case Utility.OutputType.CSharp:
                provider = new Microsoft.CSharp.CSharpCodeProvider();
                break;
            }
            gen = provider.CreateGenerator();

            try
            {
                stream = new System.IO.MemoryStream();
                writer = new System.IO.StreamWriter(stream);
                tw     = new System.CodeDom.Compiler.IndentedTextWriter(writer, "   ");
                gen.GenerateCodeFromCompileUnit(compileunit, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
                tw.Flush();
                stream.Seek(0, System.IO.SeekOrigin.Begin);
            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex);
                if (tw != null)
                {
                    tw.Flush();
                    tw.Close();
                }
                throw;
            }
            return(stream);
        }
コード例 #38
0
        private static void ColumnMethods(System.CodeDom.Compiler.IndentedTextWriter inWriter,
                                          System.Xml.XmlNamespaceManager nsmgr,
                                          System.Xml.XmlNode node)
        {
            string netTypeName = Utility.Tools.GetAttributeOrEmpty(node, "NETType");
            string name        = Utility.Tools.GetAttributeOrEmpty(node, "Name");

            if (netTypeName.Trim().Length == 0)
            {
                inWriter.WriteLine("");
                inWriter.WriteLine("// Column " + name + " is not included because it uses");
                inWriter.WriteLine("// a SQLType (" + netTypeName + ") that is not yet supported");
                inWriter.WriteLine("");
            }
            else
            {
                inWriter.WriteLine("public ColumnInfo " + name + "()");
                Support.WriteLineAndIndent(inWriter, "{");
                inWriter.WriteLine("ColumnInfo columnInfo = new ColumnInfo");
                inWriter.WriteLine("columnInfo.FieldName = " + Support.DQ + name + Support.DQ);
                inWriter.WriteLine("columnInfo.FieldType = GetType(" + netTypeName + ")");
                inWriter.WriteLine("columnInfo.SQLType = " + Support.DQ + Utility.Tools.GetAttributeOrEmpty(node, "SQLType") + Support.DQ);
                inWriter.WriteLine("columnInfo.Caption = " + Support.DQ + Utility.Tools.GetAttributeOrEmpty(node, "Caption") + Support.DQ);
                inWriter.WriteLine("columnInfo.Desc = " + Support.DQ + Utility.Tools.GetAttributeOrEmpty(node, "Desc") + Support.DQ);
                inWriter.WriteLine("return columnInfo");
                Support.WriteLineAndOutdent(inWriter, "}");

                inWriter.WriteLine("");
                inWriter.WriteLine("public " + netTypeName + " " + name);
                Support.WriteLineAndIndent(inWriter, "{");
                inWriter.WriteLine("get");
                Support.WriteLineAndIndent(inWriter, "{");
                inWriter.WriteLine("return m" + name + ";");
                Support.WriteLineAndOutdent(inWriter, "}");
                inWriter.WriteLine("set");
                Support.WriteLineAndIndent(inWriter, "{");
                inWriter.WriteLine("m" + name + " = value;");
                Support.WriteLineAndOutdent(inWriter, "}");
                Support.WriteLineAndOutdent(inWriter, "}");
            }
        }
コード例 #39
0
 public void GenerateCode(CodeDomGenerator.Language language)
 {
     switch (language)
     {
         case CodeDomGenerator.Language.CSharp:
             using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     provider.GenerateCodeFromExpression(_condition, tw, opts);
                     tw.Write("?");
                     provider.GenerateCodeFromExpression(_truePart, tw, opts);
                     tw.Write(":");
                     provider.GenerateCodeFromExpression(_falsePart, tw, opts);
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         case CodeDomGenerator.Language.VB:
             using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
             {
                 System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                 using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                 {
                     tw.Write("If(");
                     provider.GenerateCodeFromExpression(_condition, tw, opts);
                     tw.Write(",");
                     provider.GenerateCodeFromExpression(_truePart, tw, opts);
                     tw.Write(",");
                     provider.GenerateCodeFromExpression(_falsePart, tw, opts);
                     tw.Write(")");
                     Value = tw.InnerWriter.ToString();
                 }
             }
             break;
         default:
             throw new NotImplementedException(language.ToString());
     }
 }
コード例 #40
0
ファイル: Block.cs プロジェクト: KevinKelley/katahdin
 public void Dump()
 {
     System.CodeDom.Compiler.IndentedTextWriter indent = new System.CodeDom.Compiler.IndentedTextWriter(Console.Out);
     
     indent.WriteLine("--------");
     
     foreach (IBlockLine line in (IEnumerable<IBlockLine>) lines)
     {
         if ((line is BlockInstruction) && ((BlockInstruction) line).Operation == BlockOperation.BeginScope)
             indent.Indent++;
         
         indent.WriteLine(line);
         
         if ((line is BlockInstruction) && ((BlockInstruction) line).Operation == BlockOperation.EndScope)
             indent.Indent--;
     }
 }
コード例 #41
0
ファイル: client.cs プロジェクト: ssickles/archive
        static void GenerateVBCodeForService(EndpointAddress metadataAddress, string outputFile)
        {
          MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);
          mexClient.ResolveMetadataReferences = true;
          MetadataSet metaDocs = mexClient.GetMetadata();

          WsdlImporter importer = new WsdlImporter(metaDocs);
          ServiceContractGenerator generator = new ServiceContractGenerator();

          // Uncomment the following code if you are going to do your work programmatically rather than add 
          // the WsdlDocumentationImporters through a configuration file. 
          /*
          // The following code inserts the custom WSDL programmatically adding the custom WsdlImporter without
          // removing the other importers already in the collection.
          System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlExtensions;
          System.Collections.Generic.List<IWsdlImportExtension> newExts = new System.Collections.Generic.List<IWsdlImportExtension>();
          foreach (IWsdlImportExtension ext in exts)
            newExts.Add(ext);
          newExts.Add(new WsdlDocumentationImporter());
          importer = new WsdlImporter(newExts.ToArray(), metaDocs.MetadataSections);
          */

          System.Collections.ObjectModel.Collection<ContractDescription> contracts = importer.ImportAllContracts();
          foreach (ContractDescription contract in contracts)
          {
            generator.GenerateServiceContractType(contract);
          }
          if (generator.Errors.Count != 0)
            throw new ApplicationException("There were errors during code compilation.");

          // Write the code dom.
          System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
          options.BracingStyle = "C";
          System.CodeDom.Compiler.CodeDomProvider codeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("VB");
          System.CodeDom.Compiler.IndentedTextWriter textWriter = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
          codeDomProvider.GenerateCodeFromCompileUnit(generator.TargetCompileUnit, textWriter, options);
          textWriter.Close();
        }
コード例 #42
0
 /// <summary>
 /// Persists the artifact in a single file
 /// </summary>
 /// <param name="artifact"></param>
 /// <param name="productionContext"></param>
 private void PersistSingleFile(GeneratedArtifact artifact, ProductionContext productionContext)
 {
     string filePath = resolveTemplate(artifact.GroupFilePathTemplate, productionContext);
     Writer = Services.IOService.OpenIndentedTextWrite(filePath);
     // write begin file
     ArtifactBegin();
     // write autogenerated infos
     AutogeneratedInfoBegin();
     artifact.WriteAutogeneratedInfosTo(Writer);
     AutogeneratedInfoEnd();
     // write artifact imports
     List<string> writtenImports = new List<string>();
     artifact.WriteImportsTo(Writer, writtenImports);
     foreach (ArtifactDataItem  artifactDataItem in artifact.ArtifactDataItems)
     {
         artifactDataItem.WriteImportsTo(Writer, writtenImports);
     }
     string ns = null;
     int baseIndent = 0;
     // namespace can be null if not required by target technology
     if (!string.IsNullOrEmpty(artifact.NamespaceTemplate))
     {
         // open namespace
         ns = resolveTemplate(artifact.NamespaceTemplate, productionContext);
         baseIndent = OpenNamespace(ns);
     }
     // write artifact code lines
     foreach (ArtifactDataItem artifactDataItem in artifact.ArtifactDataItems)
     {
         artifactDataItem.WriteCodeLinesTo(Writer, baseIndent);
     }
     Writer.Indent = Math.Max(0, Writer.Indent - baseIndent);
     if (ns != null)
     {
         // close namespace
         CloseNamespace(ns);
     }
     // write end file
     ArtifactEnd();
     Writer.Close();
 }
コード例 #43
0
ファイル: AST.cs プロジェクト: chenzuo/blue
 public static void DumpSourceToStream(Node n, System.IO.TextWriter t)
 {
     Console.WriteLine("*** Begin Source dump: [");
     
     System.CodeDom.Compiler.IndentedTextWriter i = new 
         System.CodeDom.Compiler.IndentedTextWriter(t, "    ");
     
             
     n.ToSource(i);
     
     Console.WriteLine("] *** End source dump");
     
     i.Close();        
     i = null;
     
 }
コード例 #44
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
                case CodeDomGenerator.Language.CSharp:
                    using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {

                            tw.Write("switch (");
                            if (SwitchExpression != null)
                                provider.GenerateCodeFromExpression(SwitchExpression, tw, opts);
                            tw.WriteLine(")");
                            tw.WriteLine("{");
                            tw.Indent++;
                            foreach (CaseBlock c in m_cases)
                            {
                                if (c.Statements != null)
                                {
                                    if (c.CaseExpression != null)
                                    {
                                        tw.Write("case ");
                                        provider.GenerateCodeFromExpression(c.CaseExpression, tw, opts);
                                        tw.WriteLine(":");
                                    }
                                    else
                                    {
                                        tw.WriteLine("default:");
                                    }

                                    tw.Indent++;
                                    foreach (CodeStatement stmt in c.Statements)
                                    {
                                        provider.GenerateCodeFromStatement(stmt, tw, opts);
                                    }
                                    tw.Indent--;
                                }
                                //else
                                //{
                                //    tw.Indent++;
                                //    tw.WriteLine("break;");
                                //    tw.Indent--;
                                //}
                            }
                            tw.Indent--;
                            tw.WriteLine("}");
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                case CodeDomGenerator.Language.VB:
                    using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            tw.Write("Select Case ");
                            if (SwitchExpression != null)
                                provider.GenerateCodeFromExpression(SwitchExpression, tw, opts);
                            tw.WriteLine();
                            tw.Indent++;
                            foreach (CaseBlock c in m_cases)
                            {
                                if (c.Statements != null)
                                {
                                    if (c.CaseExpression != null)
                                    {
                                        tw.Write("Case ");
                                        provider.GenerateCodeFromExpression(c.CaseExpression, tw, opts);
                                        tw.WriteLine();
                                    }
                                    else
                                    {
                                        tw.WriteLine("Case Else");
                                    }

                                    tw.Indent++;
                                    for (int i = 0; i < c.Statements.Length; i++)
                                    {
                                        CodeStatement stmt = c.Statements[i];
                                        if (!(stmt is CodeExitSelectStatement) || i < c.Statements.Length-1)
                                            provider.GenerateCodeFromStatement(stmt, tw, opts);
                                    }
                                    tw.Indent--;
                                }
                                //else if (i < m_cases.Count - 1)
                                //{
                                //    tw.Indent++;
                                //    tw.WriteLine("Exit Select");
                                //    tw.Indent--;
                                //}
                            }
                            tw.Indent--;
                            tw.WriteLine("End Select");
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                default:
                    throw new NotImplementedException(language.ToString());
            }
        }
コード例 #45
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
                case CodeDomGenerator.Language.CSharp:
                    using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {

                            tw.Write("foreach (");
                            provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(IterationItemType), tw, opts);
                            tw.Write(" {0} in ", provider.CreateValidIdentifier(IterationItemName));
                            provider.GenerateCodeFromExpression(IterExpression, tw, opts);
                            tw.WriteLine(")");
                            tw.WriteLine("{");
                            tw.Indent++;
                            if (Statements != null)
                                foreach (CodeStatement statement in Statements)
                                {
                                    provider.GenerateCodeFromStatement(statement, tw, opts);
                                }
                            tw.Indent--;
                            tw.WriteLine("}");
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                case CodeDomGenerator.Language.VB:
                    using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            tw.Write("For Each {0} As ", provider.CreateValidIdentifier(IterationItemName));
                            provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(IterationItemType), tw, opts);
                            tw.Write(" in ");
                            provider.GenerateCodeFromExpression(IterExpression, tw, opts);
                            tw.WriteLine();
                            tw.Indent++;
                            if (Statements != null)
                                foreach (CodeStatement statement in Statements)
                                {
                                    provider.GenerateCodeFromStatement(statement, tw, opts);
                                }
                            tw.Indent--;
                            tw.WriteLine("Next");
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                default:
                    throw new NotImplementedException(language.ToString());
            }
        }
コード例 #46
0
        /// <summary>
        /// Generate proxy to the Web service.
        /// </summary>
        /// <param name="wsdlUrl"></param>
        /// <param name="generatedSourceFilename"></param>
        /// <param name="generatedNamespace"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public bool GenerateWsdlProxyClass(string wsdlUrl, string generatedSourceFilename,
            string generatedNamespace, string username, string password)
        {
            // erase the source file
            if (File.Exists(generatedSourceFilename))
                File.Delete(generatedSourceFilename);

            // download the WSDL content into a service description
            WebClient http = new WebClient();
            System.Web.Services.Description.ServiceDescription sd = null;

            if (!string.IsNullOrEmpty(username))
                http.Credentials = new NetworkCredential(username, password);

            try
            {
                sd = System.Web.Services.Description.ServiceDescription.Read(http.OpenRead(wsdlUrl));
            }
            catch (Exception ex)
            {
                this.ErrorMessage = "Wsdl Download failed: " + ex.Message;
                return false;
            }

            // create an importer and associate with the ServiceDescription
            ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
            importer.ProtocolName = "SOAP";
            importer.CodeGenerationOptions = CodeGenerationOptions.None;
            importer.AddServiceDescription(sd, null, null);

            // Download and inject any imported schemas (ie. WCF generated WSDL)            
            foreach (XmlSchema wsdlSchema in sd.Types.Schemas)
            {
                // Loop through all detected imports in the main schema
                foreach (XmlSchemaObject externalSchema in wsdlSchema.Includes)
                {
                    // Read each external schema into a schema object and add to importer
                    if (externalSchema is XmlSchemaImport)
                    {
                        Uri baseUri = new Uri(wsdlUrl);
                        Uri schemaUri = new Uri(baseUri, ((XmlSchemaExternal)externalSchema).SchemaLocation);

                        Stream schemaStream = http.OpenRead(schemaUri);
                        System.Xml.Schema.XmlSchema schema = XmlSchema.Read(schemaStream, null);
                        importer.Schemas.Add(schema);
                    }
                }
            }

            // set up for code generation by creating a namespace and adding to importer
            CodeNamespace ns = new CodeNamespace(generatedNamespace);
            CodeCompileUnit ccu = new CodeCompileUnit();
            ccu.Namespaces.Add(ns);
            importer.Import(ns, ccu);

            // final code generation in specified language
            CSharpCodeProvider provider = new CSharpCodeProvider();
            System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StreamWriter(generatedSourceFilename));
            provider.GenerateCodeFromCompileUnit(ccu, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());

            tw.Close();

            return File.Exists(generatedSourceFilename);
        }
コード例 #47
0
        static int Main(string[] args)
        {
            if (args == null || !args.Any())
              {
            NConfiguration.NConfigurationManager.Initialize();
            Console.WriteLine(NConfiguration.NConfigurationManager.GetEnvironment());
              }
              else if (!_validSwitches.Contains(args[0]))
              {
            PrintUsage();
            return 1;
              }
              else if (args[0].StartsWith("-a"))
              {
            if (args.Length < 2)
            {
              PrintUsage();
              return 1;
            }
            NConfiguration.NConfigurationManager.Initialize();
            var key = args[1];
                Console.WriteLine(NConfiguration.NConfigurationManager.GetAppSetting(key));
              }
              else if (args[0].StartsWith("-c"))
              {
            if (args.Length < 2)
            {
              PrintUsage();
              return 1;
            }
            NConfiguration.NConfigurationManager.Initialize();
            var key = args[1];
                Console.WriteLine(NConfiguration.NConfigurationManager.GetConnectionString(key));
              }
              else if (args[0].StartsWith("-l"))
              {
            if (args.Length >= 2)
            {
            PrintUsage();
            return 1;
            }
                Console.WriteLine("Key candidates for this PC");
                var candidates = NConfiguration.NConfigurationManager.GetKeyCandidates();
                foreach(var key in candidates) {
                    Console.WriteLine("\t - {0}", key);

                }
               }
            else if (args[0].StartsWith("-e"))
            {
                if (args.Length >= 2)
                {
                    PrintUsage();
                    return 1;
                }
                NConfiguration.NConfigurationManager.Initialize();
                Console.WriteLine(NConfiguration.NConfigurationManager.GetEnvironment());
            }

              else if (args[0].StartsWith("-v"))
              {
            var validationResults = NConfiguration.NConfigurationManager.ValidateAllConfigurations();
            if (!validationResults.Any())
            {
              Console.WriteLine("All the configuration files are in sync");
              return 0;
            }

            using (var writer = new System.CodeDom.Compiler.IndentedTextWriter(Console.Error, "  "))
            {
              foreach (var validationResult in validationResults)
              {
            var color = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.Red;
            writer.WriteLine("{0} has the following misconfigurations:", validationResult.Key);
            Console.ForegroundColor = color;
            writer.Indent = 1;
            foreach (var validationMessage in validationResult.Value)
            {
              writer.WriteLine(validationMessage);
            }
            writer.Indent = 0;
              }
            }
            return 1;
              }
              return 0;
        }
コード例 #48
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            if (_left == null) return;

            switch (language)
            {
                case CodeDomGenerator.Language.CSharp:
                    using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            provider.GenerateCodeFromExpression(_left, tw, opts);
                            if (_right != null)
                            {
                                tw.Write(_separator);
                                provider.GenerateCodeFromExpression(_right, tw, opts);
                            }
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                case CodeDomGenerator.Language.VB:
                    using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            provider.GenerateCodeFromExpression(_left, tw, opts);
                            if (_right != null)
                            {
                                tw.Write(_separator);
                                provider.GenerateCodeFromExpression(_right, tw, opts);
                            }
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                default:
                    throw new NotImplementedException(language.ToString());
            }
        }
コード例 #49
0
 /// <summary>
 /// Persist each <see cref="ArtifactDataItem"/> in its own file.
 /// </summary>
 /// <param name="artifact"></param>
 /// <param name="productionContext"></param>
 private void PersistMultiFile(GeneratedArtifact artifact, ProductionContext productionContext)
 {
     foreach (ArtifactDataItem artifactDataItem in artifact.ArtifactDataItems)
     {
         // create writer
         string filePath = resolveTemplate(artifact.ItemFilePathTemplate, productionContext);
         Writer = Services.IOService.OpenIndentedTextWrite(filePath);
         // write begin file
         ArtifactBegin();
         // write autogenerated infos
         AutogeneratedInfoBegin();
         artifact.WriteAutogeneratedInfosTo(Writer);
         AutogeneratedInfoEnd();
         // write artifact imports
         List<string> writtenImports = new List<string>();
         artifact.WriteImportsTo(Writer, writtenImports);
         // write artifact item imports
         artifactDataItem.WriteImportsTo(Writer, writtenImports);
         // resolve and open namespace
         string ns = resolveTemplate(artifact.NamespaceTemplate, productionContext);
         int baseIndent = OpenNamespace(ns);
         // write artifact item code lines
         artifactDataItem.WriteCodeLinesTo(Writer, baseIndent);
         // close namespace
         CloseNamespace(ns);
         // write end file
         ArtifactEnd();
         Writer.Close();
     }
 }
コード例 #50
0
ファイル: Program.cs プロジェクト: icedream/jsonapi-client
        static void Main(string[] args)
        {
            if (!args.Any())
            {
                Console.Error.WriteLine("Needs a file as an argument");
                return;
            }

            Debug.WriteLine("Input file is \"{0}\"", args.First());

            var file = new StreamReader(args.First());
            var levelstack = new Stack<int>();

            // Parse mlst file
            List<Function> functions = new List<Function>();
            List<string> @using = new List<string>();
            @using.Add("JsonApi.Client");
            @using.Add("JsonApi.Client.Classes");
            @using.Add("JsonApi.Client.DataTypes");
            @using.Add("System");
            @using.Add("System.Collections.Generic");
            @using.Add("System.Linq");
            @using.Add("System.Text");
            string @namespace = "JsonApi.Client.Extensions";
            string @class = "CustomRequests";

            Debug.WriteLine("Default imported namespaces: {0}", @using.Count);
            Debug.WriteLine("Default namespace: {0}", @namespace, null); // Yep, laziness found here.
            Debug.WriteLine("Default class: {0}", @class, null);

            string line = file.ReadLine().TrimEnd();
            while (!file.EndOfStream)
            {
                Debug.WriteLine("Current line, expecting new function or compiler directive: Level {1} => {0}", line.Trim(), GetLevel(line));

                if (string.IsNullOrWhiteSpace(line) || string.IsNullOrEmpty(line))
                {
                    Debug.WriteLine("Ignoring because empty.");
                    line = file.ReadLine().TrimEnd();
                    continue;
                }

                if (line.StartsWith("."))
                {
                    // compiler command
                    var lspl = line.Split(' ');
                    var argline = string.Join(" ", lspl.Skip(1));
                    var argarray = lspl.Skip(1);
                    Debug.WriteLine("Compiler command being processed: {0} (with {1} arguments)", lspl[0].ToLower().Substring(1), argarray.Count());
                    line = file.ReadLine().TrimEnd(); // for next processing, we should ignore that from now on.
                    switch (lspl[0].ToLower().Substring(1))
                    {
                        case "using":
                            if ([email protected](argline, StringComparer.OrdinalIgnoreCase))
                            {
                                Debug.WriteLine("Importing {0}", argline);
                                @using.Add(argline);
                            }
                            else
                                Console.Error.WriteLine("Warning: Tried adding \"using {0}\", but namespace has already been imported.", argline, null);
                            break;
                        case "namespace":
                            Debug.WriteLine("Changing to namespace {0}", argline, null);
                            @namespace = argline;
                            break;
                        case "class":
                            Debug.WriteLine("Changing to class {0}", argline, null);
                            @class = argline;
                            break;
                    }
                    continue;
                }

                var cFunction = new Function();
                cFunction.Name = line.Trim();
                Debug.WriteLine("Generating new function: {0}", cFunction.Name, null);

                levelstack.Push(GetLevel(line)); // root level push
                line = file.ReadLine().TrimEnd();
                while (line != null && !(line.TrimEnd() == "") && GetLevel(line) > levelstack.Peek())
                {
                    Debug.WriteLine("Current line, expecting new descriptive keyword: Level {1} => {0}", line.Trim(), GetLevel(line));
                    switch (line.Trim().ToLower())
                    {
                        default:
                            {
                                Console.Error.WriteLine("Warning: Found unknown descriptive keyword \"{0}\", ignoring", line.Trim().ToLower(), null);
                                line = file.ReadLine().TrimEnd();
                            } break;
                        case "description":
                            {
                                Debug.WriteLine("Found description for {0}", cFunction.Name, null);
                                if (!string.IsNullOrEmpty(cFunction.Description))
                                {
                                    throw new Exception(string.Format("Function \"{0}\" already contains a description. Can't define twice.", cFunction.Name));
                                }
                                StringBuilder descriptionBuilder = new StringBuilder();
                                levelstack.Push(GetLevel(line)); // command level push
                                while (GetLevel(line = file.ReadLine()) > levelstack.Peek())
                                {
                                    Debug.WriteLine("Adding 1 line to description");
                                    descriptionBuilder.AppendLine(line.Trim());
                                }
                                levelstack.Pop(); // command level pop
                                cFunction.Description = descriptionBuilder.ToString().Trim();
                                Debug.WriteLine("Description: {0}", cFunction.Description, null);
                            } break;
                        case "arguments":
                            {
                                Debug.WriteLine("Found arguments for {0}", cFunction.Name, null);
                                levelstack.Push(GetLevel(line)); // command level push
                                line = file.ReadLine().TrimEnd();
                                while (GetLevel(line) > levelstack.Peek())
                                {
                                    var spl = line.Trim().Split(' ');
                                    var type = new DataType() { TypeName = spl[0] };
                                    var name = string.Empty;
                                    if (spl.Length > 1)
                                        name = spl.Last();
                                    else
                                    {
                                        name = "arg" + cFunction.Arguments.Count;
                                    }
                                    Debug.WriteLine("Adding argument {0} of type {1}", name, type.TypeName);
                                    StringBuilder descriptionBuilder = new StringBuilder();
                                    levelstack.Push(GetLevel(line)); // argument level push
                                    while (GetLevel(line = file.ReadLine()) > levelstack.Peek())
                                    {
                                        Debug.WriteLine("Adding 1 line to description");
                                        descriptionBuilder.AppendLine(line.Trim());
                                    }
                                    levelstack.Pop(); // argument level pop
                                    type.Description = descriptionBuilder.ToString().Trim();
                                    cFunction.Arguments.Add(name, type);
                                }
                                levelstack.Pop(); // command level pop
                            } break;
                        case "return":
                        case "returns":
                            {
                                var type = new DataType() { TypeName = (line = file.ReadLine()).Trim() };
                                Debug.WriteLine("Found return type {0}", type.TypeName, null);
                                StringBuilder descriptionBuilder = new StringBuilder();
                                levelstack.Push(GetLevel(line)); // command level push
                                while (GetLevel(line = file.ReadLine()) > levelstack.Peek())
                                    descriptionBuilder.AppendLine(line.Trim());
                                levelstack.Pop(); // command level pop
                                type.Description = descriptionBuilder.ToString().Trim();
                                cFunction.ReturnType = type;
                            } break;
                    }
                }
                levelstack.Pop(); // root level pop

                functions.Add(cFunction);
            }

            // using directives
            var stream = Console.OpenStandardOutput();
            var streamwriter = new System.CodeDom.Compiler.IndentedTextWriter(new StreamWriter(stream));
            foreach (string importedNamespace in @using)
                streamwriter.WriteLine("using {0};", importedNamespace);

            // Start namespace
            streamwriter.WriteLine("namespace {0}", @namespace);
            streamwriter.WriteLine("{");
            streamwriter.Indent++;

            // Start class
            streamwriter.WriteLine("public static class {0}", @class);
            streamwriter.WriteLine("{");
            streamwriter.Indent++;

            // Functions
            foreach (var function in functions)
            {
                // Fix return type
                if (function.ReturnType == null)
                    function.ReturnType = new DataType() { TypeName = "void" };
                if (function.ReturnType.TypeName.Equals("boolean", StringComparison.OrdinalIgnoreCase))
                    function.ReturnType.TypeName = "bool";

                // Fix argument types
                foreach (var aName in function.Arguments.Keys)
                {
                    var aVal = function.Arguments[aName];
                    if (aVal.TypeName.Equals("boolean", StringComparison.OrdinalIgnoreCase))
                        aVal.TypeName = "bool";
                }

                // Request generation function
                foreach (string l in function.GetMetadataXml().Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
                    streamwriter.WriteLine("/// {0}", l.Trim(), null);
                streamwriter.Flush();
                streamwriter.WriteLine("public static StandardAPIRequest {0}({1})", function.NormalizedName, function.GetParameterSignature());
                streamwriter.Write("{ ");
                streamwriter.Write("return new StandardAPIRequest(\"{0}\"{1});", function.Name, function.Arguments.Count > 0 ? ", " + function.GetParameterPass() : "");
                streamwriter.WriteLine(" }");
                streamwriter.WriteLine();
                streamwriter.Flush();

                // Actual standard API request function
                foreach (string l in function.GetMetadataXml().Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
                    streamwriter.WriteLine("/// {0}", l.Trim(), null);
                streamwriter.Flush();
                streamwriter.WriteLine("public static {2} {0}(this Client client{1})", function.NormalizedName, function.Arguments.Count > 0 ? ", " + function.GetParameterSignature() : "", function.ReturnType == null ? "void" : function.ReturnType.TypeName);
                streamwriter.Write("{ ");
                if(function.ReturnType != null && function.ReturnType.TypeName != "void")
                    streamwriter.Write("return client.Request<{2}>({0}({1}));", function.NormalizedName, function.GetParameterPass(), function.ReturnType.TypeName);
                else
                    streamwriter.Write("client.Request({0}({1}));", function.NormalizedName, function.GetParameterPass());
                streamwriter.WriteLine(" }");
                streamwriter.WriteLine();
                streamwriter.Flush();
            }

            // End class
            streamwriter.Indent--;
            streamwriter.WriteLine("}");

            // End namespace
            streamwriter.Indent--;
            streamwriter.WriteLine("}");

            // Finalize
            streamwriter.Flush();
            streamwriter.Close();
            streamwriter.Dispose();
        }
コード例 #51
0
        public void GenerateCode(CodeDomGenerator.Language language)
        {
            switch (language)
            {
                case CodeDomGenerator.Language.CSharp:
                    using (Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            if (_params.Count != 1 || _params[0].Type != null)
                                tw.Write("(");

                            for (int i = 0; i < _params.Count; i++)
                            {
                                if (i > 0)
                                    tw.Write(", ");

                                if (_params[i].Type != null)
                                {
                                    provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(_params[i].Type), tw, opts);
                                    tw.Write(" ");
                                }

                                tw.Write(_params[i].Name);
                            }

                            if (_params.Count != 1 || _params[0].Type != null)
                                tw.Write(")");

                            tw.Write(" => ");
                            provider.GenerateCodeFromExpression(Expression, tw, opts);
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                case CodeDomGenerator.Language.VB:
                    using (Microsoft.VisualBasic.VBCodeProvider provider = new Microsoft.VisualBasic.VBCodeProvider())
                    {
                        System.CodeDom.Compiler.CodeGeneratorOptions opts = new System.CodeDom.Compiler.CodeGeneratorOptions();
                        using (System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(new StringWriter(), opts.IndentString))
                        {
                            tw.Write("Function(");

                            for (int i = 0; i < _params.Count; i++)
                            {
                                if (i > 0)
                                    tw.Write(", ");

                                tw.Write(_params[i].Name);

                                if (_params[i].Type != null)
                                {
                                    tw.Write(" As ");
                                    provider.GenerateCodeFromExpression(new CodeTypeReferenceExpression(_params[i].Type), tw, opts);
                                }
                            }

                            tw.Write(") ");
                            provider.GenerateCodeFromExpression(Expression, tw, opts);
                            Value = tw.InnerWriter.ToString();
                        }
                    }
                    break;
                default:
                    throw new NotImplementedException(language.ToString());
            }
        }
コード例 #52
0
ファイル: Tests.cs プロジェクト: zanyants/mvp.xml
		public void XmlDocumentLoading()
		{
			string xml = "<customer id='1' pp:id='aba' xmlns='urn-kzu' xmlns:pp='urn-pepenamespace'><pp:order /><order id='1'>Chocolates</order></customer>";

			XPathNavigator nav = new XPathDocument(new StringReader(xml)).CreateNavigator();

			XmlReader reader = new XPathNavigatorReader(nav);
			//XmlReader reader = new XmlTextReader(new StringReader(xml));

			//reader.MoveToContent();
			//Console.WriteLine(reader.ReadOuterXml());

			System.CodeDom.Compiler.IndentedTextWriter tw = new System.CodeDom.Compiler.IndentedTextWriter(Console.Out);

			while (reader.Read())
			{
				tw.Indent = reader.Depth;
				tw.WriteLine("Name={0}, Type={1}", reader.Name, reader.NodeType);
				int count = reader.AttributeCount;
				//reader.MoveToFirstAttribute();
				//for (int i = 0; i < count; i++) 
				while (reader.MoveToNextAttribute())
				{
					tw.Indent = reader.Depth;
					tw.Write("{0}=", reader.Name);
					reader.ReadAttributeValue();
					tw.WriteLine(reader.Value);
					//reader.MoveToNextAttribute();
				}
			}

			//reader = new DebuggingXmlTextReader(new XPathNavigatorReader(nav));
			reader = new XPathNavigatorReader(nav);
			XmlDocument doc = new XmlDocument(nav.NameTable);
			doc.Load( reader );
           
			Assert.AreEqual("customer", doc.DocumentElement.LocalName);
			Assert.AreEqual("urn-kzu", doc.DocumentElement.NamespaceURI);
			Assert.AreEqual(4, doc.DocumentElement.Attributes.Count);
			Assert.AreEqual(2, doc.DocumentElement.ChildNodes.Count);
		}