diff --git a/CSharpTranslator/antlr3/docs/external/CHANGELOG b/CSharpTranslator/antlr3/docs/external/CHANGELOG index d9fe015..117fc3c 100644 --- a/CSharpTranslator/antlr3/docs/external/CHANGELOG +++ b/CSharpTranslator/antlr3/docs/external/CHANGELOG @@ -1,3 +1,37 @@ +2011-09-13 + + * revamped option names (sorry!). See user guide. + added: + -config= + + renamed: + -dumpxmls --> -dump-xmls + -xmldir --> -out-xml-dir + -odir --> -out-java-dir + -netdir --> -net-templates-dir + -exnetdir --> -ex-net-templates-dir + -appdir --> -app-dir + -exappdir --> -ex-app-dir + -csdir --> -cs-dir + -excsdir --> -ex-cs-dir + + -showcsharp --> -show-csharp + -showjavasyntax --> -show-javasyntax + -showjava --> -show-java + -showtokens --> -show-tokens + -dumpenums --> -dump-enums + -enumdir --> -out-enum-dir + -cheatdir --> -cheat-dir + + -translator-keep-parens --> -keep-parens + -translator-timestamp-files --> -timestamp-files + -translator-blanket-throw --> -blanket-throw + -translator-exception-is-throwable --> -exception-is-throwable + -translator-make-javadoc-comments --> -make-javadoc-comments + -translator-make-java-naming-conventions --> -make-java-naming-conventions + + -experimental-enums-numericconsts --> -experimental-enums-to-numeric-consts + 2011-09-07 2011.2.4 * add option -experimental-unsigned-to-bigger-signed=true/false (default: false). diff --git a/CSharpTranslator/antlr3/resources/DefaultSettings.ini b/CSharpTranslator/antlr3/resources/DefaultSettings.ini new file mode 100644 index 0000000..8ebd9c8 --- /dev/null +++ b/CSharpTranslator/antlr3/resources/DefaultSettings.ini @@ -0,0 +1,65 @@ +;; This Configuration file shows all user-settable configuration options for CS2J with their default values. +[General] + +; Debug / Verbosity flags +verbose = 0 +debug = 1 +debug-template-extraction = true + +; Control warnings +warnings = true +warnings-resolve-failures = false + +; Dump internal structures during translation +show-csharp = false +show-javasyntax = false +show-java = false +show-tokens = false + +; Preprocessor tokens +define = + +; Output enum list, parsed translation files +dump-enums = false +out-enum-dir = + +dump-xmls = false +out-xml-dir = tmpXMLs + +; Source and output for translation files and templates +cheat-dir = + +net-templates-dir = +ex-net-templates-dir = + +app-dir = +ex-app-dir = + +cs-dir = +ex-cs-dir = + +out-java-dir = + +; Enable Alternate Translation Templates +alt-translations = + +; Boolean flags +keep-parens = true +timestamp-files = true +blanket-throw = true +exception-is-throwable = false +make-javadoc-comments = true +make-java-naming-conventions = true + +; These are experimental settings. +; They may change (or disappear, or move to General section, or ....) in future releases +[Experimental] +enums-to-numeric-consts = false +unsigned-to-signed = false +unsigned-to-bigger-signed = false +transforms = false + +; These are internal settings used for development. +; You should not need (or want) to touch them. +[Internal] +isjavaish = false \ No newline at end of file diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator.sln b/CSharpTranslator/antlr3/src/CS2JTranslator.sln index 93801db..2f1e5ab 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator.sln +++ b/CSharpTranslator/antlr3/src/CS2JTranslator.sln @@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2JTemplateSigner", "CS2JT EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2JKeyGenerator", "CS2JKeyGenerator\CS2JKeyGenerator.csproj", "{F294E768-56C3-438A-A3E5-8FA39825262E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nini", "Nini\Nini.csproj", "{CB5C2235-43B2-4B37-B866-D5D33F0E68B0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -46,6 +48,18 @@ Global {B72D065B-862A-469B-87F1-2E521AC7CA08}.Release|Mixed Platforms.Build.0 = Release|x86 {B72D065B-862A-469B-87F1-2E521AC7CA08}.Release|x86.ActiveCfg = Release|x86 {B72D065B-862A-469B-87F1-2E521AC7CA08}.Release|x86.Build.0 = Release|x86 + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Debug|x86.Build.0 = Debug|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|Any CPU.Build.0 = Release|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|x86.ActiveCfg = Release|Any CPU + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0}.Release|x86.Build.0 = Release|Any CPU {CF15D0D5-BE72-4F98-B70F-229ABA1DF0E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CF15D0D5-BE72-4F98-B70F-229ABA1DF0E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {CF15D0D5-BE72-4F98-B70F-229ABA1DF0E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs index 1743ffd..ec9e30e 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs @@ -27,6 +27,7 @@ using Twiglet.CS2J.Translator.TypeRep; using CS2JConstants = Twiglet.CS2J.Translator.Utils.Constants; using Twiglet.CS2J.Translator.Extract; +using Nini.Config; namespace Twiglet.CS2J.Translator { @@ -36,6 +37,7 @@ namespace Twiglet.CS2J.Translator private static DirectoryHT AppEnv { get; set; } private static CS2JSettings cfg = new CS2JSettings(); private static StringTemplateGroup templates = null; + private static bool doEarlyExit = false; private static RSACryptoServiceProvider RsaKey = null; private static int badXmlTxCountTrigger = 3 + 4 - 2; @@ -78,35 +80,143 @@ namespace Twiglet.CS2J.Translator Console.Out.WriteLine(" [-translator-keep-parens ] (keep parens from source, default true)"); Console.Out.WriteLine(" "); } - - private static IList mkDirectories(string rawStr) { + + private static IList mkDirectories(string rawStr) + { IList strs = new List(); - char splitChar = rawStr.IndexOf(';') >= 0 ? ';' : '|'; - string[] argDirs = rawStr.Split(splitChar); - for (int i = 0; i < argDirs.Length; i++) + if (!String.IsNullOrEmpty(rawStr)) { - string dir = Path.GetFullPath(argDirs[i]).TrimEnd(Path.DirectorySeparatorChar); - strs.Add(dir); + char splitChar = rawStr.IndexOf(';') >= 0 ? ';' : '|'; + string[] argDirs = rawStr.Split(splitChar); + for (int i = 0; i < argDirs.Length; i++) + { + string dir = Path.GetFullPath(argDirs[i]).TrimEnd(Path.DirectorySeparatorChar); + strs.Add(dir); + } } return strs; } - - private static IList mkStrings(string rawStr) { + + private static IList mkStrings(string rawStr) + { IList strs = new List(); - char splitChar = rawStr.IndexOf(';') >= 0 ? ';' : '|'; - string[] strDirs = rawStr.Split(splitChar); - for (int i = 0; i < strDirs.Length; i++) - strs.Add(strDirs[i]); + if (!String.IsNullOrEmpty(rawStr)) + { + char splitChar = rawStr.IndexOf(';') >= 0 ? ';' : '|'; + string[] strDirs = rawStr.Split(splitChar); + for (int i = 0; i < strDirs.Length; i++) + strs.Add(strDirs[i]); + } return strs; } + + private static bool parseBoolOption(String opt) + { + bool ret = true; + // counter intuitive, but captures plain -opt as opt is true + if (!String.IsNullOrEmpty(opt)) + { + try + { + ret = Convert.ToBoolean(opt); + } + catch + { + // Not true/false. try as int + try + { + ret = Convert.ToBoolean(Int32.Parse(opt)); + } + catch + { + // ok give in + } + } + } + return ret; + } + private static void updateFromConfigFile(string inifile, CS2JSettings cfg) + { + try + { + IConfigSource source = new IniConfigSource(Path.GetFullPath(inifile)); + IConfig general = source.Configs["General"]; + + // Debug / Verbosity + cfg.OptVerbosity.SetIfDefault(general.GetInt("verbose", cfg.Verbosity)); + cfg.OptDebugLevel.SetIfDefault(general.GetInt("debug", cfg.DebugLevel)); + cfg.OptDebugTemplateExtraction.SetIfDefault(general.GetBoolean("debug-template-extraction", cfg.DebugTemplateExtraction)); + + // Control warnings + cfg.OptWarnings.SetIfDefault(general.GetBoolean("warnings", cfg.Warnings)); + cfg.OptWarningsFailedResolves.SetIfDefault(general.GetBoolean("warnings-resolve-failures", cfg.WarningsFailedResolves)); + + // Dump internal structures + cfg.OptDumpCSharp.SetIfDefault(general.GetBoolean("show-csharp", cfg.DumpCSharp)); + cfg.OptDumpJavaSyntax.SetIfDefault(general.GetBoolean("show-javasyntax", cfg.DumpJavaSyntax)); + cfg.OptDumpJava.SetIfDefault(general.GetBoolean("show-java", cfg.DumpJava)); + cfg.OptDisplayTokens.SetIfDefault(general.GetBoolean("show-tokens", cfg.DisplayTokens)); + + // Preprocessor tokens + cfg.OptMacroDefines.SetIfDefault(mkStrings(general.Get("define", ""))); + + // Output enum list, parsed translation files + cfg.OptDumpEnums.SetIfDefault(general.GetBoolean("dump-enums", cfg.DumpEnums)); + cfg.OptEnumDir.SetIfDefault(Path.Combine(Directory.GetCurrentDirectory(), general.Get("out-enum-dir", cfg.EnumDir))); + + cfg.OptDumpXmls.SetIfDefault(general.GetBoolean("dump-xmls", cfg.DumpXmls)); + cfg.OptXmlDir.SetIfDefault(Path.Combine(Directory.GetCurrentDirectory(), general.Get("out-xml-dir", cfg.XmlDir))); + + // Source and output for translation files and templates + cfg.OptCheatDir.SetIfDefault(Path.Combine(Directory.GetCurrentDirectory(), general.Get("cheat-dir", cfg.CheatDir))); + + cfg.OptNetRoot.SetIfDefault(mkDirectories(general.Get("net-templates-dir", ""))); + cfg.OptExNetRoot.SetIfDefault(mkDirectories(general.Get("ex-net-templates-dir", ""))); + cfg.OptNetSchemaDir.SetIfDefault(mkDirectories(general.Get("net-schema-dir", ""))); + + cfg.OptAppRoot.SetIfDefault(mkDirectories(general.Get("app-dir", ""))); + cfg.OptExAppRoot.SetIfDefault(mkDirectories(general.Get("ex-app-dir", ""))); + + cfg.OptCsDir.SetIfDefault(mkDirectories(general.Get("cs-dir", ""))); + cfg.OptExCsDir.SetIfDefault(mkDirectories(general.Get("ex-cs-dir", ""))); + + cfg.OptOutDir.SetIfDefault(Path.Combine(Directory.GetCurrentDirectory(), general.Get("out-java-dir", cfg.OutDir))); + + // Enable Alternate Translation Templates + cfg.OptAltTranslations.SetIfDefault(mkStrings(general.Get("alt-translations", ""))); + + // Boolean flags + cfg.OptTranslatorKeepParens.SetIfDefault(general.GetBoolean("keep-parens", cfg.TranslatorKeepParens)); + cfg.OptTranslatorAddTimeStamp.SetIfDefault(general.GetBoolean("timestamp-files", cfg.TranslatorAddTimeStamp)); + cfg.OptTranslatorBlanketThrow.SetIfDefault(general.GetBoolean("blanket-throw", cfg.TranslatorBlanketThrow)); + cfg.OptTranslatorExceptionIsThrowable.SetIfDefault(general.GetBoolean("exception-is-throwable", cfg.TranslatorExceptionIsThrowable)); + cfg.OptTranslatorMakeJavadocComments.SetIfDefault(general.GetBoolean("make-javadoc-comments", cfg.TranslatorMakeJavadocComments)); + cfg.OptTranslatorMakeJavaNamingConventions.SetIfDefault(general.GetBoolean("make-java-naming-conventions", cfg.TranslatorMakeJavaNamingConventions)); + + IConfig experimental = source.Configs["Experimental"]; + + cfg.OptEnumsAsNumericConsts.SetIfDefault(general.GetBoolean("enums-to-numeric-consts", cfg.EnumsAsNumericConsts)); + cfg.OptUnsignedNumbersToSigned.SetIfDefault(general.GetBoolean("unsigned-to-signed", cfg.UnsignedNumbersToSigned)); + cfg.OptUnsignedNumbersToBiggerSignedNumbers.SetIfDefault(general.GetBoolean("unsigned-to-bigger-signed", cfg.UnsignedNumbersToBiggerSignedNumbers)); + cfg.OptExperimentalTransforms.SetIfDefault(general.GetBoolean("transforms", cfg.ExperimentalTransforms)); + + IConfig internl = source.Configs["Internal"]; + + cfg.OptInternalIsJavaish.SetIfDefault(internl.GetBoolean("isjavaish", cfg.InternalIsJavaish)); + } + catch (IOException) + { + Console.WriteLine("ERROR: Could not read configuration file " + Path.GetFullPath(inifile)); + doEarlyExit = true; + } + } + public static void CS2JMain(string[] args) { long startTime = DateTime.Now.Ticks; - IList csDir = new List(); XmlTextWriter enumXmlWriter = null; bool doHelp = false; - bool doEarlyExit = false; // Use a try/catch block for parser exceptions try @@ -118,43 +228,44 @@ namespace Twiglet.CS2J.Translator if (cfg.Verbosity >= 2) Console.Error.WriteLine("Parsing Command Line Arguments..."); OptionSet p = new OptionSet () - .Add ("v", v => cfg.Verbosity++) + .Add ("config=", f => updateFromConfigFile(f, cfg)) + .Add ("v", v => cfg.Verbosity = cfg.OptVerbosity.IsDefault ? 1 : cfg.Verbosity + 1) .Add ("debug=", v => cfg.DebugLevel = Int32.Parse(v)) - .Add ("debug-template-extraction=", v => cfg.DebugTemplateExtraction = Boolean.Parse(v)) - .Add ("warnings=", v => cfg.Warnings = Boolean.Parse(v)) - .Add ("warnings-resolve-failures=", v => cfg.WarningsFailedResolves = Boolean.Parse(v)) - .Add ("version", v => showVersion()) + .Add ("debug-template-extraction:", v => cfg.DebugTemplateExtraction = parseBoolOption(v)) + .Add ("warnings:", v => cfg.Warnings = parseBoolOption(v)) + .Add ("warnings-resolve-failures:", v => cfg.WarningsFailedResolves = parseBoolOption(v)) + .Add ("version:", v => { if (parseBoolOption(v)) showVersion(); }) .Add ("help|h|?", v => {doHelp = true; doEarlyExit = true; }) - .Add ("showcsharp", v => cfg.DumpCSharp = true) - .Add ("showjava", v => cfg.DumpJava = true) - .Add ("showjavasyntax", v => cfg.DumpJavaSyntax = true) - .Add ("showtokens", v => cfg.DisplayTokens = true) - .Add ("D=", def => cfg.MacroDefines.Add(def)) - .Add ("dumpenums", v => cfg.DumpEnums = true) - .Add ("enumdir=", dir => cfg.EnumDir = Path.Combine(Directory.GetCurrentDirectory(), dir)) - .Add ("dumpxmls", v => cfg.DumpXmls = true) - .Add ("xmldir=", dir => cfg.XmlDir = Path.Combine(Directory.GetCurrentDirectory(), dir)) - .Add ("odir=", dir => cfg.OutDir = dir) - .Add ("cheatdir=", dir => cfg.CheatDir = dir) - .Add("netdir=", dirs => cfg.NetRoot = mkDirectories(dirs)) - .Add("exnetdir=", dirs => cfg.ExNetRoot = mkDirectories(dirs)) - .Add("netschemadir=", dirs => cfg.NetSchemaDir = mkDirectories(dirs)) - .Add("appdir=", dirs => cfg.AppRoot = mkDirectories(dirs)) - .Add("exappdir=", dirs => cfg.ExAppRoot = mkDirectories(dirs)) - .Add("csdir=", dirs => csDir = mkDirectories(dirs)) - .Add("excsdir=", dirs => cfg.Exclude = mkDirectories(dirs)) - .Add("alt-translations=", alts => cfg.AltTranslations = mkStrings(alts)) - .Add ("translator-keep-parens=", v => cfg.TranslatorKeepParens = Boolean.Parse(v)) - .Add ("translator-timestamp-files=", v => cfg.TranslatorAddTimeStamp = Boolean.Parse(v)) - .Add ("translator-blanket-throw=", v => cfg.TranslatorBlanketThrow = Boolean.Parse(v)) - .Add ("translator-exception-is-throwable=", v => cfg.TranslatorExceptionIsThrowable = Boolean.Parse(v)) - .Add ("translator-make-javadoc-comments=", v => cfg.TranslatorMakeJavadocComments = Boolean.Parse(v)) - .Add ("translator-make-java-naming-conventions=", v => cfg.TranslatorMakeJavaNamingConventions = Boolean.Parse(v)) - .Add ("experimental-enums-numericconsts=", v => cfg.EnumsAsNumericConsts = Boolean.Parse(v)) - .Add ("experimental-unsigned-to-signed=", v => cfg.UnsignedNumbersToSigned = Boolean.Parse(v)) - .Add ("experimental-unsigned-to-bigger-signed=", v => cfg.UnsignedNumbersToBiggerSignedNumbers = Boolean.Parse(v)) - .Add ("experimental-transforms=", v => cfg.ExperimentalTransforms = Boolean.Parse(v)) - .Add ("internal-isjavaish", v => cfg.InternalIsJavaish = true) + .Add ("show-csharp:", v => cfg.DumpCSharp = parseBoolOption(v)) + .Add ("show-java:", v => cfg.DumpJava = parseBoolOption(v)) + .Add ("show-javasyntax:", v => cfg.DumpJavaSyntax = parseBoolOption(v)) + .Add ("show-tokens:", v => cfg.DisplayTokens = parseBoolOption(v)) + .Add ("D=", def => cfg.OptMacroDefines.Add(mkStrings(def))) + .Add ("dump-enums:", v => cfg.DumpEnums = parseBoolOption(v)) + .Add ("out-enum-dir=", dir => cfg.EnumDir = Path.Combine(Directory.GetCurrentDirectory(), dir)) + .Add ("dump-xmls:", v => cfg.DumpXmls = parseBoolOption(v)) + .Add ("out-xml-dir=", dir => cfg.XmlDir = Path.Combine(Directory.GetCurrentDirectory(), dir)) + .Add ("out-java-dir=", dir => cfg.OutDir = dir) + .Add ("cheat-dir=", dir => cfg.CheatDir = dir) + .Add ("net-templates-dir=", dirs => cfg.OptNetRoot.Add(mkDirectories(dirs))) + .Add ("ex-net-templates-dir=", dirs => cfg.OptExNetRoot.Add(mkDirectories(dirs))) + .Add ("net-schema-dir=", dirs => cfg.OptNetSchemaDir.Add(mkDirectories(dirs))) + .Add ("app-dir=", dirs => cfg.OptAppRoot.Add(mkDirectories(dirs))) + .Add ("ex-app-dir=", dirs => cfg.OptExAppRoot.Add(mkDirectories(dirs))) + .Add ("cs-dir=", dirs => cfg.OptCsDir.Add(mkDirectories(dirs))) + .Add ("ex-cs-dir=", dirs => cfg.OptExCsDir.Add(mkDirectories(dirs))) + .Add ("alt-translations=", alts => cfg.OptAltTranslations.Add(mkStrings(alts))) + .Add ("keep-parens:", v => cfg.TranslatorKeepParens = parseBoolOption(v)) + .Add ("timestamp-files:", v => cfg.TranslatorAddTimeStamp = parseBoolOption(v)) + .Add ("blanket-throw:", v => cfg.TranslatorBlanketThrow = parseBoolOption(v)) + .Add ("exception-is-throwable:", v => cfg.TranslatorExceptionIsThrowable = parseBoolOption(v)) + .Add ("make-javadoc-comments:", v => cfg.TranslatorMakeJavadocComments = parseBoolOption(v)) + .Add ("make-java-naming-conventions:", v => cfg.TranslatorMakeJavaNamingConventions = parseBoolOption(v)) + .Add ("experimental-enums-to-numeric-consts:", v => cfg.EnumsAsNumericConsts = parseBoolOption(v)) + .Add ("experimental-unsigned-to-signed:", v => cfg.UnsignedNumbersToSigned = parseBoolOption(v)) + .Add ("experimental-unsigned-to-bigger-signed:", v => cfg.UnsignedNumbersToBiggerSignedNumbers = parseBoolOption(v)) + .Add ("experimental-transforms:", v => cfg.ExperimentalTransforms = parseBoolOption(v)) + .Add ("internal-isjavaish:", v => cfg.InternalIsJavaish = parseBoolOption(v)) ; //TODO: fix enum dump @@ -163,21 +274,21 @@ namespace Twiglet.CS2J.Translator { if (s.StartsWith("-") || s.StartsWith("/")) { - Console.WriteLine("Unrecognized Option: " + s); + Console.WriteLine("ERROR: Unrecognized Option: " + s); doEarlyExit = true; } else { - csDir = mkDirectories(s); + cfg.OptCsDir.Add(mkDirectories(s)); } } if (cfg.Verbosity > 0) showVersion(); if (doHelp) showUsage(); - if (csDir == null || csDir.Count == 0) { + if (cfg.CsDir == null || cfg.CsDir.Count == 0) { // No work - Console.WriteLine("Please specify files to translate with -csdir option"); + Console.WriteLine("Please specify files to translate with -cs-dir option"); doEarlyExit = true; } @@ -228,7 +339,7 @@ namespace Twiglet.CS2J.Translator if (cfg.AppRoot.Count == 0) { // By default translation target is application root - foreach (string s in csDir) + foreach (string s in cfg.CsDir) { cfg.AppRoot.Add(s); } @@ -268,8 +379,8 @@ namespace Twiglet.CS2J.Translator templates = new StringTemplateGroup(new StringReader(Templates.JavaTemplateGroup)); } - foreach (string r in csDir) - doFile(r, ".cs", translateFile, cfg.Exclude); // translate it + foreach (string r in cfg.CsDir) + doFile(r, ".cs", translateFile, cfg.ExCsDir); // translate it if (cfg.DebugLevel >= 1 && partialTypes.Count > 0) Console.Out.WriteLine("Writing out collected partial types"); foreach (KeyValuePair entry in partialTypes) diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs index 6fe288d..66ac953 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs @@ -32,17 +32,36 @@ namespace Twiglet.CS2J.Translator isDefault = false; } } - public void setIfDefault(T newVal) + public void SetIfDefault(T newVal) + { + if (IsDefault) + { + optValue = newVal; + } + } + + public void SetDefault(T newVal) + { + optValue = newVal; + } + + } + + public class CS2JOptionStrings : CS2JOption> + { + public void Add(IList newVal) { if (IsDefault) { Value = newVal; } - } - - public void setDefault(T newVal) - { - optValue = newVal; + else + { + foreach (string s in newVal) + { + Value.Add(s); + } + } } } @@ -202,8 +221,8 @@ namespace Twiglet.CS2J.Translator } // NetRoot - private CS2JOption> optNetRoot = new CS2JOption>(); - public CS2JOption> OptNetRoot { + private CS2JOptionStrings optNetRoot = new CS2JOptionStrings(); + public CS2JOptionStrings OptNetRoot { get { return optNetRoot; @@ -221,8 +240,8 @@ namespace Twiglet.CS2J.Translator } // ExNetRoot - private CS2JOption> optExNetRoot = new CS2JOption>(); - public CS2JOption> OptExNetRoot { + private CS2JOptionStrings optExNetRoot = new CS2JOptionStrings(); + public CS2JOptionStrings OptExNetRoot { get { return optExNetRoot; @@ -240,8 +259,8 @@ namespace Twiglet.CS2J.Translator } // NetSchemaDir - private CS2JOption> optNetSchemaDir = new CS2JOption>(); - public CS2JOption> OptNetSchemaDir { + private CS2JOptionStrings optNetSchemaDir = new CS2JOptionStrings(); + public CS2JOptionStrings OptNetSchemaDir { get { return optNetSchemaDir; @@ -259,8 +278,8 @@ namespace Twiglet.CS2J.Translator } // AppRoot - private CS2JOption> optAppRoot = new CS2JOption>(); - public CS2JOption> OptAppRoot { + private CS2JOptionStrings optAppRoot = new CS2JOptionStrings(); + public CS2JOptionStrings OptAppRoot { get { return optAppRoot; @@ -278,8 +297,8 @@ namespace Twiglet.CS2J.Translator } // ExAppRoot - private CS2JOption> optExAppRoot = new CS2JOption>(); - public CS2JOption> OptExAppRoot { + private CS2JOptionStrings optExAppRoot = new CS2JOptionStrings(); + public CS2JOptionStrings OptExAppRoot { get { return optExAppRoot; @@ -296,28 +315,47 @@ namespace Twiglet.CS2J.Translator } } - // Exclude - private CS2JOption> optExclude = new CS2JOption>(); - public CS2JOption> OptExclude { + // CsDir + private CS2JOptionStrings optCsDir = new CS2JOptionStrings(); + public CS2JOptionStrings OptCsDir { get { - return optExclude; + return optCsDir; } } - public IList Exclude { + public IList CsDir { get { - return optExclude.Value; + return optCsDir.Value; } set { - optExclude.Value = value; + optCsDir.Value = value; + } + } + + // ExCsDir + private CS2JOptionStrings optExCsDir = new CS2JOptionStrings(); + public CS2JOptionStrings OptExCsDir { + get + { + return optExCsDir; + } + } + public IList ExCsDir { + get + { + return optExCsDir.Value; + } + set + { + optExCsDir.Value = value; } } // MacroDefines - private CS2JOption> optMacroDefines = new CS2JOption>(); - public CS2JOption> OptMacroDefines { + private CS2JOptionStrings optMacroDefines = new CS2JOptionStrings(); + public CS2JOptionStrings OptMacroDefines { get { return optMacroDefines; @@ -335,8 +373,8 @@ namespace Twiglet.CS2J.Translator } // AltTranslations - private CS2JOption> optAltTranslations = new CS2JOption>(); - public CS2JOption> OptAltTranslations { + private CS2JOptionStrings optAltTranslations = new CS2JOptionStrings(); + public CS2JOptionStrings OptAltTranslations { get { return optAltTranslations; @@ -717,48 +755,49 @@ namespace Twiglet.CS2J.Translator public CS2JSettings () { - OptDisplayTokens.setDefault(false); + OptDisplayTokens.SetDefault(false); // dump parse trees to stdout - OptDumpCSharp.setDefault(false); - OptDumpJavaSyntax.setDefault(false); - OptDumpJava.setDefault(false); + OptDumpCSharp.SetDefault(false); + OptDumpJavaSyntax.SetDefault(false); + OptDumpJava.SetDefault(false); - OptDumpXmls.setDefault(false); - OptDumpEnums.setDefault(false); - OptOutDir.setDefault(Directory.GetCurrentDirectory()); - OptCheatDir.setDefault(""); - OptNetRoot.setDefault(new List()); - OptExNetRoot.setDefault(new List()); - OptNetSchemaDir.setDefault(new List()); - OptAppRoot.setDefault(new List()); - OptExAppRoot.setDefault(new List()); - OptExclude.setDefault(new List()); - OptMacroDefines.setDefault(new List()); - OptAltTranslations.setDefault(new List()); - OptXmlDir.setDefault(Path.Combine(Directory.GetCurrentDirectory(), "tmpXMLs")); - OptEnumDir.setDefault(Path.Combine(Directory.GetCurrentDirectory(), "enums")); - OptKeyFile.setDefault(null); - OptVerbosity.setDefault(0); - OptDebugTemplateExtraction.setDefault(true); - OptDebugLevel.setDefault(1); - OptWarnings.setDefault(true); - OptWarningsFailedResolves.setDefault(false); + OptDumpXmls.SetDefault(false); + OptDumpEnums.SetDefault(false); + OptOutDir.SetDefault(Directory.GetCurrentDirectory()); + OptCheatDir.SetDefault(""); + OptNetRoot.SetDefault(new List()); + OptExNetRoot.SetDefault(new List()); + OptNetSchemaDir.SetDefault(new List()); + OptAppRoot.SetDefault(new List()); + OptExAppRoot.SetDefault(new List()); + OptCsDir.SetDefault(new List()); + OptExCsDir.SetDefault(new List()); + OptMacroDefines.SetDefault(new List()); + OptAltTranslations.SetDefault(new List()); + OptXmlDir.SetDefault(Path.Combine(Directory.GetCurrentDirectory(), "tmpXMLs")); + OptEnumDir.SetDefault(Path.Combine(Directory.GetCurrentDirectory(), "enums")); + OptKeyFile.SetDefault(null); + OptVerbosity.SetDefault(0); + OptDebugTemplateExtraction.SetDefault(true); + OptDebugLevel.SetDefault(1); + OptWarnings.SetDefault(true); + OptWarningsFailedResolves.SetDefault(false); - OptTranslatorKeepParens.setDefault(true); - OptTranslatorAddTimeStamp.setDefault(true); - OptTranslatorExceptionIsThrowable.setDefault(false); - OptTranslatorBlanketThrow.setDefault(true); - OptTranslatorMakeJavadocComments.setDefault(true); - OptTranslatorMakeJavaNamingConventions.setDefault(true); + OptTranslatorKeepParens.SetDefault(true); + OptTranslatorAddTimeStamp.SetDefault(true); + OptTranslatorExceptionIsThrowable.SetDefault(false); + OptTranslatorBlanketThrow.SetDefault(true); + OptTranslatorMakeJavadocComments.SetDefault(true); + OptTranslatorMakeJavaNamingConventions.SetDefault(true); - OptEnumsAsNumericConsts.setDefault(false); - OptUnsignedNumbersToSigned.setDefault(false); - OptUnsignedNumbersToBiggerSignedNumbers.setDefault(false); + OptEnumsAsNumericConsts.SetDefault(false); + OptUnsignedNumbersToSigned.SetDefault(false); + OptUnsignedNumbersToBiggerSignedNumbers.SetDefault(false); - OptExperimentalTransforms.setDefault(false); + OptExperimentalTransforms.SetDefault(false); - OptInternalIsJavaish.setDefault(false); + OptInternalIsJavaish.SetDefault(false); } } } diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTranslator.csproj b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTranslator.csproj index c64948b..43af50e 100755 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTranslator.csproj +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTranslator.csproj @@ -11,8 +11,6 @@ CS2JTranslator cs2j v3.5 - - 512 @@ -24,7 +22,7 @@ DEBUG;TRACE prompt 4 - --debug 5 -experimental-transforms=true -translator-timestamp-files=false -translator-keep-parens=false -netdir=/Users/keving/gitrepos/cs2j/CS2JLibrary/NetFramework/ -dumpxmls -xmldir=/Users/keving/tmp/xml/libomv -odir=/Users/keving/tmp/java/libomv/src -csdir=/Users/keving/Projects/libomv-0.8.3-source/Programs/VisualParamGenerator/ -excsdir=/Users/keving/Projects/libomv-0.8.3-source/Programs/VisualParamGenerator/template.cs + -config /Users/keving/tmp/secs2j.ini x86 @@ -97,6 +95,10 @@ {E6ACBB37-AF38-45E1-B399-0CEE63809A15} NDesk.Options + + {CB5C2235-43B2-4B37-B866-D5D33F0E68B0} + Nini +