CreateGenerator() private méthode

private CreateGenerator ( ) : ICodeGenerator
Résultat ICodeGenerator
		public static string Generate (string inputFileContent, CodeCompileUnit compileUnit, CodeNamespace mainNamespace, CodeDomProvider codeProvider)
		{
			var dataSet = new DataSet ();
			dataSet.ReadXmlSchema (inputFileContent);
			T.Generate (dataSet, mainNamespace, codeProvider.CreateGenerator ());
			return null;
		}
        protected bool Supports (CodeDomProvider provider, GeneratorSupport support) {
#if WHIDBEY
            return provider.Supports (support);
#else
            return (provider.CreateGenerator ()).Supports (support);
#endif
        }
 internal string GenerateTypedDataSet(XmlSchemaElement element, XmlSchemas schemas, CodeNamespace codeNamespace, StringCollection references, CodeDomProvider codeProvider)
 {
     if (element == null)
     {
         return null;
     }
     if (this.importedTypes[element.SchemaType] != null)
     {
         return (string) this.importedTypes[element.SchemaType];
     }
     IList list = schemas.GetSchemas(element.QualifiedName.Namespace);
     if (list.Count != 1)
     {
         return null;
     }
     XmlSchema schema = list[0] as XmlSchema;
     if (schema == null)
     {
         return null;
     }
     DataSet dataSet = new DataSet();
     using (MemoryStream stream = new MemoryStream())
     {
         schema.Write(stream);
         stream.Position = 0L;
         dataSet.ReadXmlSchema(stream);
     }
     string name = new TypedDataSetGenerator().GenerateCode(dataSet, codeNamespace, codeProvider.CreateGenerator()).Name;
     this.importedTypes.Add(element.SchemaType, name);
     references.Add("System.Data.dll");
     return name;
 }
		public void InitBase()
		{
			provider = new CSharpCodeProvider ();
			generator = provider.CreateGenerator ();
			options = new CodeGeneratorOptions ();
			writer = new StringWriter ();

			writer.NewLine = "\n";
		}
    private 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;

        tw = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFileName, false), "	");
        System.CodeDom.Compiler.CodeGeneratorOptions options = new System.CodeDom.Compiler.CodeGeneratorOptions();
        options.BracingStyle = "C";
        gen.GenerateCodeFromCompileUnit(compileUnit, tw, options);
        tw.Flush();
        tw.Close();
    }
		public static string ToCode(CodeCompileUnit compileunit, CodeDomProvider provider)
		{

			StringBuilder sb = new StringBuilder() ;
			StringWriter sw = new StringWriter(sb);
			IndentedTextWriter tw = new IndentedTextWriter(sw, "    ");

			ICodeGenerator gen = provider.CreateGenerator(tw);

			gen.GenerateCodeFromCompileUnit(compileunit, tw, 
				new CodeGeneratorOptions());

			string code = sb.ToString();

			return code;
		}
Exemple #7
0
 public static void GenerateCode(string fileName,
                                 System.CodeDom.Compiler.CodeDomProvider provider,
                                 System.CodeDom.CodeCompileUnit compileUnit)
 {
     System.CodeDom.Compiler.ICodeGenerator     gen = provider.CreateGenerator();
     System.CodeDom.Compiler.IndentedTextWriter tw  = null;
     try
     {
         tw = new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(fileName, false), "	");
         gen.GenerateCodeFromCompileUnit(compileUnit, tw, new System.CodeDom.Compiler.CodeGeneratorOptions());
     }
     finally
     {
         if (tw != null)
         {
             tw.Flush();
             tw.Close();
         }
     }
 }
