mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
add option -experimental-unsigned-to-bigger-signed
This commit is contained in:
parent
cf49dd694f
commit
47607a041e
76
CS2JLibrary/NetFramework/System/SByte.xml
Normal file
76
CS2JLibrary/NetFramework/System/SByte.xml
Normal file
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
|
||||
This file is
|
||||
|
||||
Copyright 2007,2008,2009,2010 Rustici Software, LLC
|
||||
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com)
|
||||
|
||||
-->
|
||||
<Class xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:www.twigletsoftware.com:schemas:txtemplate:1:0">
|
||||
<Imports />
|
||||
<Java>byte</Java>
|
||||
<Name>System.SByte</Name>
|
||||
<Uses />
|
||||
<Inherits>
|
||||
<Type>System.Number</Type>
|
||||
<Type>System.IComparable</Type>
|
||||
<Type>System.IFormattable</Type>
|
||||
<Type>System.IConvertible</Type>
|
||||
</Inherits>
|
||||
<Methods>
|
||||
<Method>
|
||||
<Imports />
|
||||
<Java>String.valueOf(${this})</Java>
|
||||
<Params />
|
||||
<Name>ToString</Name>
|
||||
<Return>System.String</Return>
|
||||
</Method>
|
||||
<Method>
|
||||
<Imports />
|
||||
<Java>Byte.valueOf(${str})</Java>
|
||||
<Params>
|
||||
<Param>
|
||||
<Type>System.String</Type>
|
||||
<Name>str</Name>
|
||||
</Param>
|
||||
</Params>
|
||||
<Name>Parse</Name>
|
||||
<Return>System.Byte</Return>
|
||||
</Method>
|
||||
</Methods>
|
||||
<Properties>
|
||||
<Property>
|
||||
<Imports />
|
||||
<Java>Byte.MIN_VALUE</Java>
|
||||
<Type>System.Byte</Type>
|
||||
<Name>MinValue</Name>
|
||||
<Get>Byte.MIN_VALUE</Get>
|
||||
<Set>${this:16}.setMinValue(${value})</Set>
|
||||
</Property>
|
||||
<Property>
|
||||
<Imports />
|
||||
<Java>Byte.MAX_VALUE</Java>
|
||||
<Type>System.Byte</Type>
|
||||
<Name>MaxValue</Name>
|
||||
<Get>Byte.MAX_VALUE</Get>
|
||||
<Set>${this:16}.setMaxValue(${value})</Set>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events />
|
||||
<Indexers />
|
||||
<Constructors />
|
||||
<Fields />
|
||||
<Casts>
|
||||
<!--
|
||||
<Cast>
|
||||
<Imports />
|
||||
<Java>((Number)${expr}).byteValue()</Java>
|
||||
<From>System.Object</From>
|
||||
<To>System.Byte</To>
|
||||
</Cast>
|
||||
-->
|
||||
</Casts>
|
||||
<UnaryOps />
|
||||
<BinaryOps />
|
||||
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>9UV0KDy27dm2PgLpXQYexqZHgrI=</DigestValue></Reference></SignedInfo><SignatureValue>hK2py13asxC+KdyfudqYmjri02cTXjfeJE0dZPGWELurbR2AdYFni3yJapmhPErkXLGfmjVBr9nr/mWl+Xq1NbmYhfV20A5+AnKwcA9V6qhQb/qLg10+J0HpCQItZOgUmGXjkZ3uqMEGxHuyUilxYoYz6HPOl0OdU3UlZl8kxvg=</SignatureValue></Signature></Class>
|
@ -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)
|
||||
;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -474,6 +474,14 @@ scope TypeContext {
|
||||
{"ushort", "short"}
|
||||
};
|
||||
|
||||
Dictionary<string, string> predefined_embiggen_unsigned_type_map = new Dictionary<string, string>()
|
||||
{
|
||||
{"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]
|
||||
|
@ -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"; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user