[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