Exemple #8
0
        public static void GenerateProjectCode(string file, CodeDomProvider provider, GenerationOptions options, ProjectBackend[] projects)
        {
            CodeGenerationResult res = GenerateProjectCode (options, projects);

            ICodeGenerator gen = provider.CreateGenerator ();
            string basePath = Path.GetDirectoryName (file);

            foreach (SteticCompilationUnit unit in res.Units) {
                string fname;
                if (unit.Name.Length == 0)
                    fname = file;
                else
                    fname = Path.Combine (basePath, unit.Name);
                StreamWriter fileStream = new StreamWriter (fname);
                try {
                    gen.GenerateCodeFromCompileUnit (unit, fileStream, new CodeGeneratorOptions ());
                } finally {
                    fileStream.Close ();
                }
            }
        }
        public String ToCode(CodeCompileUnit compileunit, CodeDomProvider provider, IDomainMap domainMap)
        {
            StringBuilder sb = new StringBuilder() ;
            StringWriter sw = new StringWriter(sb);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "    ");

            ICodeGenerator gen = provider.CreateGenerator(tw);

            gen.GenerateCodeFromCompileUnit(compileunit, tw,
                new CodeGeneratorOptions());

            string code = sb.ToString();

            if (domainMap != null)
            {
                foreach (ICodeMap codeMap in domainMap.CodeMaps)
                {
                    if (provider is CSharpCodeProvider && codeMap.CodeLanguage == CodeLanguage.CSharp)
                    {
                        code = GetDomainCodeMap(domainMap, codeMap) + code;
                    }
                    else if (provider is VBCodeProvider && codeMap.CodeLanguage == CodeLanguage.VB)
                    {
                        code = GetDomainCodeMap(domainMap, codeMap)  + code;
                    }
                    //						if (provider is DelphiCodeProvider && codeMap.CodeLanguage == CodeLanguage.Delphi)
                    //						{
                    //							code = GetDomainCodeMap(code, classMap, codeMap) + code;
                    //						}
                }

                foreach (IClassMap classMap in domainMap.ClassMaps)
                {
                    foreach (ICodeMap codeMap in classMap.CodeMaps)
                    {
                        if (provider is CSharpCodeProvider && codeMap.CodeLanguage == CodeLanguage.CSharp)
                        {
                            code = InsertCodeMap(code, classMap, codeMap);
                        }
                        else if (provider is VBCodeProvider && codeMap.CodeLanguage == CodeLanguage.VB)
                        {
                            code = InsertCodeMap(code, classMap, codeMap);
                        }
            //						if (provider is DelphiCodeProvider && codeMap.CodeLanguage == CodeLanguage.Delphi)
            //						{
            //							code = InsertCodeMap(code, classMap, codeMap);
            //						}
                    }
                }

            }

            return code;
        }
        /// <summary>
        /// This overrides the CodeDomTest Run method that does verification
        /// on the tree provided in the BuildTree method you provide.
        /// </summary>
        /// <param name="provider">Provider to test.</param>
        /// <returns>True if the tree builds, compiles, searches and passes
        /// assembly verification.  False if any of these fails.</returns>
        public override bool Run (CodeDomProvider provider) {
            bool fail = false;

            // build the tree
            LogMessageIndent ();
            LogMessage ("- Generating tree.");
            CodeCompileUnit cu = new CodeCompileUnit ();
            LogMessageIndent ();
            BuildTree (provider, cu);
            LogMessageUnindent ();

            // validate tree using 'experimental' subset tester
            // but only if the test believes its in the subset
            if ((TestType & TestTypes.Subset) != 0) {
                SubsetConformance subsConf = new SubsetConformance ();
                LogMessage ("- Checking tree subset conformance.");
                if (!subsConf.ValidateCodeCompileUnit (cu))
                    LogMessage ("Failed subset tester: {0}",
                            subsConf.ToString ());
            }

            // realize source
            StringWriter sw = new StringWriter (CultureInfo.InvariantCulture);
#if WHIDBEY
            provider.GenerateCodeFromCompileUnit (cu, sw, GetGeneratorOptions (provider));
#else
            ICodeGenerator generator = provider.CreateGenerator ();
            generator.GenerateCodeFromCompileUnit (cu, sw, GetGeneratorOptions (provider));
#endif

            // only continue if the source could be realized into a string.
            if (!fail) {
                string source = sw.ToString ();

                if (saveSourceFileName.Length > 0) {
                    LogMessage ("- Saving source into '" + saveSourceFileName + "'");

                    // save this source to a file
                    DumpStringToFile (source, saveSourceFileName);
                }

                // log the source code
                //LogMessage (source);

                // search the source if the test case asks us to
                if (ShouldSearch) {
                    LogMessageIndent ();
                    Search (provider, source);
                    LogMessageUnindent ();
                }
                
                // continue only if the test case wants to compile or verify
                if (ShouldCompile || ShouldVerify) {

                    // ask the test case which compiler parameters it would like to use
                    CompilerParameters parms = GetCompilerParameters (provider);

#if FSHARP
                    // If the generated code has entrypoint, then F# requires us to generate EXE
                    bool hasEntryPoint = false;
                    foreach(CodeNamespace ns in cu.Namespaces)
                        foreach (CodeTypeDeclaration ty in ns.Types)
                            foreach(CodeTypeMember mem in ty.Members)
                                if (mem is CodeEntryPointMethod) { hasEntryPoint = true; }

                    // If the output file name is specified then it should be EXE
                    if (hasEntryPoint && parms.GenerateExecutable == false)
                    {
                        parms.GenerateExecutable = true;
                        if (saveAssemblyFileName.ToLower().EndsWith(".dll"))
                            saveAssemblyFileName = saveAssemblyFileName.Substring(0, saveAssemblyFileName.Length - 4) + ".exe";
                    }
#endif
                    
                    // add the appropriate compiler parameters if the user asked us
                    // to save assemblies to file
                    if (saveAssemblyFileName.Length > 0) {
                        parms.OutputAssembly = saveAssemblyFileName;
                        LogMessage ("- Compiling to '" + saveAssemblyFileName + "'.");
                    }

                    // always generate in memory for verification purposes
                    parms.GenerateInMemory = true;

                    // compile!
#if WHIDBEY
                    CompilerResults results = provider.CompileAssemblyFromDom (parms, cu);
#else
                    ICodeCompiler compiler = provider.CreateCompiler ();
                    CompilerResults results = compiler.CompileAssemblyFromDom (parms, cu);
#endif

                    if (results.NativeCompilerReturnValue != 0) {
                        // compilation failed
                        fail = true;
                        LogMessage ("- Compilation failed.");
                        
                        // log the compilation failed output
                        foreach (string msg in results.Output)
                            LogMessage (msg);

                    } else if (ShouldVerify) {
                        // compilation suceeded and we are asked to verify the
                        // compiled assembly
                        LogMessage ("- Verifying assembly.");

                        // verify the compiled assembly if it's there
                        if (results.CompiledAssembly != null) {
                            LogMessageIndent ();
                            VerifyAssembly (provider, results.CompiledAssembly);
                            LogMessageUnindent ();
                        }
                    }
                }
            }

            if (fail || !AreAllValidated ()) {
                // one of the steps above failed or a scenario was not
                // verified within the test case
                fail = true;
                LogMessage ("! Test '" + Name + "' failed.");

                // output failing scenarios
                if (!AreAllValidated()) {
                    LogMessage ("! Failing scenarios:");
                    foreach (Scenario s in GetNotValidated())
                    {
                        LogMessage ("-  " + s.ToString());
                    }
                }
            } else {
                // test passed
                LogMessage ("* Test '" + Name + "' passed.");
            }
            LogMessageUnindent ();

            // return true on success, false on failure
            return !fail;
        }
