1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

make has_boxed_rep explicit in translation templates for primitive types, "guessing" wasn't working out

This commit is contained in:
Kevin Glynn 2011-10-12 10:30:57 +02:00
parent 63addf1b1c
commit a3b3e67d76
13 changed files with 22 additions and 14 deletions

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>boolean</Java> <Java>boolean</Java>
<BoxedJava>Boolean</BoxedJava> <BoxedJava>Boolean</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>byte</Java> <Java>byte</Java>
<BoxedJava>Byte</BoxedJava> <BoxedJava>Byte</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>char</Java> <Java>char</Java>
<BoxedJava>Character</BoxedJava> <BoxedJava>Character</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>double</Java> <Java>double</Java>
<BoxedJava>Double</BoxedJava> <BoxedJava>Double</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>double</Java> <Java>double</Java>
<BoxedJava>Double</BoxedJava> <BoxedJava>Double</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>short</Java> <Java>short</Java>
<BoxedJava>Short</BoxedJava> <BoxedJava>Short</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>int</Java> <Java>int</Java>
<BoxedJava>Integer</BoxedJava> <BoxedJava>Integer</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>long</Java> <Java>long</Java>
<BoxedJava>Long</BoxedJava> <BoxedJava>Long</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>byte</Java> <Java>byte</Java>
<BoxedJava>Byte</BoxedJava> <BoxedJava>Byte</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>float</Java> <Java>float</Java>
<BoxedJava>Float</BoxedJava> <BoxedJava>Float</BoxedJava>

View File

@ -7,7 +7,7 @@
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com) 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"> <Class has_boxed_rep="true" 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 /> <Imports />
<Java>long</Java> <Java>long</Java>
<BoxedJava>Long</BoxedJava> <BoxedJava>Long</BoxedJava>

View File

@ -1998,12 +1998,18 @@ namespace Twiglet.CS2J.Translator.TypeRep
// True if we have a separate representation for boxed and unboxed versions // True if we have a separate representation for boxed and unboxed versions
// (true for primitive types like int) // (true for primitive types like int)
[XmlIgnore] private bool hasBoxedRep = false;
[XmlAttribute("has_boxed_rep")]
[System.ComponentModel.DefaultValueAttribute(false)]
public bool HasBoxedRep public bool HasBoxedRep
{ {
get get
{ {
return Java != BoxedJava; return hasBoxedRep;
}
set
{
hasBoxedRep = value;
} }
} }
@ -2132,6 +2138,7 @@ namespace Twiglet.CS2J.Translator.TypeRep
IsUnboxedType = copyFrom.IsUnboxedType; IsUnboxedType = copyFrom.IsUnboxedType;
Variant = copyFrom.Variant; Variant = copyFrom.Variant;
BoxedJava = copyFrom.BoxedJava; BoxedJava = copyFrom.BoxedJava;
HasBoxedRep = copyFrom.HasBoxedRep;
} }
protected TypeRepTemplate(string tName, string[] tParams, string[] usePath, AliasRepTemplate[] aliases, string[] imports, string javaTemplate) protected TypeRepTemplate(string tName, string[] tParams, string[] usePath, AliasRepTemplate[] aliases, string[] imports, string javaTemplate)
@ -2212,6 +2219,7 @@ namespace Twiglet.CS2J.Translator.TypeRep
{ {
InstantiatedTypes[i] = args[TypeParams[i]]; InstantiatedTypes[i] = args[TypeParams[i]];
} }
BoxedJava = TemplateUtilities.SubstituteInType(BoxedJava,args);
base.Apply(args); base.Apply(args);
} }

View File

@ -1815,7 +1815,7 @@ type returns [TypeRepTemplate dotNetType, List<CommonTree> argTrees, CommonTree
$boxedTree = $magicBoxedType.tree; $boxedTree = $magicBoxedType.tree;
} }
} }
-> { $PrimitiveRep::primitiveTypeAsObject && !hasRank && !String.IsNullOrEmpty($dotNetType.BoxedJava) }? ^(TYPE[$t.token, "TYPE"] IDENTIFIER[$t.token,$dotNetType.BoxedJava] '*'* '?'?) -> { $PrimitiveRep::primitiveTypeAsObject && !hasRank && $dotNetType.HasBoxedRep && !String.IsNullOrEmpty($dotNetType.BoxedJava) }? ^(TYPE[$t.token, "TYPE"] IDENTIFIER[$t.token,$dotNetType.BoxedJava] '*'* '?'?)
-> ^(TYPE[$t.token, "TYPE"] predefined_type? type_name? 'void'? rank_specifiers? '*'* '?'?) -> ^(TYPE[$t.token, "TYPE"] predefined_type? type_name? 'void'? rank_specifiers? '*'* '?'?)
; ;