java-gobject-introspection r65 - in trunk/src/org/gnome/gir: compiler gobject repository



Author: walters
Date: Tue Sep 23 22:52:42 2008
New Revision: 65
URL: http://svn.gnome.org/viewvc/java-gobject-introspection?rev=65&view=rev

Log:
Map new TIMET type to java.util.Date


Modified:
   trunk/src/org/gnome/gir/compiler/CodeFactory.java
   trunk/src/org/gnome/gir/gobject/GTypeMapper.java
   trunk/src/org/gnome/gir/repository/TypeTag.java

Modified: trunk/src/org/gnome/gir/compiler/CodeFactory.java
==============================================================================
--- trunk/src/org/gnome/gir/compiler/CodeFactory.java	(original)
+++ trunk/src/org/gnome/gir/compiler/CodeFactory.java	Tue Sep 23 22:52:42 2008
@@ -52,6 +52,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -259,6 +260,8 @@
 			return Type.FLOAT_TYPE;
 		if (tag == TypeTag.DOUBLE)
 			return Type.DOUBLE_TYPE;
+		if (tag == TypeTag.TIMET)
+			return Type.getType(Date.class);
 		if (tag == TypeTag.UTF8)
 			return Type.getType(String.class);
 		if (tag == TypeTag.FILENAME)

Modified: trunk/src/org/gnome/gir/gobject/GTypeMapper.java
==============================================================================
--- trunk/src/org/gnome/gir/gobject/GTypeMapper.java	(original)
+++ trunk/src/org/gnome/gir/gobject/GTypeMapper.java	Tue Sep 23 22:52:42 2008
@@ -48,6 +48,7 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.net.URI;
+import java.util.Date;
 
 import org.gnome.gir.gobject.annotation.ConstField;
 import org.gnome.gir.gobject.annotation.IncRef;
@@ -242,6 +243,22 @@
             return String.class;
         }
     };
+    
+    private TypeConverter dateConverter = new TypeConverter() {
+        
+        public Object toNative(Object arg, ToNativeContext context) {
+            return ((Date)arg).getTime();            
+        }
+
+        public Object fromNative(Object arg0, FromNativeContext arg1) {
+            return new Date(((Long) arg0));            
+        }
+
+        public Class<?> nativeType() {
+            return Pointer.SIZE == 8 ? Long.class : Integer.class;
+        }
+    };    
+    
     @SuppressWarnings("unchecked")
 	public FromNativeConverter getFromNativeConverter(Class type) {
         if (Enum.class.isAssignableFrom(type)) {
@@ -256,6 +273,8 @@
             return intptrConverter;
         } else if (GQuark.class == type) {
             return gquarkConverter;
+        } else if (Date.class.isAssignableFrom(type)) {
+        	return dateConverter;
         }
         return super.getFromNativeConverter(type);
     }
@@ -276,6 +295,8 @@
             return intptrConverter;
         } else if (GQuark.class == type) {
             return gquarkConverter;
+        } else if (Date.class.isAssignableFrom(type)) {
+        	return dateConverter;
         }
         return super.getToNativeConverter(type);
     }

Modified: trunk/src/org/gnome/gir/repository/TypeTag.java
==============================================================================
--- trunk/src/org/gnome/gir/repository/TypeTag.java	(original)
+++ trunk/src/org/gnome/gir/repository/TypeTag.java	Tue Sep 23 22:52:42 2008
@@ -43,7 +43,8 @@
 	SSIZE, 
 	SIZE, 
 	FLOAT, 
-	DOUBLE, 
+	DOUBLE,
+	TIMET,
 	UTF8, 
 	FILENAME, 
 	ARRAY, 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]