Exemple #11
0
 public CompilerInfo(CodeDomProvider provider)
 {
     Compiler = provider.CreateCompiler();
     CodeGen = provider.CreateGenerator();
 }
		private void GenerateTestCase(CodeDomProvider provider, string extension, string ns, string name, string area, 
			string[] actions, TextWriter output)
		{
			CodeNamespace nsunit = GenerateControllerTestCode(ns, name, area, actions);

			FileInfo controllerFile = new FileInfo( 
				Path.Combine(testsDir.FullName, name + "Tests" + extension) );

			if (!controllerFile.Exists)
			{
				using (StreamWriter sw = new StreamWriter(controllerFile.FullName, false, Encoding.Default))
				{
					CodeGeneratorOptions opts = new CodeGeneratorOptions();
					opts.BracingStyle = "C";
#if DOTNET2
					provider.GenerateCodeFromNamespace(nsunit, sw, opts);
#else
					provider.CreateGenerator().GenerateCodeFromNamespace(nsunit, sw, opts);
#endif
				}
			}
			else
			{
				output.WriteLine("Skipping {0} as the files exists", controllerFile.FullName);
			}
		}
Exemple #13
0
 public static string Run(CodeWizard codeWizard, IServiceProvider serviceProvider, CodeDomProvider codeDomProvider, QueryBuilderType type)
 {
     IUIService service = (IUIService) serviceProvider.GetService(typeof(IUIService));
     IDatabaseManager manager = (IDatabaseManager) serviceProvider.GetService(typeof(IDatabaseManager));
     if (codeDomProvider != null)
     {
         ICodeGenerator generator = codeDomProvider.CreateGenerator();
         if (generator != null)
         {
             QueryBuilder form = new QueryBuilder(codeWizard, type);
             if (service.ShowDialog(form) == DialogResult.OK)
             {
                 StringWriter w = new StringWriter();
                 CodeGeneratorOptions o = new CodeGeneratorOptions();
                 CodeMemberMethod method = new CodeMemberMethod();
                 method.Name = form.MethodName;
                 IDictionary dictionary = new HybridDictionary(true);
                 foreach (QueryParameter parameter in form.Parameters)
                 {
                     string variableNameFromParameterName = GetVariableNameFromParameterName(parameter.Name);
                     if (dictionary[variableNameFromParameterName] == null)
                     {
                         System.Type typeFromDbType = QueryParameter.GetTypeFromDbType(parameter.Type);
                         method.Parameters.Add(new CodeParameterDeclarationExpression(typeFromDbType, variableNameFromParameterName));
                         dictionary[variableNameFromParameterName] = string.Empty;
                     }
                 }
                 method.ReturnType = new CodeTypeReference(form.ReturnType);
                 method.Attributes = MemberAttributes.Final;
                 method.Statements.AddRange(BuildConnection((IDataProviderDatabase) form.Database, ((IDataProviderDatabase) form.Database).ConnectionString));
                 method.Statements.Add(new CodeSnippetStatement(string.Empty));
                 method.Statements.Add(BuildQueryString(form.Query));
                 method.Statements.AddRange(BuildCommand((IDataProviderDatabase) form.Database));
                 method.Statements.Add(new CodeSnippetStatement(string.Empty));
                 int num = 0;
                 dictionary = new HybridDictionary(true);
                 foreach (QueryParameter parameter2 in form.Parameters)
                 {
                     string str2 = GetVariableNameFromParameterName(parameter2.Name);
                     if (dictionary[str2] == null)
                     {
                         method.Statements.AddRange(BuildDbParameterAssignment((IDataProviderDatabase) form.Database, parameter2.Name, parameter2.Type, codeDomProvider));
                         num++;
                         dictionary[str2] = string.Empty;
                     }
                 }
                 if (num > 0)
                 {
                     method.Statements.Add(new CodeSnippetStatement(string.Empty));
                 }
                 if (type == QueryBuilderType.Select)
                 {
                     if (form.ReturnType == typeof(IDataReader))
                     {
                         method.Statements.AddRange(BuildSelectReturnDataReader());
                     }
                     else
                     {
                         method.Statements.AddRange(BuildSelectReturnDataSet((IDataProviderDatabase) form.Database));
                     }
                 }
                 else
                 {
                     method.Statements.AddRange(BuildExecuteNonQuery());
                 }
                 CodeTypeDeclaration e = new CodeTypeDeclaration("TempType");
                 e.Members.Add(method);
                 generator.GenerateCodeFromType(e, w, o);
                 string s = w.ToString();
                 w = new StringWriter();
                 CodeTypeDeclaration declaration2 = new CodeTypeDeclaration("TempType");
                 generator.GenerateCodeFromType(declaration2, w, o);
                 string str4 = w.ToString();
                 w = new StringWriter();
                 StringReader reader = new StringReader(s);
                 StringReader reader2 = new StringReader(str4);
                 string str5 = reader.ReadLine();
                 string str6 = reader2.ReadLine();
                 while (str5 != null)
                 {
                     if (str5 != str6)
                     {
                         w.WriteLine(str5);
                     }
                     else
                     {
                         str6 = reader2.ReadLine();
                     }
                     str5 = reader.ReadLine();
                 }
                 return w.ToString();
             }
         }
     }
     return string.Empty;
 }
        internal string GenerateTypedDataSet(XmlSchemaElement element, XmlSchemas schemas, CodeNamespace codeNamespace, StringCollection references, CodeDomProvider codeProvider) {
            if (element == null)
                return null;

            if (importedTypes[element.SchemaType] != null)
                return (string)importedTypes[element.SchemaType];

            IList values = schemas.GetSchemas(element.QualifiedName.Namespace);
            if (values.Count != 1) {
                return null;
            }
            XmlSchema schema = values[0] as XmlSchema;
            if (schema == null)
                return null;

            DataSet ds = new DataSet();

            // 
            using (MemoryStream stream = new MemoryStream()) {
                schema.Write(stream);
                stream.Position = 0;
                ds.ReadXmlSchema(stream);
            }

#pragma warning disable 618 // ignore obsolete warning about TypedDataSetGenerator
            CodeTypeDeclaration dsClass = new TypedDataSetGenerator().GenerateCode(ds, codeNamespace, codeProvider.CreateGenerator());
#pragma warning restore 618
            string typeName = dsClass.Name;
            importedTypes.Add(element.SchemaType, typeName);
            references.Add("System.Data.dll");
            return typeName;
        }
        private void CreateCodeGenerator(out ICodeGenerator codeGen, out string fileExtension)
        {
            Language language1 = WsdlProperties.Language;
            switch (language1)
            {
                case Language.CS:
                    codeProvider = new CSharpCodeProvider();
                    break;

                case Language.VB:
                    codeProvider = new VBCodeProvider();
                    break;

                default:
                    {
                        if (language1 != Language.Custom)
                        {
                            throw new Exception("Unknown language");
                        }
                        Type type1 = Type.GetType(WsdlProperties.CustomCodeDomProvider);
                        if (type1 == null)
                        {
                            throw new TypeLoadException("Type '" + WsdlProperties.CustomCodeDomProvider +
                                                        "' is not found");
                        }
                        codeProvider = (CodeDomProvider) Activator.CreateInstance(type1);
                        break;
                    }
            }
            if (codeProvider != null)
            {
                codeGen = codeProvider.CreateGenerator();
                fileExtension = codeProvider.FileExtension;
                if (fileExtension == null)
                {
                    fileExtension = string.Empty;
                }
                else if ((fileExtension.Length > 0) && (fileExtension[0] != '.'))
                {
                    fileExtension = "." + fileExtension;
                }
            }
            else
            {
                fileExtension = ".src";
                codeGen = null;
            }
        }
		public static string Generate (DataSet dataSet, CodeNamespace codeNamespace, CodeDomProvider codeProvider)
		{
			T.Generate (dataSet, codeNamespace, codeProvider.CreateGenerator ());
			return null;
		}
        public String ToCodeFile(CodeCompileUnit compileunit, CodeDomProvider provider, string fileName)
        {
            #if NET2

            String sourceFile;
            if (provider.FileExtension[0] == '.')
                sourceFile = fileName + provider.FileExtension;
            else
                sourceFile = fileName + "." + provider.FileExtension;

            IndentedTextWriter tw = new IndentedTextWriter(
                new StreamWriter(sourceFile, false), "    ");

            provider.GenerateCodeFromCompileUnit(compileunit, tw,
                new CodeGeneratorOptions());

            tw.Close();

            return sourceFile;
            #else
            ICodeGenerator gen = provider.CreateGenerator();

            String sourceFile;
            if (provider.FileExtension[0] == '.')
                sourceFile = fileName + provider.FileExtension;
            else
                sourceFile = fileName + "." + provider.FileExtension;

            IndentedTextWriter tw = new IndentedTextWriter(
                new StreamWriter(sourceFile, false), "    ");

            gen.GenerateCodeFromCompileUnit(compileunit, tw,
                new CodeGeneratorOptions());

            tw.Close();

            return sourceFile;
            #endif
        }
