diff --git a/CS2JLibrary/NetFramework/System/SByte.xml b/CS2JLibrary/NetFramework/System/SByte.xml new file mode 100644 index 0000000..e4e5fe8 --- /dev/null +++ b/CS2JLibrary/NetFramework/System/SByte.xml @@ -0,0 +1,76 @@ + + + + + byte + System.SByte + + + System.Number + System.IComparable + System.IFormattable + System.IConvertible + + + + + String.valueOf(${this}) + + ToString + System.String + + + + Byte.valueOf(${str}) + + + System.String + str + + + Parse + System.Byte + + + + + + Byte.MIN_VALUE + System.Byte + MinValue + Byte.MIN_VALUE + ${this:16}.setMinValue(${value}) + + + + Byte.MAX_VALUE + System.Byte + MaxValue + Byte.MAX_VALUE + ${this:16}.setMaxValue(${value}) + + + + + + + + + + + +9UV0KDy27dm2PgLpXQYexqZHgrI=hK2py13asxC+KdyfudqYmjri02cTXjfeJE0dZPGWELurbR2AdYFni3yJapmhPErkXLGfmjVBr9nr/mWl+Xq1NbmYhfV20A5+AnKwcA9V6qhQb/qLg10+J0HpCQItZOgUmGXjkZ3uqMEGxHuyUilxYoYz6HPOl0OdU3UlZl8kxvg= diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs index 4c42ac8..b874c69 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JMain.cs @@ -141,7 +141,8 @@ namespace Twiglet.CS2J.Translator .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-translatesigned=", v => cfg.UnsignedNumbersToSigned = 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) ; diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs index d3f3ec4..3a29fb8 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JMain/CS2JSettings.cs @@ -85,6 +85,11 @@ namespace Twiglet.CS2J.Translator get; set; } + public bool UnsignedNumbersToBiggerSignedNumbers + { + get; set; + } + public bool ExperimentalTransforms { get; set; @@ -135,6 +140,7 @@ namespace Twiglet.CS2J.Translator EnumsAsNumericConsts = false; UnsignedNumbersToSigned = false; + UnsignedNumbersToBiggerSignedNumbers = false; ExperimentalTransforms = false; diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g index d01b753..aa0d79a 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/JavaMaker.g @@ -474,6 +474,14 @@ scope TypeContext { {"ushort", "short"} }; + Dictionary predefined_embiggen_unsigned_type_map = new Dictionary() + { + {"byte", "short"}, + {"ushort", "int"}, + {"uint", "long"}, + {"ulong", "long"} + }; + protected CommonTree mkHole() { return mkHole(null); } @@ -2029,12 +2037,18 @@ predefined_type returns [string thetext] if (predefined_type_map.TryGetValue($predefined_type.tree.Token.Text, out newText)) { $predefined_type.tree.Token.Text = newText; } - if (Cfg.UnsignedNumbersToSigned && predefined_unsigned_type_map.TryGetValue($predefined_type.tree.Token.Text, out newText)) { + if (Cfg.UnsignedNumbersToSigned && predefined_unsigned_type_map.TryGetValue($predefined_type.tree.Token.Text, out newText)) { + $predefined_type.tree.Token.Text = newText; + } + if (Cfg.UnsignedNumbersToBiggerSignedNumbers && predefined_embiggen_unsigned_type_map.TryGetValue($predefined_type.tree.Token.Text, out newText)) { $predefined_type.tree.Token.Text = newText; } }: 'bool' { $thetext = "System.Boolean"; } - | 'byte' { $thetext = "System.Byte"; } + | 'byte' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.SByte" : "System.Byte"; + if (Cfg.UnsignedNumbersToBiggerSignedNumbers) + $thetext = "System.Short"; + } | 'char' { $thetext = "System.Char"; } | 'decimal' { $thetext = "System.Decimal"; } | 'double' { $thetext = "System.Double"; } @@ -2045,9 +2059,18 @@ predefined_type returns [string thetext] | 'sbyte' { $thetext = "System.SByte"; } | 'short' { $thetext = "System.Int16"; } | 'string' { $thetext = "System.String"; } - | 'uint' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int32" : "System.UInt32"; } - | 'ulong' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int64" : "System.UInt64"; } - | 'ushort' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int16" : "System.UInt16"; } + | 'uint' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int32" : "System.UInt32"; + if (Cfg.UnsignedNumbersToBiggerSignedNumbers) + $thetext = "System.Int64"; + } + | 'ulong' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int64" : "System.UInt64"; + if (Cfg.UnsignedNumbersToBiggerSignedNumbers) + $thetext = "System.Int64"; + } + | 'ushort' { $thetext = Cfg.UnsignedNumbersToSigned ? "System.Int16" : "System.UInt16"; + if (Cfg.UnsignedNumbersToBiggerSignedNumbers) + $thetext = "System.Int32"; + } ; identifier returns [string thetext] diff --git a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g index cc9c080..bec63e5 100644 --- a/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g +++ b/CSharpTranslator/antlr3/src/CS2JTranslator/CS2JTransform/NetMaker.g @@ -3062,7 +3062,7 @@ predefined_type returns [TypeRepTemplate dotNetType] }: 'bool' { ns = "System.Boolean"; } - | 'byte' { ns = Cfg.UnsignedNumbersToSigned ? "System.Byte" : "System.Byte"; } + | 'byte' { ns = Cfg.UnsignedNumbersToSigned ? "System.Byte" : "System.SByte"; } | 'char' { ns = "System.Char"; } | 'decimal' { ns = "System.Decimal"; } | 'double' { ns = "System.Double"; }