Ñò
¶£Kc           @   sZ   d  Z  d d k Z d d k Z d d d „  ƒ  YZ d „  Z e d j o e d ƒ GHn d S(	   s   Read Java(TM) class files.iÿÿÿÿNt   Classc           B   sí   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d d d „  ƒ  YZ d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 Z e	 Z e Z e Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sÏ  t  | d ƒ o | |  _ ne t | ƒ t d ƒ j o< | i d ƒ o t i | ƒ |  _ q t | d ƒ |  _ n t t | ƒ ‚ |  i ƒ  } | d j p t ‚ |  i	 d ƒ \ } } | | f |  _
 d  |  _ y t p t ‚ Wn t j
 o g  |  _ n X|  i ƒ  |  i ƒ  |  _ |  i ƒ  |  _ |  i ƒ  |  _ |  i ƒ  |  _ |  i ƒ  |  _ |  i ƒ  |  _ |  i ƒ  |  _ |  i d  j	 o= x: |  i D]+ \ } } |  i | d | j p t ‚ qŒWn |  ` |  ` d  S(   Nt   readt    s   Êþº¾t   rl   ¾:ý s   >HHi    (   t   hasattrt   fpt   typet
   startswitht   StringIOt   opent	   TypeErrort	   _read_intt   AssertionErrort   _readt   versiont   Nonet   pool_integrity_checkst   Falset   _read_constants_poolt   _read_shortt   access_flagst   _read_reference_Classt   namet   supert   _read_interfacest
   interfacest   _read_fieldsormethodst   fieldst   methodst   _read_attributest
   attributest	   constants(   t   selft   argt   magict   minort   majort   indext   tag(    (    s   /usr/lib/gcc/classfile.pyt   __init__   s:    	

 'c      
   C   sµ   g  } g  } t  |  ƒ D]/ } | i d ƒ o | d j o | | q q ~ } | i ƒ  xL | D]D } | i d | d | d j o d p t t |  | ƒ ƒ f ƒ q` Wd i | ƒ S(   Nt   _t   Members   %-13s %st   :R   s   <ELIDED>s   
(   t   dirR   t   sortt   appendt   reprt   getattrt   join(   R    t   resultt   _[1]t   attrt   attrs(    (    s   /usr/lib/gcc/classfile.pyt   __repr__<   s    2
 	%c         C   sÓ   h  |  _  t } x½ t d |  i ƒ  ƒ D]¦ } | o t } q% n h d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6|  i ƒ  } | d j } | t |  d | ƒ ƒ  f |  i  | <q% Wd  S(   Ni   t   Utf8t   Integeri   t   Floati   t   Longi   t   Doublei   R    i   t   Stringi   t   Fieldrefi	   t	   Methodrefi
   t   InterfaceMethodrefi   t   NameAndTypei   t   _read_constant_(   R9   R:   (   R   R   t   xrangeR   t
   _read_byteR/   (   R    t   skipt   iR&   (    (    s   /usr/lib/gcc/classfile.pyR   G   s    	 c         C   s:   g  } x- t  |  i ƒ  ƒ D] } | i |  i ƒ  ƒ q W| S(   N(   RA   R   R-   R   (   R    R1   RD   (    (    s   /usr/lib/gcc/classfile.pyR   V   s
     c         C   s=   g  } x0 t  |  i ƒ  ƒ D] } | i |  i |  ƒ ƒ q W| S(   N(   RA   R   R-   R)   (   R    R1   RD   (    (    s   /usr/lib/gcc/classfile.pyR   \   s
     R)   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s@   | i  ƒ  |  _ | i ƒ  |  _ | i ƒ  |  _ | i ƒ  |  _ d  S(   N(   R   R   t   _read_reference_Utf8R   t
   descriptorR   R   (   R    t   source(    (    s   /usr/lib/gcc/classfile.pyR'   c   s    c      	   C   sê   g  } g  } t  |  ƒ D]! } | i d ƒ p | | q q ~ } | i ƒ  x‹ | D]ƒ } t |  | ƒ } | d j o4 | i d ƒ o$ | i ƒ  } | i h d d 6ƒ n | i d | d t | ƒ i	 d d ƒ f ƒ qR Wd	 d i
 | ƒ S(   NR(   R   t   Codes   <ELIDED>s   %-13s %sR*   s   'Code': '<ELIDED>'s   'Code': <ELIDED>s   
%si   t    s                  (   R+   R   R,   R/   t   has_keyt   copyt   updateR-   R.   t   replaceR0   (   R    R1   R2   R3   R4   t   value(    (    s   /usr/lib/gcc/classfile.pyR5   i   s    ;
 	(   t   __name__t
   __module__R'   R5   (    (    (    s   /usr/lib/gcc/classfile.pyR)   b   s   	c         C   sm   h  } x` t  |  i ƒ  ƒ D]L } |  i ƒ  } |  i i |  i ƒ  ƒ } | i | ƒ p t ‚ | | | <q W| S(   N(   RA   R   RE   R   R   R   RJ   R   (   R    R1   RD   R   t   data(    (    s   /usr/lib/gcc/classfile.pyR   w   s     c         C   s   |  i  d ƒ d S(   NR6   i    (   t   _read_references(   R    (    (    s   /usr/lib/gcc/classfile.pyRE   ‚   s    c         C   s   |  i  d ƒ d S(   NR    i    (   RR   (   R    (    (    s   /usr/lib/gcc/classfile.pyR   …   s    c         C   s   |  i  d d ƒ S(   NR    R?   (   RR   (   R    (    (    s   /usr/lib/gcc/classfile.pyt!   _read_reference_Class_NameAndTypeˆ   s    c         G   s^   g  } xQ | D]I } |  i  ƒ  } |  i d  j	 o |  i i | | f ƒ n | i | ƒ q W| S(   N(   R   R   R   R-   (   R    t   argsR1   R!   R%   (    (    s   /usr/lib/gcc/classfile.pyRR   ‹   s     c         C   sz   |  i  i |  i ƒ  ƒ } y | i d ƒ } Wn t j
 o t | ƒ } n Xy | i d ƒ } Wn t j
 o n X| S(   Ns   utf-8s   us-ascii(   R   R   R   t   decodet   UnicodeErrort   _bork_utf8_decodet   encode(   R    t   constant(    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_Utf8–   s    c         C   s
   |  i  ƒ  S(   N(   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_Integer¢   s    c         C   s   |  i  d ƒ d S(   Ns   >fi    (   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_Float¥   s    c         C   s   |  i  d ƒ d S(   Ns   >qi    (   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_Long¨   s    c         C   s   |  i  d ƒ d S(   Ns   >di    (   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_Double«   s    c         C   s   |  i  ƒ  |  i  ƒ  f S(   N(   RE   (   R    (    (    s   /usr/lib/gcc/classfile.pyt   _read_constant_NameAndType´   s    c         C   s*   t  t |  i d ƒ ƒ \ } } | d >| S(   Ns   >HHi   (   t   mapt   longR   (   R    t   ht   l(    (    s   /usr/lib/gcc/classfile.pyR   ¹   s    c         C   s   |  i  d ƒ d S(   Ns   >Hi    (   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyR   ¾   s    c         C   s   |  i  d ƒ d S(   Nt   Bi    (   R   (   R    (    (    s   /usr/lib/gcc/classfile.pyRB   Á   s    c         C   s%   t  i | |  i i t  i | ƒ ƒ ƒ S(   N(   t   structt   unpackR   R   t   calcsize(   R    t   fmt(    (    s   /usr/lib/gcc/classfile.pyR   Ä   s    (    (   RO   RP   R'   R5   R   R   R   R)   R   RE   R   RS   RR   RZ   R[   R\   R]   R^   t   _read_constant_Classt   _read_constant_Stringt   _read_constant_Fieldreft   _read_constant_Methodreft!   _read_constant_InterfaceMethodrefR_   R   R   RB   R   (    (    (    s   /usr/lib/gcc/classfile.pyR       s4   	'																		c         C   s%  t  t |  ƒ d } } x| o | i d ƒ } | d @oÒ | d @p t ‚ | i d ƒ } | d @d j p t ‚ | d @oj | d @p t ‚ | i d ƒ } | d @d j p t ‚ | t | d @d	 >| d
 @d >| d
 @ƒ 7} q| t | d @d >| d
 @ƒ 7} q | t | ƒ 7} q W| S(   NR   i    i€   i@   iÀ   i    i   i   i   i?   i   i   (   R`   t   ordt   popR   t   unichr(   RQ   t   bytest   unicodet   b1t   b2t   b3(    (    s   /usr/lib/gcc/classfile.pyRW   Ç   s"     *$t   __main__s2   /usr/share/katana/build/ListDependentClasses.class(    (   t   __doc__t	   cStringIOR   Re   R    RW   RO   (    (    (    s   /usr/lib/gcc/classfile.pyt   <module>   s   ³	