Exemple #18
0
        public CodeGenerationResult GenerateProjectCode(string file, string namespaceName, CodeDomProvider provider, GenerationOptions options, params Project[] projects)
        {
            ArrayList files = new ArrayList ();
            CodeGenerationResult res = GenerateProjectCode (options, projects);

            ICodeGenerator gen = provider.CreateGenerator ();
            string basePath = Path.GetDirectoryName (file);
            string ext = Path.GetExtension (file);

            foreach (SteticCompilationUnit unit in res.Units) {
                string fname;
                if (unit.Name.Length == 0)
                    fname = file;
                else
                    fname = Path.Combine (basePath, unit.Name) + ext;
                files.Add (fname);
                unit.Name = fname;
                StreamWriter fileStream = new StreamWriter (fname);
                try {
                    gen.GenerateCodeFromCompileUnit (unit, fileStream, new CodeGeneratorOptions ());
                } finally {
                    fileStream.Close ();
                }
            }
            return res;
        }
		public void InitBase()
		{
			provider = new CSharpCodeProvider ();
			generator = provider.CreateGenerator ();
			options = new CodeGeneratorOptions ();
		}
Exemple #20
0
		private void WriteClassFile(Project project, String name, CodeNamespace ns, CodeDomProvider provider)
		{
			String filename =  String.Format("{0}.{1}", name, provider.FileExtension);

			FileInfo fileInfo = new FileInfo( Path.Combine(project.LastOutDir, filename) );

			if (fileInfo.Exists && !project.OverwriteFiles)
			{
				Log( String.Format("Skipping {0} as it already exists", filename) );
			}
			else
			{
				Log( String.Format("Writing {0}...", filename) );

				try
				{
					using(FileStream stream = new FileStream(fileInfo.FullName, FileMode.Create, FileAccess.Write))
					{
						StreamWriter writer = new StreamWriter(stream);
						CodeGeneratorOptions opts = new CodeGeneratorOptions();
						opts.BracingStyle = "C";
						opts.BlankLinesBetweenMembers = true;
						provider.CreateGenerator().GenerateCodeFromNamespace(ns, writer, opts);
						writer.Flush();
						writer.Close();
					}
				}
				catch(Exception ex)
				{
					Log( String.Format("Error Writing {0} []", filename, ex.Message) );
				}
			}
		}