B
    18\                 @   s:  d dl Z d dlZd dlZd dlZedZedZedZedZedZ	ee	gZ
edZedZi ai Zyejd	 d
ZW n~ ek
r   yejd d
ZW nR ek
r   dgZy ed ejdejd  W n ek
r   Y nX Y nX Y nX dd Zdd Zi fddZedkr6e  dS )    Nz/^[\t ]*#[\t ]*define[\t ]+([a-zA-Z0-9_]+)[\t ]+zK^[\t ]*#[\t ]*define[\t ]+([a-zA-Z0-9_]+)\(([_a-zA-Z][_a-zA-Z0-9]*)\)[\t ]+z&^[\t ]*#[\t ]*include[\t ]+<([^>\n]+)>z/\*([^*]+|\*+[^/])*(\*+/)?z//.*z'(\\.[^\\]*|[^\\])'z0x([0-9a-fA-F]+)L?include;ZINCLUDEz/usr/include	MULTIARCHc              C   sT  t  tjdd  d\} }x(| D ] \}}|dkr tt| q W |sNdg} x|D ]}|dkr~tjd t	tj
tj qVt|d}tj|}|d}|dkr|d | }| }|d	 }t|d
}	|	d|  i axRtD ]J}
|d t|
 |
krd t|t|
d d  < |t|t|
d d  < P qW t	||	 |	  |  qVW d S )N   zi:z-i-z# Generated by h2py from stdin
r.r   z.pywz# Generated by h2py from %s
)getoptsysargvignoresappendrecompilestdoutwriteprocessstdinopenospathbasenamerfindupperfiledict
searchdirslen
importableclose)optsargsoafilenamefpoutfileimodnameoutfpdir r+   R/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/h2py.pymain;   s8    

 


r-   c             C   s   xt D ]}|d| } qW td| } d}dtjd  }x|t| |}|sLP | \}}t| t	|d  d}|tjkr||8 }| d | d t
| d | |d   } |d }q:W | S )	N z	ord('\1')r      r      ())r   subp_charr   maxsizep_hexsearchspanintslicestr)bodypstartZUMAXmsevalr+   r+   r,   pytifyZ   s     
 
(rC   c          	   C   s  d}x|   }|sP |d }t|}|rx2|dd  dkr^|   }|sLP |d }|| }q.W |d}|| d  }t|}d}	d|| f }
yt|
| W n   tj	
d|
  Y nX |
|
 t|}|rH|dd\}}|| d  }t|}d|||f }
yt|
| W n   tj	
d|
  Y nX |
|
 t|}|r|j}|d \}}||| }|tkr|
d	t|   q|tkrd t|< d }x<tD ]4}yt|d
 | }P W n tk
r   Y nX qW |r|
d|  t||| qtj	
d|  qW d S )Nr   r   z\
z%s = %s
zSkipping: %sr/   zdef %s(%s): return %s
zfrom %s import *
/z
# Included from %s
z!Warning - could not find file %s
)readlinep_definematchgroupendrC   stripexecr   stderrr   p_macro	p_includeregsr   r   r   r   IOErrorr   )r%   r)   envlinenolinerH   nextlinenamer<   okstmtZmacroargrP   r#   br$   Zinclfpr*   r+   r+   r,   r   n   sr     
 







r   __main__)r   r   r
   r   r   rG   rN   rO   Z	p_commentZp_cpp_commentr   r4   r6   r   r   environsplitr   KeyErrorinsertr   joinr-   rC   r   __name__r+   r+   r+   r,   <module>   s8    





=
