diff options
Diffstat (limited to 'generator/CodeGenerator.cs')
-rw-r--r-- | generator/CodeGenerator.cs | 242 |
1 files changed, 121 insertions, 121 deletions
diff --git a/generator/CodeGenerator.cs b/generator/CodeGenerator.cs index 3be4ce2..e3d05b5 100644 --- a/generator/CodeGenerator.cs +++ b/generator/CodeGenerator.cs @@ -1,121 +1,121 @@ -// GtkSharp.Generation.CodeGenerator.cs - The main code generation engine.
-//
-// Author: Mike Kestner <mkestner@speakeasy.net>
-//
-// Copyright (c) 2001-2003 Mike Kestner
-// Copyright (c) 2003-2004 Novell Inc.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of version 2 of the GNU General Public
-// License as published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-//
-// You should have received a copy of the GNU General Public
-// License along with this program; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA 02111-1307, USA.
-
-
-namespace GtkSharp.Generation {
-
- using System;
- using System.Collections;
- using System.Xml;
-
- public class CodeGenerator {
-
- public static int Main (string[] args)
- {
- if (args.Length < 2) {
- Console.WriteLine ("Usage: codegen --generate <filename1...>");
- return 0;
- }
-
- bool generate = false;
- string dir = "";
- string assembly_name = "";
- string glue_filename = "";
- string glue_includes = "";
- string gluelib_name = "";
-
- SymbolTable table = SymbolTable.Table;
- ArrayList gens = new ArrayList ();
- foreach (string arg in args) {
- if (arg.StartsWith ("--customdir=")) {
- Console.WriteLine ("Using .custom files is not supported anymore, use partial classes instead.");
- return 0;
- }
- string filename = arg;
- if (arg == "--generate") {
- generate = true;
- continue;
- } else if (arg == "--include") {
- generate = false;
- continue;
- } else if (arg.StartsWith ("-I:")) {
- generate = false;
- filename = filename.Substring (3);
- } else if (arg.StartsWith ("--outdir=")) {
- generate = false;
- dir = arg.Substring (9);
- continue;
- } else if (arg.StartsWith ("--assembly-name=")) {
- generate = false;
- assembly_name = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--glue-filename=")) {
- generate = false;
- glue_filename = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--glue-includes=")) {
- generate = false;
- glue_includes = arg.Substring (16);
- continue;
- } else if (arg.StartsWith ("--gluelib-name=")) {
- generate = false;
- gluelib_name = arg.Substring (15);
- continue;
- }
-
- Parser p = new Parser ();
- IGeneratable[] curr_gens = p.Parse (filename);
- table.AddTypes (curr_gens);
- if (generate)
- gens.AddRange (curr_gens);
- }
-
- // Now that everything is loaded, validate all the to-be-
- // generated generatables and then remove the invalid ones.
- ArrayList invalids = new ArrayList ();
- foreach (IGeneratable gen in gens) {
- if (!gen.Validate ())
- invalids.Add (gen);
- }
- foreach (IGeneratable gen in invalids)
- gens.Remove (gen);
-
- GenerationInfo gen_info = null;
- if (dir != "" || assembly_name != "" || glue_filename != "" || glue_includes != "" || gluelib_name != "")
- gen_info = new GenerationInfo (dir, assembly_name, glue_filename, glue_includes, gluelib_name);
-
- foreach (IGeneratable gen in gens) {
- if (gen_info == null)
- gen.Generate ();
- else
- gen.Generate (gen_info);
- }
-
- ObjectGen.GenerateMappers ();
-
- if (gen_info != null)
- gen_info.CloseGlueWriter ();
-
- Statistics.Report();
- return 0;
- }
- }
-}
+// GtkSharp.Generation.CodeGenerator.cs - The main code generation engine. +// +// Author: Mike Kestner <mkestner@speakeasy.net> +// +// Copyright (c) 2001-2003 Mike Kestner +// Copyright (c) 2003-2004 Novell Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the GNU General Public +// License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + + +namespace GtkSharp.Generation { + + using System; + using System.Collections.Generic; + using System.Xml; + + public class CodeGenerator { + + public static int Main (string[] args) + { + if (args.Length < 2) { + Console.WriteLine ("Usage: codegen --generate <filename1...>"); + return 0; + } + + bool generate = false; + string dir = ""; + string assembly_name = ""; + string glue_filename = ""; + string glue_includes = ""; + string gluelib_name = ""; + + SymbolTable table = SymbolTable.Table; + var gens = new List<IGeneratable> (); + foreach (string arg in args) { + if (arg.StartsWith ("--customdir=")) { + Console.WriteLine ("Using .custom files is not supported anymore, use partial classes instead."); + return 0; + } + string filename = arg; + if (arg == "--generate") { + generate = true; + continue; + } else if (arg == "--include") { + generate = false; + continue; + } else if (arg.StartsWith ("-I:")) { + generate = false; + filename = filename.Substring (3); + } else if (arg.StartsWith ("--outdir=")) { + generate = false; + dir = arg.Substring (9); + continue; + } else if (arg.StartsWith ("--assembly-name=")) { + generate = false; + assembly_name = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--glue-filename=")) { + generate = false; + glue_filename = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--glue-includes=")) { + generate = false; + glue_includes = arg.Substring (16); + continue; + } else if (arg.StartsWith ("--gluelib-name=")) { + generate = false; + gluelib_name = arg.Substring (15); + continue; + } + + Parser p = new Parser (); + IGeneratable[] curr_gens = p.Parse (filename); + table.AddTypes (curr_gens); + if (generate) + gens.AddRange (curr_gens); + } + + // Now that everything is loaded, validate all the to-be- + // generated generatables and then remove the invalid ones. + var invalids = new List<IGeneratable> (); + foreach (IGeneratable gen in gens) { + if (!gen.Validate ()) + invalids.Add (gen); + } + foreach (IGeneratable gen in invalids) + gens.Remove (gen); + + GenerationInfo gen_info = null; + if (dir != "" || assembly_name != "" || glue_filename != "" || glue_includes != "" || gluelib_name != "") + gen_info = new GenerationInfo (dir, assembly_name, glue_filename, glue_includes, gluelib_name); + + foreach (IGeneratable gen in gens) { + if (gen_info == null) + gen.Generate (); + else + gen.Generate (gen_info); + } + + ObjectGen.GenerateMappers (); + + if (gen_info != null) + gen_info.CloseGlueWriter (); + + Statistics.Report(); + return 0; + } + } +} |