/django/contrib/gis/gdal/base.py
Python | 35 lines | 17 code | 6 blank | 12 comment | 5 complexity | fd696a7d2c3dc5bb3fb56de72b3d43fc MD5 | raw file
Possible License(s): BSD-3-Clause
- from ctypes import c_void_p
- from types import NoneType
- from django.contrib.gis.gdal.error import GDALException
- class GDALBase(object):
- """
- Base object for GDAL objects that has a pointer access property
- that controls access to the underlying C pointer.
- """
- # Initially the pointer is NULL.
- _ptr = None
- # Default allowed pointer type.
- ptr_type = c_void_p
- # Pointer access property.
- def _get_ptr(self):
- # Raise an exception if the pointer isn't valid don't
- # want to be passing NULL pointers to routines --
- # that's very bad.
- if self._ptr: return self._ptr
- else: raise GDALException('GDAL %s pointer no longer valid.' % self.__class__.__name__)
- def _set_ptr(self, ptr):
- # Only allow the pointer to be set with pointers of the
- # compatible type or None (NULL).
- if isinstance(ptr, (int, long)):
- self._ptr = self.ptr_type(ptr)
- elif isinstance(ptr, (self.ptr_type, NoneType)):
- self._ptr = ptr
- else:
- raise TypeError('Incompatible pointer type')
- ptr = property(_get_ptr, _set_ptr)