
Ԑ\c           @  sa   d  d l  m Z d  d l Z e d  e _ d e f d     YZ i  Z d e f d     YZ	 d S(   i(   t   print_functionNt   Objectc           B  s2   e  Z d  Z d Z g  Z d   Z d Z d   Z RS(   sI   
    Our own base class. Contains methods to simplify serialization.
    i    c         C  sM   t  |   j   } x' |  j D] } | | k r | | =q q W|  j | d <| S(   Nt   __version__(   t   varst   copyt   nosaveR   (   t   selft   rvt   f(    (    s   renpy/object.pyt   __getstate__'   s    c         C  s[   | j  d d  } |  j j |  | |  j k rA |  j |  n  |  j rW |  j   n  d  S(   NR   i    (   t   popt   __dict__t   updateR   t   after_upgradet   after_setstate(   R   t   new_dictt   version(    (    s   renpy/object.pyt   __setstate__5   s    	N(	   t   __name__t
   __module__t   __doc__R   R   R	   t   NoneR   R   (    (    (    s   renpy/object.pyR      s   	t   Sentinelc           B  s)   e  Z d  Z d   Z d   Z d   Z RS(   s   
    This is used to represent a sentinel object. There will be exactly one
    sentinel object with a name existing in the system at any time.
    c         C  sA   t  j | d   } | d  k r= t j |  |  } | t  | <n  | S(   N(   t	   sentinelst   getR   t   objectt   __new__(   t   clst   nameR   (    (    s   renpy/object.pyR   N   s
    c         C  s   | |  _  d  S(   N(   R   (   R   R   (    (    s   renpy/object.pyt   __init__W   s    c         C  s   t  |  j f f S(   N(   R   R   (   R   (    (    s   renpy/object.pyt
   __reduce__Z   s    (   R   R   R   R   R   R   (    (    (    s   renpy/object.pyR   H   s   			(
   t
   __future__R    t   __builtin__t   typeR   t   NoneTypeR   R   R   R   (    (    (    s   renpy/object.pyt   <module>   s
   '