

_V	                 @   sZ   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z Gd d   d e  Z	 d S)   )GEOSBase)GEOSException)geos_version_info)preparedc               @   s   e  Z d  Z d Z e j Z d d   Z d d   Z d d   Z	 d d	   Z
 d
 d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d S)PreparedGeometryz
    A geometry that is prepared for performing certain operations.
    At the moment this includes the contains covers, and intersects
    operations.
    c             C   sJ   | |  _  d d l m } t | |  s1 t  n  t j | j  |  _ d  S)Nr   )GEOSGeometry)Z
_base_geomZgeometryr   
isinstance	TypeErrorcapiZgeos_prepareptr)selfZgeomr    r   B/tmp/pip-build-ghmbqnp_/Django/django/contrib/gis/geos/prepared.py__init__   s
    		zPreparedGeometry.__init__c             C   s&   |  j  r" t r" t j |  j   n  d  S)N)Z_ptrr
   Zprepared_destroy)r   r   r   r   __del__   s    zPreparedGeometry.__del__c             C   s   t  j |  j | j  S)N)r
   Zprepared_containsr   )r   otherr   r   r   contains   s    zPreparedGeometry.containsc             C   s   t  j |  j | j  S)N)r
   Zprepared_contains_properlyr   )r   r   r   r   r   contains_properly    s    z"PreparedGeometry.contains_properlyc             C   s   t  j |  j | j  S)N)r
   Zprepared_coversr   )r   r   r   r   r   covers#   s    zPreparedGeometry.coversc             C   s   t  j |  j | j  S)N)r
   Zprepared_intersectsr   )r   r   r   r   r   
intersects&   s    zPreparedGeometry.intersectsc             C   s8   t    d d k  r" t d   n  t j |  j | j  S)Nversionz3.3.0z5crosses on prepared geometries requires GEOS >= 3.3.0)r   r   r
   Zprepared_crossesr   )r   r   r   r   r   crosses+   s    zPreparedGeometry.crossesc             C   s8   t    d d k  r" t d   n  t j |  j | j  S)Nr   z3.3.0z6disjoint on prepared geometries requires GEOS >= 3.3.0)r   r   r
   Zprepared_disjointr   )r   r   r   r   r   disjoint0   s    zPreparedGeometry.disjointc             C   s8   t    d d k  r" t d   n  t j |  j | j  S)Nr   z3.3.0z6overlaps on prepared geometries requires GEOS >= 3.3.0)r   r   r
   Zprepared_overlapsr   )r   r   r   r   r   overlaps5   s    zPreparedGeometry.overlapsc             C   s8   t    d d k  r" t d   n  t j |  j | j  S)Nr   z3.3.0z5touches on prepared geometries requires GEOS >= 3.3.0)r   r   r
   Zprepared_touchesr   )r   r   r   r   r   touches:   s    zPreparedGeometry.touchesc             C   s8   t    d d k  r" t d   n  t j |  j | j  S)Nr   z3.3.0z4within on prepared geometries requires GEOS >= 3.3.0)r   r   r
   Zprepared_withinr   )r   r   r   r   r   within?   s    zPreparedGeometry.withinN)__name__
__module____qualname____doc__r
   ZPREPGEOM_PTRZptr_typer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s   	
r   N)
baser   errorr   Zlibgeosr   Z
prototypesr   r
   r   r   r   r   r   <module>   s   