[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34522] trunk/blender/intern/tools/pydna. py: pydna (expremental module), update for change in main struct and allow iterator to take non DNA types.

Campbell Barton ideasman42 at gmail.com
Thu Jan 27 04:37:11 CET 2011


Revision: 34522
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34522
Author:   campbellbarton
Date:     2011-01-27 03:37:10 +0000 (Thu, 27 Jan 2011)
Log Message:
-----------
pydna (expremental module), update for change in main struct and allow iterator to take non DNA types.

Modified Paths:
--------------
    trunk/blender/intern/tools/pydna.py

Modified: trunk/blender/intern/tools/pydna.py
===================================================================
--- trunk/blender/intern/tools/pydna.py	2011-01-27 01:29:40 UTC (rev 34521)
+++ trunk/blender/intern/tools/pydna.py	2011-01-27 03:37:10 UTC (rev 34522)
@@ -225,12 +225,21 @@
         type_cast_link = struct_dict[b'Link']
 
         def list_base_iter(self, type_name):
-            type_cast = struct_dict[type_name.encode('ASCII')]
-            try:
-                ret = type_cast_link.from_address(ctypes.addressof(self.first))
-            except:
-                ret = type_cast_link.from_address(self.first)
+            if type(type_name) == str:
+                type_cast = struct_dict[type_name.encode('ASCII')]
+            else:
+                # allow passing types direcly
+                type_cast = type_name
 
+            # empty listbase
+            if self.first is None:
+                ret = None
+            else:
+                try:
+                    ret = type_cast_link.from_address(ctypes.addressof(self.first))
+                except TypeError:
+                    ret = type_cast_link.from_address(self.first)
+
             while ret is not None:
                 return_value = type_cast.from_address(ctypes.addressof(ret))
                 try:
@@ -248,7 +257,11 @@
         struct_dict[b'ListBase'].ITER = list_base_iter
 
         def CAST(self, to):
-            type_cast = struct_dict[to.encode('ASCII')]
+            if type(type_name) == str:
+                type_cast = struct_dict[to.encode('ASCII')]
+            else:
+                type_cast = to
+
             return type_cast.from_address(ctypes.addressof(self))
 
         MixIn.CAST = CAST
@@ -279,6 +292,7 @@
                      ("subversionfile", ctypes.c_short),
                      ("minversionfile", ctypes.c_short),
                      ("minsubversionfile", ctypes.c_short),
+                     ("revision", ctypes.c_int),
                      ("curlib", ctypes.POINTER(struct_dict[b"Library"])),
                      ("scene", _lb),
                      ("library", _lb),




More information about the Bf-blender-cvs mailing list