Ticket #11609: base.2.py

File base.2.py, 1.1 KB (added by starsareblueandfaraway, 15 years ago)

You do not need to type-cast the long into an integer

Line 
1from ctypes import c_void_p
2from types import NoneType
3from django.contrib.gis.gdal.error import GDALException
4
5class GDALBase(object):
6 """
7 Base object for GDAL objects that has a pointer access property
8 that controls access to the underlying C pointer.
9 """
10 # Initially the pointer is NULL.
11 _ptr = None
12
13 # Default allowed pointer type.
14 ptr_type = c_void_p
15
16 # Pointer access property.
17 def _get_ptr(self):
18 # Raise an exception if the pointer isn't valid don't
19 # want to be passing NULL pointers to routines --
20 # that's very bad.
21 if self._ptr: return self._ptr
22 else: raise GDALException('GDAL %s pointer no longer valid.' % self.__class__.__name__)
23
24 def _set_ptr(self, ptr):
25 # Only allow the pointer to be set with pointers of the
26 # compatible type or None (NULL).
27 if isinstance(ptr, int) or isinstance(ptr, long):
28 self._ptr = self.ptr_type(ptr)
29 elif isinstance(ptr, (self.ptr_type, NoneType)):
30 self._ptr = ptr
31 else:
32 raise TypeError('Incompatible pointer type')
33
34 ptr = property(_get_ptr, _set_ptr)
35
Back to Top