mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
support GetTypeCode()
This commit is contained in:
parent
b24ce95c44
commit
e7b093ba6c
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
|
|
||||||
This file is
|
This file is
|
||||||
@ -101,6 +101,20 @@
|
|||||||
<Name>InvokeMember</Name>
|
<Name>InvokeMember</Name>
|
||||||
<Return>System.Object</Return>
|
<Return>System.Object</Return>
|
||||||
</Method>
|
</Method>
|
||||||
|
<Method>
|
||||||
|
<Imports>
|
||||||
|
<Import>CS2JNet.System.TypeSupport</Import>
|
||||||
|
</Imports>
|
||||||
|
<Java>TypeSupport.GetTypeCode(${type})</Java>
|
||||||
|
<Params>
|
||||||
|
<Param>
|
||||||
|
<Type>System.Type</Type>
|
||||||
|
<Name>type</Name>
|
||||||
|
</Param>
|
||||||
|
</Params>
|
||||||
|
<Name>GetTypeCode</Name>
|
||||||
|
<Return>System.TypeCode</Return>
|
||||||
|
</Method>
|
||||||
</Methods>
|
</Methods>
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property>
|
<Property>
|
||||||
|
93
CS2JLibrary/NetFramework/System/TypeCode.xml
Normal file
93
CS2JLibrary/NetFramework/System/TypeCode.xml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?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)
|
||||||
|
|
||||||
|
-->
|
||||||
|
<Enum 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>
|
||||||
|
<Import>CS2JNet.System.TypeCode</Import>
|
||||||
|
</Imports>
|
||||||
|
<Java>TypeCode</Java>
|
||||||
|
<Name>System.TypeCode</Name>
|
||||||
|
<Inherits>
|
||||||
|
<Type>System.Enum</Type>
|
||||||
|
</Inherits>
|
||||||
|
<Members>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Empty</Java>
|
||||||
|
<Name>Empty</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Object</Java>
|
||||||
|
<Name>Object</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.DBNull</Java>
|
||||||
|
<Name>DBNull</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Boolean</Java>
|
||||||
|
<Name>Boolean</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Char</Java>
|
||||||
|
<Name>Char</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.SByte</Java>
|
||||||
|
<Name>SByte</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Byte</Java>
|
||||||
|
<Name>Byte</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Int16</Java>
|
||||||
|
<Name>Int16</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.UInt16</Java>
|
||||||
|
<Name>UInt16</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Int32</Java>
|
||||||
|
<Name>Int32</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.UInt32</Java>
|
||||||
|
<Name>UInt32</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Int64</Java>
|
||||||
|
<Name>Int64</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.UInt64</Java>
|
||||||
|
<Name>UInt64</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Single</Java>
|
||||||
|
<Name>Single</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Double</Java>
|
||||||
|
<Name>Double</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.Decimal</Java>
|
||||||
|
<Name>Decimal</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.DateTime</Java>
|
||||||
|
<Name>DateTime</Name>
|
||||||
|
</Member>
|
||||||
|
<Member>
|
||||||
|
<Java>${this:16}.String</Java>
|
||||||
|
<Name>String</Name>
|
||||||
|
</Member>
|
||||||
|
</Members>
|
||||||
|
<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>mo6ChmPjcAlAo0NBWLLZbsocykw=</DigestValue></Reference></SignedInfo><SignatureValue>RlUioSuamZxr9dmH+n+zDAoS31RAR3VRqGwbq0J8Ew28sRdZoXTjz2yJwWvSZIzMRNeMc0v8VZbLRMEM39bSKH51gWKuQ8TFyzTBwMzQDeDsNO5kzdxcE1DYGnZKKplPDKPM8n9mlpuDYginKU8dk3dA/CtPgAmc7X90AuPIhew=</SignatureValue></Signature></Enum>
|
46
CS2JLibrary/src/CS2JNet/System/TypeCode.java
Normal file
46
CS2JLibrary/src/CS2JNet/System/TypeCode.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2010,2011 Kevin Glynn (kevin.glynn@twigletsoftware.com)
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Author(s):
|
||||||
|
|
||||||
|
Kevin Glynn (kevin.glynn@twigletsoftware.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package CS2JNet.System;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author keving
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public enum TypeCode {
|
||||||
|
Empty, // A null reference.
|
||||||
|
Object, // A general type representing any reference or value type not explicitly represented by another TypeCode.
|
||||||
|
DBNull, // A database null (column) value.
|
||||||
|
Boolean, // A simple type representing Boolean values of true or false.
|
||||||
|
Char, // An integral type representing unsigned 16-bit integers with values between 0 and 65535. The set of possible values for the Char type corresponds to the Unicode character set.
|
||||||
|
SByte, // An integral type representing signed 8-bit integers with values between -128 and 127.
|
||||||
|
Byte, // An integral type representing unsigned 8-bit integers with values between 0 and 255.
|
||||||
|
Int16, // An integral type representing signed 16-bit integers with values between -32768 and 32767.
|
||||||
|
UInt16, // An integral type representing unsigned 16-bit integers with values between 0 and 65535.
|
||||||
|
Int32, // An integral type representing signed 32-bit integers with values between -2147483648 and 2147483647.
|
||||||
|
UInt32, // An integral type representing unsigned 32-bit integers with values between 0 and 4294967295.
|
||||||
|
Int64, // An integral type representing signed 64-bit integers with values between -9223372036854775808 and 9223372036854775807.
|
||||||
|
UInt64, // An integral type representing unsigned 64-bit integers with values between 0 and 18446744073709551615.
|
||||||
|
Single, // A floating point type representing values ranging from approximately 1.5 x 10 -45 to 3.4 x 10 38 with a precision of 7 digits.
|
||||||
|
Double, // A floating point type representing values ranging from approximately 5.0 x 10 -324 to 1.7 x 10 308 with a precision of 15-16 digits.
|
||||||
|
Decimal, // A simple type representing values ranging from 1.0 x 10 -28 to approximately 7.9 x 10 28 with 28-29 significant digits.
|
||||||
|
DateTime, // A type representing a date and time value.
|
||||||
|
String // A sealed class type representing Unicode character strings.
|
||||||
|
}
|
@ -32,6 +32,7 @@ import java.lang.reflect.InvocationTargetException;
|
|||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import CS2JNet.System.Reflection.BindingFlags;
|
import CS2JNet.System.Reflection.BindingFlags;
|
||||||
|
|
||||||
@ -169,9 +170,86 @@ public class TypeSupport {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Field GetField(Class myType,
|
public static Field GetField(Class myType,
|
||||||
String fieldName) throws NoSuchFieldException, Exception {
|
String fieldName) throws NoSuchFieldException, Exception {
|
||||||
return GetField(myType, fieldName, BindingFlags.getDefault());
|
return GetField(myType, fieldName, BindingFlags.getDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static TypeCode GetTypeCode(Class myType) {
|
||||||
|
TypeCode ret = TypeCode.Object;
|
||||||
|
|
||||||
|
if (myType.isPrimitive()) {
|
||||||
|
|
||||||
|
if (myType.equals(Boolean.TYPE)) {
|
||||||
|
ret = TypeCode.Boolean;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Character.TYPE)) {
|
||||||
|
ret = TypeCode.Char;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Byte.TYPE)) {
|
||||||
|
ret = TypeCode.Byte;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Short.TYPE)) {
|
||||||
|
ret = TypeCode.Int16;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Integer.TYPE)) {
|
||||||
|
ret = TypeCode.Int32;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Long.TYPE)) {
|
||||||
|
ret = TypeCode.Int64;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Float.TYPE)) {
|
||||||
|
ret = TypeCode.Single;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Double.TYPE)) {
|
||||||
|
ret = TypeCode.Double;
|
||||||
|
}
|
||||||
|
else if (myType.equals(Void.TYPE)) {
|
||||||
|
// No equivalent, return object I guess
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (myType.isInstance(Boolean.FALSE)) {
|
||||||
|
ret = TypeCode.Boolean;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Character.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Char;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Byte.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Byte;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Short.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Int16;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Integer.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Int32;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Long.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Int64;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Float.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Single;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(Double.MAX_VALUE)) {
|
||||||
|
ret = TypeCode.Double;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance(new Date())) {
|
||||||
|
ret = TypeCode.Double;
|
||||||
|
}
|
||||||
|
else if (myType.isInstance("")) {
|
||||||
|
ret = TypeCode.String;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Testmain(String[] args)
|
||||||
|
{
|
||||||
|
Boolean b = true;
|
||||||
|
int i = 0;
|
||||||
|
System.out.println(TypeCode.Boolean);
|
||||||
|
System.out.println(GetTypeCode(b.getClass()));
|
||||||
|
System.out.println(GetTypeCode(((Integer)i).getClass()));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user