Ñò
XÁÅGc        	   @   s`   d  d k  l  Z  d  d k Td  d k Td  d k Td  d k Z d  d k Z d e  f d     YZ d S(   iÿÿÿÿ(   t   Exporter(   t   *Nt   FunctionExporterc           B   sY   e  Z d  Z d	 d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z RS(
   s9   Generates boost.python code to export the given function.c         C   s   t  i |  | |  d  S(   N(   R    t   __init__(   t   selft   infot   tail(    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR      s    c         C   sš   |  i  i p |  i |  i  i  } x[ | D]S } t i | |  i  i  |  i  _ |  i | t |  d j |  |  i	 | |  q) W|  i
 | |  d | |  i   <n d  S(   Ni   (   R   t   excludet   GetDeclarationst   namet   exporterutilst   HandlePolicyt   policyt   ExportDeclarationt   lent   ExportOpaquePointert   GenerateOverloadst   Name(   R   t   codeunitt   exported_namest   declst   decl(    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyt   Export   s     c   	      C   sø   |  i  i p | i } t i d | } |  i  i } | o d | i   } n | i   } | | 7} | |  i   7} |  i	 |  } | o | d t i
 | 7} n | d 7} | i d |  i | d  | o% | i o | i d | i d  n d  S(   Ns
   def("%s", t   &s   , %s()s   );t   modules   
t   declaration(   R   t   renameR	   t
   namespacest   pythont   wrappert   FullNamet   PointerDeclarationt
   PolicyCodet   OverloadNamet   pystet   Writet   INDENTt   code(	   R   R   t   uniqueR   R	   t   defsR   t   pointert   overload(    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR   #   s    

c         C   s6   | i  | i j o d | i | i  | i f Sd Sd  S(   Ns   %s_overloads_%i_%it    (   t   minArgst   maxArgsR	   (   R   R   (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR!   7   s    c         C   s   h  } xu | D]m } |  i  |  } | oQ | | j oD d | | i   | i | i f } | i d | d  d  | | <q q Wd  S(   Ns/   BOOST_PYTHON_FUNCTION_OVERLOADS(%s, %s, %i, %i)R   s   
(   R!   R   R+   R,   R#   t   None(   R   t   declarationsR   t   codesR   R)   R%   (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR   ?   s     c         C   sG   |  i  i } | d  j	 o& t | t  p t  d | i   Sd Sd  S(   Ns   , %s()R*   (   R   R   R-   t
   isinstancet   Policyt   AssertionErrort   Code(   R   R   (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR    J   s
    c         C   sW   |  i  i t t  j o: | i i } t i |  } | o | i d |  qS n d  S(   Ns   declaration-outside(	   R   R   t   return_value_policyt   return_opaque_pointert   resultR	   R
   t   EspecializeTypeIDR#   (   R   t   functionR   t   typenamet   macro(    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR   S   s
    c         C   s
   |  i  i S(   N(   R   R	   (   R   (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR   [   s    N(   t   __name__t
   __module__t   __doc__R-   R   R   R   R!   R   R    R   R   (    (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyR      s   							(   R    t   policiesR.   t   settingst   utilsR
   R   (    (    (    s6   /usr/lib/pymodules/python2.6/Pyste/FunctionExporter.pyt   <module>   s   


