
    8Sja                        S SK r S SKrS SKrS SKJr  \R
                  R                  \" \" \5      R                  5       R                  R                  5      5        S SKJr  S\S\4S jrS\SS4S jrS	\S\4S
 jrS	\S\4S jrSS	\S\S\4S jjrS	\S\4S jrS	\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS	\S\4S jrS	\S\4S jrS	\S\4S jrg)    N)Path)title_case_to_snake_casepathreturnc                 z    [        U SSS9 n[        R                  " U5      sS S S 5        $ ! , (       d  f       g = f)Nrutf-8encoding)openjsonload)r   
input_files     J/mnt/mint/home/seanl/public/Repos/ladybird/Meta/Generators/libweb_webgl.pyload_functionsr      s(    	dC'	*jyy$ 
+	*	*s   ,
:descriptionc                    [         R                  " U SS9nUR                  SSSS9  UR                  SSS	S
S9  UR                  SSS	SS9  UR                  SSS	SS9  UR                  5       n[	        UR
                  5      n[        UR                  SSS9 nU" Xe5        S S S 5        [        UR                  SSS9 nU" Xe5        S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = f)NF)r   add_helpz--helphelpzShow this help message and exit)actionr   z-hz--headerTz#Path to the header file to generate)requiredr   z-cz--implementationz+Path to the implementation file to generatez-jz--jsonz"Path to the JSON file to read fromwr	   r
   )	argparseArgumentParseradd_argument
parse_argsr   r   r   headerimplementation)r   write_header_filewrite_implementation_fileparserargs	functionsoutput_files          r   run_generatorr%      s    $$uMF
6WX
j4>cd
04Fst
h<`aDtyy)I	dkk3	1[+1 
2 
d!!3	9[!+9 
:	9 
2	1 
:	9s   	C=	C 
C 
C.functionc                     U S   R                  S5      (       a  U S   $ U S   R                  S5      (       d   eU S   SS  $ )Ncategorybuiltinnamegl   )
startswithr&   s    r   command_namer/   +   sQ    
&&y11F&&t,,,,FAB    c                 *    [        [        U 5      5      $ )N)
snake_caser/   r.   s    r   method_namer3   2   s    l8,--r0   	qualifierc                 j    SR                  S U S    5       5      nU S    SU [        U 5       SU S3$ )Nz, c              3   :   #    U  H  oS     SUS    3v   M     g7f)type r*   N ).0args     r   	<genexpr>#method_signature.<locals>.<genexpr>9   s#     P?OF}Ac&k]3?Os   r"   r   r8   ())joinr3   )r&   r4   r"   s      r   method_signaturerA   8   sD    99Px?OPPDx !9+k(.C-DAdV1MMr0   c                     SU ;   $ )Nwire_commandr9   r.   s    r   is_wire_commandrD   @       X%%r0   c                     SU ;   $ )Nwire_requestr9   r.   s    r   is_wire_syncrH   D   rE   r0   r#   c                 f    U  Vs/ s H  oS   S;   d  [        U5      (       d  M  UPM!     sn$ s  snf )Nr(   )commandgen)rD   r#   fs     r   command_stream_entriesrN   H   s,     ^y!jM5G$G?[\K]Ay^^^   ..c                 f    U  Vs/ s H  oS   S:X  d  [        U5      (       d  M  UPM!     sn$ s  snf )Nr(   sync)rH   rL   s     r   sync_call_entriesrR   L   s)     Oy!jMV$;|AAyOOOrO   r;   c                 *    U S   R                  S5      $ )Nr7   *)endswithr;   s    r   
is_pointerrW   P   s    v;$$r0   c                 6    [        U 5      =(       a    SU S   ;   $ )Nconstr7   )rW   rV   s    r   is_const_pointerrZ   T   s    c?5w#f+55r0   pointer_typec                 B    U R                  SS5      R                  5       $ )NrT    )replacestrip)r[   s    r   
deref_typer`   X   s    R(..00r0   c                    / nU S    H  nUR                  S5      (       a  M  [        US   5      nUR                  S5      (       a%  [        U5      (       d  UR                  SX245        Md  UR                  S5      (       d  SU;   a  UR                  SX245        M  [        U5      (       a   S	U S    S
US    35       eUR                  US   X245        M     U$ )Nr"   outr*   objectWebGLObjectIdstringpayloadWebGLDataSpanunhandled pointer arg .r7   )getr2   rW   appendr&   fieldsr;   
field_names       r   sync_request_fieldsro   _   s    F775>>F,
778Z__MM?J<=WWX)s"2MM?J<=!#a*@&AQ@RRSTWX^T_S`(aa&MM3v;
89   Mr0   c                 "   / nU S   S:w  a  UR                  U S   SS 45        U S    Hc  nUR                  S5      (       d  M  [        US   5      nSU;   a  UR                  SX245        MD  UR                  [        US	   5      X245        Me     U$ )
Nr   voidreturn_valuer"   rb   r*   rf   rg   r7   )rk   rj   r2   r`   rl   s       r   sync_reply_fieldsrs   r   s    FV#x)>4@Awwu~~F,
MM?J<=MM:c&k2JDE   Mr0   c                    / nU S   S:X  a  U S   S:w  a  UR                  S5        U S    GH  n[        US   5      nU S   S:X  a5  [        U5      (       a%  [        U5      (       d  UR                  SX245        MP  UR	                  S	5      (       a%  [        U5      (       d  UR                  S
X245        M  UR	                  S	5      (       a%  [        U5      (       a  UR                  SX245        M  UR	                  S5      (       a  UR                  SX245        M  UR	                  S5      (       a  UR                  SX245        GM  SU;   aC  UR	                  S5      (       a  UR                  SSU-   U45        UR                  SX245        GMf  [        U5      (       a   SU S    SUS    35       eUR                  US   X245        GM     U$ )Nr(   rK   r   rq   )rd   idNr"   r*   rg   rc   rd   re   offsetGLintptrrf   nullableboolhas_rh   ri   r7   )rk   r2   rW   rZ   rj   rl   s       r   command_struct_fieldsr{      s   F
u$();v)E34F,
J5(Z__EUVYEZEZMM?J<=WWXz#MM?J<=WWX#3C#8#8MM?J<=WWXMM?J<=WWXMM:z78#wwz""vv
':C@AMM?J<=!#a*@&AQ@RRSTWX^T_S`(aa&MM3v;
89%  & Mr0   )r]   ) r   r   syspathlibr   r   rk   str__file__resolveparentUtils.utilsr   r2   listr   r%   dictr/   r3   rA   ry   rD   rH   rN   rR   rW   rZ   r`   ro   rs   r{   r9   r0   r   <module>r      ss     
  DN**,33::; < >% % %:s :UY :" 4  C  .$ .3 .Nt N NS N&d &t &&4 &D &_d _t _P P$ P%D %T %6$ 64 61S 1S 1$ 4 &  "D T r0   