
    ?e1                    t	   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dl m!Z!m"Z"m#Z# ddl$m%Z% ddl&m&Z& dZ'd	Z(d
 Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d  Z?d! Z@d" ZAd# ZBd$ ZCd% ZDd& ZEd' ZFd( ZGd) ZHd* ZId+ ZJd, ZKd- ZLd. ZMd/ ZNd0 ZOd1 ZPd2 ZQd3 ZRd4 ZSd5 ZTd6 ZUd7 ZVd8 ZWd9 ZXd: ZYd; ZZd< Z[d= Z\d> Z]d? Z^d@ Z_dA Z`dB ZadC ZbdD ZcdEZddF ZedG ZfdH ZgdI ZhdJ ZidK ZjdL ZkdM ZldN ZmdO ZndP ZodQ ZpdR ZqdS ZrdT ZsdU ZtdV ZudW ZvdX ZwdY ZxdZ Zyd[ Zzd\ Z{d] Z|d^ Z}d_ Z~d` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zej        ej        ej        ej        dlZi dmej        dnej        doej        dpej        dqej        drej        dsej        dtej        duej        dvej        dwej        dxej        dyej        dzej        d{ej        d|ej        d}ej        ej        ej        ej        ej        ej        ej        ej        d~Zd Zd Zd Zd ZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdZd Zd Zd ZdZd Zd Zd Zd Zd Zd Zd Zd Zd ZdZdZd Zd Zd Zd Zd Zd Zd ZdZd Zd Zd Zd ZdZd Zd Zd Zd Zej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        ej        fZej        ej        ej        ej        fZd Zd Zd Zd ZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ ZdĄ Zdń ZdƄ ZdǄ ZdȄ ZdɄ Zdʄ Zd˄ Zd̄ Zd̈́ Z d΄ Zi ddГddғddԓdd֓ddؓddړddܓddޓdddddddddddddddddddddddddddddddZd Zd Zd  Zd Zd ZdZd Z	d Z
d Zd ZdZd	 Zd
Zd Zd ZdZd Zd Zd Zd Zd Zd Zd Zd ZdZd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*dS (&     )
ScopedName)AccessSpecifierArgumentArgumentTypeArrayArgumentClassKey	DocstringDocstringFormatExtractFunctionCall	IfaceFileIfaceFileTypeKwArgsLicense
MappedTypeMappedTypeTemplateOverloadPropertyPyQtMethodSpecifierQualifierType	SignatureTemplateThrowArgumentsValue	ValueTypeVirtualErrorHandlerWrappedTypedefWrappedVariable)same_template_signature)cached_namenormalised_scoped_namesearch_typedefs   
DottedName)tokensNspecificationc                    | ddl m}  |            | j        j                            | d                    | j                             | j        j                                         t          	                                } | -| j
        dvr$t          	                                } | 	| j
        dv$t                                           dS )z% Invoked when a syntax error occurs. Nr#   )UnexpectedEOFz'{0}' is unexpected)};End)parser_managerr)   lexerpmlexer_errorformatvalueset_lexer_stateparsertokentyperestart)tr)   s     ?lib/python3.11/site-packages/sipbuild/generator/parser/rules.pyp_errorr:   -   s     	y111111mooGJ13::17CCDDD GJ   A
-AF*;;;LLNN -AF*;;; NN    c                     dS )z;specification : statement
        | specification statementN ps    r9   p_specificationr@   C         r;   c                     dS )a  statement : eof
        | namespace_statement
        | composite_module
        | copying
        | defdocstringfmt
        | defdocstringsig
        | defencoding
        | defmetatype
        | defsupertype
        | exported_header_code
        | exported_type_hint_code
        | extract
        | feature
        | hidden_ns
        | import
        | include
        | init_code
        | license
        | mapped_type
        | mapped_type_template
        | module
        | module_code
        | module_header_code
        | platforms
        | plugin
        | preinit_code
        | postinit_code
        | timeline
        | type_hint_code
        | unit_code
        | unit_postinclude_code
        | virtual_error_handlerNr=   r>   s    r9   p_statementrC   H   rA   r;   c                     dS )a!  namespace_statement : if_start
        | if_end
        | class_decl
        | class_template
        | enum_decl
        | exception
        | function
        | namespace_decl
        | struct_decl
        | typedef_decl
        | union_decl
        | variable
        | type_header_codeNr=   r>   s    r9   p_namespace_statementrE   k   rA   r;   c                 B    | j         j                                         dS )z	eof : EOFN)r4   r/   pop_module_stater>   s    r9   p_eofrH   {   s      HK  """""r;   c                 D    | j         j                            d           dS )zbegin_args :	directiveNr4   r/   r3   r>   s    r9   p_begin_argsrL      s"     HK,,,,,r;   c                 B    | j         j                                         dS )z
end_args :NrK   r>   s    r9   
p_end_argsrN      s      HK!!!!!r;   c                 D    | j         j                            d           dS )z
need_eol :needeolNrK   r>   s    r9   
p_need_eolrQ      s"     HK	*****r;   c                 F    | j         j        j        rdS d| d         f| d<   dS )zMautopyname : AutoPyName begin_args '(' remove_leading '=' STRING end_args ')'NREMOVE_LEADING       )r4   r/   skippingr>   s    r9   p_autopynamerW      s.     	x{ ad#AaDDDr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z,get_buffer_code : BIGetBufferCode CODE_BLOCKNr#   z+%BIGetBufferCode can only be specified oncer   )r4   r/   rV   scopebi_get_buffer_codeparser_errorr?   r/   s     r9   p_get_buffer_coder]      sR     
B	{ 	x".
1KLLL"#A$BHr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z4release_buffer_code : BIReleaseBufferCode CODE_BLOCKNr#   z/%BIReleaseBufferCode can only be specified oncer   )r4   r/   rV   rY   bi_release_buffer_coder[   r\   s     r9   p_release_buffer_coder`      ]     
B	{ 	x&2
1A	C 	C 	C '(dBH###r;   c                    | j         j        }|j        rdS |j        s|                    | dd           d|j        _        t          |           dk    r| d         }| d         }n| d         d         }| d	         }|j        j	        }t          |j        t          |                    |_        |D ]}t          |t                    r||_        dS )
zcomposite_module : CompositeModule dotted_name c_module_body
        | CompositeModule begin_args '(' c_module_args end_args ')' c_module_bodyNr#   z&a %CompositeModule cannot be %ImportedT   r      name   )r4   r/   rV   in_main_moduler[   specis_compositelenmodule_statemoduler    str
fq_py_name
isinstancer	   	docstring)r?   r/   re   bodyrl   rJ   s         r9   p_composite_modulerr      s     
B	{   H
1FGGGBG
1vv{{tttF|t_#F#BGSYY77F ) )	i++ 	)(F) )r;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zEc_module_args : c_module_arg
        | c_module_args ',' c_module_argrc   r#   rd   rU   Nrj   updater>   s    r9   p_c_module_argsrv      >     1vv{{	!AaDQ4AaDDDr;   c                 ,    | d         | d         i| d<   dS )z#c_module_arg : name '=' dotted_namer#   rd   rU   Nr=   r>   s    r9   p_c_module_argry           aD!A$<AaDDDr;   c                 F    t          |           dk    r| d         ng | d<   dS )zDc_module_body : '{' c_module_body_directives '}' ';'
        | emptyrc   r   rU   Nrj   r>   s    r9   p_c_module_bodyr}      '     q66Q;;1Q44BAaDDDr;   c                     t          |           dk    rg }| d         }n| d         }| d         }||                    |           || d<   dS )zmc_module_body_directives : c_module_body_directive
        | c_module_body_directives c_module_body_directiver   r#   NrU   rj   appendr?   r2   rJ   s      r9   p_c_module_body_directivesr      Z     1vv{{aD		!aD	YAaDDDr;   c                     | d         | d<   dS )zGc_module_body_directive : if_start
        | if_end
        | docstringr#   rU   Nr=   r>   s    r9   p_c_module_body_directiver   
      
 Q4AaDDDr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z7convert_from_type_code : ConvertFromTypeCode CODE_BLOCKNr#   z/%ConvertFromTypeCode can only be specified oncer   )r4   r/   rV   rY   convert_from_type_coder[   r\   s     r9   p_convert_from_type_coder     ra   r;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z;convert_to_subclass_code : ConvertToSubClassCode CODE_BLOCKNr#   z1%ConvertToSubClassCode can only be specified oncer   )r4   r/   rV   rY   convert_to_subclass_coder[   r\   s     r9   p_convert_to_subclass_coder   %  s]     
B	{ 	x(4
1C	E 	E 	E )*!BH%%%r;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z3convert_to_type_code : ConvertToTypeCode CODE_BLOCKNr#   z-%ConvertToTypeCode can only be specified oncer   )r4   r/   rV   rY   convert_to_type_coder[   r\   s     r9   p_convert_to_type_coder   6  sR     
B	{ 	x$0
1MNNN$%aDBH!!!r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )zcopying : Copying CODE_BLOCKNr   )r4   r/   rV   rk   rl   copyingr   r\   s     r9   	p_copyingr   F  sB     
B	{ O"))!A$/////r;   c                     | j         j        }|j        rdS t          |           dk    rdnd}|                    | |          |j        j        _        dS )z|defdocstringfmt : DefaultDocstringFormat STRING
        | DefaultDocstringFormat begin_args '(' name '=' STRING end_args ')'Nrd   r   rT   )r4   r/   rV   rj   convert_docstring_formatrk   rl   default_docstring_formatr?   r/   symbols      r9   p_defdocstringfmtr   S  sX     
B	{ a&&A++QQ1F686Q6QRSU[6\6\BO333r;   c                     | j         j        }|j        rdS t          |           dk    rdnd}|                    | |          |j        j        _        dS )zdefdocstringsig : DefaultDocstringSignature STRING
        | DefaultDocstringSignature begin_args '(' name '=' STRING end_args ')'Nrd   r   rT   )r4   r/   rV   rj   convert_docstring_signaturerk   rl   default_docstring_signaturer   s      r9   p_defdocstringsigr   c  sX     
B	{ a&&A++QQ1F9;9W9WXY[a9b9bBO666r;   c                     | j         j        }|j        rdS t          |           dk    rdnd}|                    | |          |j        _        dS )zkdefencoding : DefaultEncoding STRING
        |  DefaultEncoding begin_args '(' name '=' STRING end_args ')'Nrd   r   rT   )r4   r/   rV   rj   convert_encodingrk   default_encodingr   s      r9   p_defencodingr   s  sS     
B	{ a&&A++QQ1F')':':1f'E'EBO$$$r;   c                    | j         j        }|j        rdS |j        j        }|j        r|                    | dd           t          |           dk    rdnd}t          |j	        t          | |                             |_        dS )ztdefmetatype : DefaultMetatype dotted_name
        | DefaultMetatype begin_args '(' name '=' dotted_name end_args ')'Nr#   z9%DefaultMetatype has already been defined for this modulerd   r   rT   )r4   r/   rV   rk   rl   default_metatyper[   rj   r    rh   rm   r?   r/   rl   r   s       r9   p_defmetatyper     s     
B	{ _#F M
1K	M 	M 	M a&&A++QQ1F)"'3qy>>BBFr;   c                    | j         j        }|j        rdS |j        j        }|j        r|                    | dd           t          |           dk    rdnd}t          |j	        t          | |                             |_        dS )zwdefsupertype : DefaultSupertype dotted_name
        | DefaultSupertype begin_args '(' name '=' dotted_name end_args ')'Nr#   z:%DefaultSupertype has already been defined for this modulerd   r   rT   )r4   r/   rV   rk   rl   default_supertyper[   rj   r    rh   rm   r   s       r9   p_defsupertyper     s     
B	{ _#F N
1L	N 	N 	N a&&A++QQ1F*27C&	NNCCFr;   c                 b   | j         j        }|j        rdS |j        j        }| d                             d|j                  }|t          j        k    rddl	m
}  || d         j                  }n| d         j        }t          | d                             d|j                  |          | d<   dS )z/docstring : Docstring docstring_args CODE_BLOCKNr   r1   rU   )dedentrd   	signature)r4   r/   rV   rk   rl   getr   r
   
DEINDENTEDtextwrapr   textr	   r   )r?   r/   rl   	ds_formatr   r   s         r9   p_docstringr     s     
B	{ _#F!6#BCCIO...######vadi  tyQqTXXk6+MNN AaDDDr;   c                     t          |           dk    r0| j        j        }| d         i }n!d|                    | d          i}n| d         }|| d<   dS )zXdocstring_args : empty
    | STRING
    | begin_args '(' docstring_arg_list end_args ')'r   r#   Nr1   rd   rU   )rj   r4   r/   r   r?   r/   r2   s      r9   p_docstring_argsr     s^    
 1vv{{X[Q4<EEr::1a@@AEE!AaDDDr;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zQdocstring_arg_list : docstring_arg
        | docstring_arg_list ',' docstring_argrc   r#   rd   rU   Nrt   r>   s    r9   p_docstring_arg_listr     rw   r;   c                     | j         j        }| d         dk    r|                    | d          }n|                    | d          }| d         |i| d<   dS )z<docstring_arg : format '=' STRING
    | signature '=' STRINGr#   r1   rd   rU   N)r4   r/   r   r   r   s      r9   p_docstring_argr     s]     
Btx++Aq11..q!44aD%=AaDDDr;   c                 z    | j         j        }|j        rdS |j        j                            | d                    dS )z4exported_header_code : ExportedHeaderCode CODE_BLOCKNr   )r4   r/   rV   rh   exported_header_coder   r\   s     r9   p_exported_header_coder     s?     
B	{ G ''!-----r;   c                     | j         j        }|j        rdS |j        s'|j        j                            | d                    dS dS )z9exported_type_hint_code : ExportedTypeHintCode CODE_BLOCKNr   )r4   r/   rV   rg   rh   exported_type_hint_coder   r\   s     r9   p_exported_type_hint_coder     sT     
B	{  5
'..qt444445 5r;   c                    | j         j        }|j        rdS t          |           dk    r| d         }d}| d         }nY| d         }	 |d         }n)# t          $ r |                    | dd           d	}Y nw xY w|                    d
d          }| d         }|j        j        	                    t          |||j                             dS )zgextract : Extract NAME CODE_BLOCK
        | Extract begin_args '(' extract_args end_args ')' CODE_BLOCKNrc   r   rd   idr#   z%Extract must specify 'id' orderrf   )r4   r/   rV   rj   KeyErrorr[   r   rh   extractsr   r   r   )r?   r/   r   r   partargss         r9   	p_extractr     s     
B	{ 
1vv{{qTtt	dBB 	 	 	OOAq">???BBB	 "%%tGGBty99:::::s   A #A43A4c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zAextract_args : extract_arg
        | extract_args ',' extract_argrc   r#   rd   rU   Nrt   r>   s    r9   p_extract_argsr   )  rw   r;   c                 ,    | d         | d         i| d<   dS )z4extract_arg : id '=' NAME
        | order '=' NUMBERr#   rd   rU   Nr=   r>   s    r9   p_extract_argr   3       aD!A$<AaDDDr;   c                     t          |           dk    rdnd}| j        j                            | || |         t          j                   dS )zRfeature : Feature NAME
        | Feature begin_args '(' name '=' NAME end_args ')'rd   r   rT   N)rj   r4   r/   add_qualifierr   FEATURE)r?   r   s     r9   	p_featurer   <  sH     a&&A++QQ1F HKa6M4IJJJJJr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z/finalisation_code : FinalisationCode CODE_BLOCKNr#   z,%FinalisationCode can only be specified oncer   )r4   r/   rV   rY   finalisation_coder[   r\   s     r9   p_finalisation_coder   H  sR     
B	{ 	x!-
1LMMM!"1BHr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z&gc_clear_code : GCClearCode CODE_BLOCKNr#   z'%GCClearCode can only be specified oncer   )r4   r/   rV   rY   gc_clear_coder[   r\   s     r9   p_gc_clear_coder   X  sR     
B	{ 	x)
1GHHHqTBHr;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z,gc_traverse_code : GCTraverseCode CODE_BLOCKNr#   z*%GCTraverseCode can only be specified oncer   )r4   r/   rV   rY   gc_traverse_coder[   r\   s     r9   p_gc_traverse_coder   h  sR     
B	{ 	x ,
1JKKK !!BHr;   c           	      R   | j         j        }|j        rdS t          |           dk    r	| d         }n9	 | d         d         }n)# t          $ r |                    | dd           d}Y nw xY w|                    | dt          j        t          ||j
                            }d	|_        dS )
zhhidden_ns : HideNamespace scoped_name
        | HideNamespace begin_args '(' hidden_ns_args end_args ')'Nrd   r   rc   re   r#   z0the name of the namespace has not been specifiedr   T)r4   r/   rV   rj   r   r[   	new_classr   	NAMESPACEr!   rY   is_hidden_namespace)r?   r/   re   	namespaces       r9   p_hidden_nsr   x  s     
B	{ 
1vv{{t	Q4<DD 	 	 	OOAqFH H HDDD	
 Q=#:"4224 4I$(I!!!s   A #A('A(c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zIhidden_ns_args : hidden_ns_arg
        | hidden_ns_args ',' hidden_ns_argrc   r#   rd   rU   Nrt   r>   s    r9   p_hidden_ns_argsr     rw   r;   c                 ,    | d         | d         i| d<   dS )z$hidden_ns_arg : name '=' scoped_namer#   rd   rU   Nr=   r>   s    r9   p_hidden_ns_argr     rz   r;   c                 x    | j         j        }|j        rd}n	| d          }|j                            |           dS )z if_start : If '(' qualifiers ')'Trd   N)r4   r/   rV   
skip_stackr   )r?   r/   rV   s      r9   
p_if_startr     sE     
B	{ t8M"""""r;   c                     | j         j        }t          |j                  dk    r|j                                         dS |                    | dd           dS )zif_end : Endr   r#   ztoo many '%End' directivesN)r4   r/   rj   r   popr[   r\   s     r9   p_if_endr     sY     
B
2=Q

1:;;;;;r;   c                     dS )zgimport : Import need_eol import_simple EOL
        | Import begin_args '(' import_compound end_args ')'Nr=   r>   s    r9   p_importr     rA   r;   c                 `    | j         j        }|j        rdS |                    | dd           dS )zimport_simple : file_pathNr#   T
new_moduler4   r/   rV   	push_filer\   s     r9   p_import_simpler     s:     
B	{ LLA$L'''''r;   c                     | j         j        }|j        rdS 	 | d         d         }n'# t          $ r |                    | dd           Y nw xY w|                    | d|d           dS )zimport_compound : import_argsNr#   re   +the name of the file has not been specifiedTr   )r4   r/   rV   r   r[   r   r?   r/   sip_files      r9   p_import_compoundr     s     
B	{ MQ4< M M M
1KLLLLLM LLAxDL11111   & !A
	A
c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )z=import_args : import_arg
        | import_args ',' import_argrc   r#   rd   rU   Nrt   r>   s    r9   p_import_argsr     rw   r;   c                 ,    | d         | d         i| d<   dS )zimport_arg : name '=' file_pathr#   rd   rU   Nr=   r>   s    r9   p_import_argr     rz   r;   c                     dS )zlinclude : Include need_eol include_simple EOL
        | Include begin_args '(' include_compound end_args ')'Nr=   r>   s    r9   	p_includer     rA   r;   c                 \    | j         j        }|j        rdS |                    | d           dS )zinclude_simple : file_pathNr#   r   r\   s     r9   p_include_simpler     s6     
B	{ LLAr;   c           	         | j         j        }|j        rdS 	 | d         d         }n'# t          $ r |                    | dd           Y nw xY w|                    | d|| d                             dd                     dS )zinclude_compound : include_argsNr#   re   r   optionalF)r  )r4   r/   rV   r   r[   r   r   r   s      r9   p_include_compundr    s     
B	{ MQ4< M M M
1KLLLLLM LLAx!A$((:u*E*ELFFFFFr   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zAinclude_args : include_arg
        | include_args ',' include_argrc   r#   rd   rU   Nrt   r>   s    r9   p_include_argsr    rw   r;   c                 ,    | d         | d         i| d<   dS )zBinclude_arg : name '=' file_path
        | optional '=' bool_valuer#   rd   rU   Nr=   r>   s    r9   p_include_argr    r   r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z)init_code : InitialisationCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   initialisation_coder   r\   s     r9   p_init_coder
  !  sB     
B	{ O.55ad;;;;;r;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z'instance_code : InstanceCode CODE_BLOCKNr#   z(%InstanceCode can only be specified oncer   )r4   r/   rV   rY   instance_coder[   r\   s     r9   p_instance_coder  .  sR     
B	{ 	x)
1HIIIqTBHr;   c                 $   | j         j        }|j        rdS |j        j        j        |                    | dd           t          |           dk    rt          | d                   }n| d         }	 |d         }n)# t          $ r |                    | dd           d	}Y nw xY wt          |          }|
                    d
          |_        |
                    d          |_        |
                    d          |_        ||j        j        _        dS )zSlicense : License STRING
        | License begin_args '(' license_args end_args ')'Nr#   z#%License can only be specified oncerd   r   rc   r6   z%License must specify 'type'r   licenseer   	timestamp)r4   r/   rV   rk   rl   licenser[   rj   r   r   r   r  r   r  )r?   r/   r  r   license_types        r9   	p_licenser  >  s    
B	{ 	%1
1CDDD
1vv{{!A$--t	<LL 	 	 	OOAq"@AAALLL	 ,''88J// HH[11 HH[11%,BO"""s   0A9 9#BBc                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zAlicense_args : license_arg
        | license_args ',' license_argrc   r#   rd   rU   Nrt   r>   s    r9   p_license_argsr  ^  rw   r;   c                 ,    | d         | d         i| d<   dS )zylicense_arg : licensee '=' STRING
        | signature '=' STRING
        | timestamp '=' STRING
        | type '=' STRINGr#   rd   rU   Nr=   r>   s    r9   p_license_argr  h  s     aD!A$<AaDDDr;   )	AllowNoneNoAssignmentOperator
NoCopyCtorNoDefaultCtor	NoReleasePyName	PyQtFlagsTypeHint
TypeHintInTypeHintOutTypeHintValuec                     | j         j        }|j        rdS |                    | d|j                   |                                 dS )z;mapped_type : mapped_type_head '{' mapped_type_body '}' ';'Nr#   )r4   r/   rV   validate_mapped_typerY   	pop_scoper\   s     r9   p_mapped_typer&    sG     
B	{ Aq"(+++LLNNNNNr;   c                     | j         j        }|j        rdS |                    | d|j                   d|_        |                                 dS )zMmapped_type_template : mapped_type_template_head '{' mapped_type_body '}' ';'Nr#   F)r4   r/   rV   r$  rY   parsing_templater%  r\   s     r9   p_mapped_type_templater)    sO     
B	{ Aq"(+++BLLNNNNNr;   c                     | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d                    dS )z1mapped_type_head : MappedType base_type opt_annosNrd   mapped typer#   r   )r4   r/   rV   check_annotations_MAPPED_TYPE_ANNOTATIONSadd_mapped_typer\   s     r9   p_mapped_type_headr/    s_     
B	{ A}.FGGGq!QqT1Q4(((((r;   c                 0   | j         j        }|j        rdS |                    | dd           |                    | ddt
                     | d         j        t          j        ur|	                    | dd           |j
        j        D ]y}|j        j        j        j        | d         j        j        k    rMt          |j        j        j        j        | d         j        j        d	          r|	                    | dd
           zt#          t%          t&          j                  | d                   }|                    | d|| d                    t-          || d                   }|j
        j                            d|           |                    |           dS )zHmapped_type_template_head : template_decl MappedType base_type opt_annosNr#   z%MappedType templatesrc   r+  rd   z-%MappedType template must map a template typeT)deepz=a %MappedType template for this type has already been definedrU   )r4   r/   rV   cpp_onlyr,  r-  r6   r   TEMPLATEr[   rh   mapped_type_templatesmapped_type
definitioncpp_namer   typesr   r   r   MAPPED_TYPEannotate_mapped_typer   insert
push_scope)r?   r/   mttr5  s       r9   p_mapped_type_template_headr>    s    
B	{ KK1-...A}.FGGGty---
1MNNN w, U U?*3qt7OOOTklol{  mA  mL  mR  TU  VW  TX  Tc  Ti  pt  Uu  Uu  UuOOOAqSU U U Y}'@AA1Q4HHKAq+qt444
[!A$
/
/CG!((C000MM+r;   c                     dS )zOmapped_type_body : mapped_type_line
        | mapped_type_body mapped_type_lineNr=   r>   s    r9   p_mapped_type_bodyr@    rA   r;   c                     dS )zmapped_type_line : if_start
        | if_end
        | convert_from_type_code
        | convert_to_type_code
        | enum_decl
        | instance_code
        | mapped_type_function
        | release_code
        | type_code
        | type_header_codeNr=   r>   s    r9   p_mapped_type_linerB    rA   r;   c                    | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d                    |                    | d| d         | d         | d         | d         | d         | d	         | d
         | d         | d         | d                   }d|_        |                    | d|           dS )zmapped_type_function : static cpp_type NAME '(' opt_arg_list ')' opt_const opt_exceptions opt_annos opt_signature ';' opt_docstring premethod_code method_codeN	   functionr   r#   rd      rf      
            )const
exceptionscpp_signaturerp   premethod_codemethod_codeT)	r4   r/   rV   r,  _FUNCTION_ANNOTATIONSapply_type_annotationsadd_function	is_staticvalidate_function)r?   r/   overloads      r9   p_mapped_type_functionrW    s     
B	{ Az+@AAAaAaD!A$///q!QqT1Q41qt1Q4t1R5AbER5ae  5 5H HAx(((((r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z0module_header_code : ModuleHeaderCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   module_header_coder   r\   s     r9   p_module_header_coderZ    sB     
B	{ O-44QqT:::::r;   c                    | j         j        }|j        rdS |j        j        r|                                 |j        }|j        }|j        |	                    | dd           dS t          |           dk    rd| d         i}| d         }n| d         }| d         }	 t          |j        t          |d                             |_        |j        rd	|j        _        n'# t          $ r |	                    | dd
           Y nw xY w|                    dd          |_        |                    d          |_        |                    d          |_        |                    dt(          j                  |_        |                    d          }|1|j        ||_        n"|j        |k    r|	                    | dd           d|v r|d         |_        d|v r|d         |_        d|v r|d         |_        |D ]N}t7          |t8                    r|j                            |           2t7          |t>                    r||_         OdS )zlmodule : Module dotted_name module_body
        | Module begin_args '(' module_args end_args ')' module_bodyNr#   z"%Module has already been specifiedrc   re   r   rd   rf   Tz-the name of the module has not been specifiedall_raise_py_exceptionFdefault_VirtualErrorHandlercall_super_initkeyword_argumentslanguagez cannot mix 'C' and 'C++' modulespy_ssize_t_cleanuse_argument_namesuse_limited_api)!r4   r/   rV   rh   ri   ensure_importrk   rl   rn   r[   rj   r    rm   rg   usedr   r   r\  default_virtual_error_handlerr^  r   NONEkw_args
c_bindingsra  use_arg_namesrc  ro   tupleauto_py_name_rulesr   r	   rp   )r?   r/   rk   rl   r   rq   ri  rJ   s           r9   p_modulerm    s    
B	{  
w  	?L F$
1BCCC
1vv{{!~tttO'T&\1B1BCC 	*%)F" O O O
1MNNNNNO +/((3K+ +L'+/88),+ ,+F(#'88,=#>#>L 88$7EEL*%%J= &BMM]j((OOAq"DEEET!!"&'9":t###$89D  !%&7!8 ) )	i'' 	)+229====	9-- 	)(F	) )s   A C !D ?D c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )z=module_args : module_arg
        | module_args ',' module_argrc   r#   rd   rU   Nrt   r>   s    r9   p_module_argsro  H  rw   r;   c                 H   | j         j        }| d         dk    r|                    | d          }ne| d         dk    rQ| d         dk    rd}nJ| d         dk    rd}n;|                    | dd	                    | d                              d
}n| d         }| d         |i| d<   d
S )am  module_arg : all_raise_py_exception '=' bool_value
        | call_super_init '=' bool_value
        | default_VirtualErrorHandler '=' NAME
        | keyword_arguments '=' STRING
        | language '=' STRING
        | name '=' dotted_name
        | py_ssize_t_clean '=' bool_value
        | use_argument_names '=' bool_value
        | use_limited_api '=' bool_valuer#   r_  rd   r`  CTzC++Fzunsupported language '{0}'NrU   )r4   r/   convert_kw_argsr[   r1   r   s      r9   p_module_argrs  R  s     
Bt"""""1a((	
1		Q43;;EEqTU]]EEOOAq">"E"Ead"K"KLLLEE!aD%=AaDDDr;   c                 F    t          |           dk    r| d         ng | d<   dS )z@module_body : '{' module_body_directives '}' ';'
        | emptyrF  r   rU   Nr|   r>   s    r9   p_module_bodyru  o  r~   r;   c                     t          |           dk    rg }| d         }n| d         }| d         }||                    |           || d<   dS )zemodule_body_directives : module_body_directive
        | module_body_directives module_body_directiver   r#   NrU   r   )r?   rq   r2   s      r9   p_module_body_directivesrw  v  sZ     1vv{{!t!EAaDDDr;   c                     | d         | d<   dS )zZmodule_body_directive : if_start
        | if_end
        | autopyname
        | docstringr#   rU   Nr=   r>   s    r9   p_module_body_directivery         Q4AaDDDr;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z#module_code : ModuleCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   module_coder   r\   s     r9   p_module_coder}    sB     
B	{ O&--ad33333r;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z#pickle_code : PickleCode CODE_BLOCKNr#   z&%PickleCode can only be specified oncer   )r4   r/   rV   rY   pickle_coder[   r\   s     r9   p_pickle_coder    sR     
B	{ 	x'
1FGGGQ4BHr;   c           
      p   | j         j        }g }| d         D ]B}||j        v r|                    |           |                    | d|t
          j                   Ct          |          dk    rI|                    | dd	                    d
                    d |D                                            dS dS )z,platforms : Platforms '{' qualifier_list '}'rd   r#   z/only one of {0} can be selected from %Platforms,c                     g | ]
}d |z   d z   S 'r=   .0ss     r9   
<listcomp>zp_platforms.<locals>.<listcomp>       !B!B!BA#'C-!B!B!Br;   N)r4   r/   tagsr   r   r   PLATFORMrj   r[   r1   join)r?   r/   selected	qual_names       r9   p_platformsr    s     
B HqT B B	OOI&&&
Ay-*@AAAA 8}}q
1AHH!B!B!B!B!BCCE E	F 	F 	F 	F 	F r;   c                 z    | j         j        }|j        rdS |j        j                            | d                    dS )zplugin : Plugin NAMENr   )r4   r/   rV   rh   pluginsr   r\   s     r9   p_pluginr    s>     
B	{ GO1Q4     r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z1postinit_code : PostInitialisationCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   postinitialisation_coder   r\   s     r9   p_postinit_coder    sB     
B	{ O299!A$?????r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z/preinit_code : PreInitialisationCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   preinitialisation_coder   r\   s     r9   p_preinit_coder    sB     
B	{ O1881>>>>>r;   c                    | j         j        }|j        rdS | d                             d          }|#| j         j                            | dd           dS |                    | d|           t          |j        |          }|j        rd|_	        | d                             d          }|#| j         j                            | dd           dS t          ||| d                             d	          
          }| d         D ]}t          |t                    r||_        |j        j                            d|           dS )zOproperty : Property begin_args '(' property_args end_args ')' opt_property_bodyNrc   re   r#   z&a name must be specified for %PropertyTr   z(a getter must be specified for %Propertyset)re   gettersetterrf   rU   )r4   r/   rV   r   r[   check_attributesr    rh   rg   re  r   ro   r	   rp   rY   
propertiesr;  )r?   r/   re   r  proprJ   s         r9   
p_propertyr    sI    
B	{ Q488FD|	  A8	: 	: 	:1d###rw%%D	 	qTXXe__F~	  A:	< 	< 	<fQqTXXe__EEEDqT ' '	i++ 	'&DNHq$'''''r;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zEproperty_args : property_arg
        | property_args ',' property_argrc   r#   rd   rU   Nrt   r>   s    r9   p_property_argsr    rw   r;   c                 ,    | d         | d         i| d<   dS )zJproperty_arg : get '=' NAME
        | name '=' NAME
        | set '=' NAMEr#   rd   rU   Nr=   r>   s    r9   p_property_argr    s    
 aD!A$<AaDDDr;   c                 F    t          |           dk    rg n| d         | d<   dS )z=opt_property_body : empty
        | '{' property_body '}' ';'r   rU   Nr|   r>   s    r9   p_opt_property_bodyr  #  '     Q122!A$AaDDDr;   c                     t          |           dk    rg }| d         }n| d         }| d         }||                    |           || d<   dS )zCproperty_body : property_line
        | property_body property_liner   r#   NrU   r   r   s      r9   p_property_bodyr  *  r   r;   c                     | d         | d<   dS )z=property_line : if_start
        | if_end
        | docstringr#   rU   Nr=   r>   s    r9   p_property_liner  ;  r   r;   c                     | j         j        }|j        rdS |j        j        |                    | dd           | d         |j        _        dS )z%release_code : ReleaseCode CODE_BLOCKNr#   z'%ReleaseCode can only be specified oncer   )r4   r/   rV   rY   release_coder[   r\   s     r9   p_release_coder  E  sR     
B	{ 	x(
1GHHHaDBHr;   c           
         | j         j        }|j        }|j        }|xj        dz  c_        g }t	          | d                   D ]H\  }}||j        v r|                    |           |                    | d|t          j	        ||           It          |          dk    rI|                    | dd                    d                    d |D                                            dS dS )z*timeline : Timeline '{' qualifier_list '}'r#   rd   )r   timelinez3only one of {0} can be selected from this %Timeliner  c                     g | ]
}d |z   d z   S r  r=   r  s     r9   r  zp_timeline.<locals>.<listcomp>n  r  r;   N)r4   r/   rk   nr_timelines	enumerater  r   r   r   TIMErj   r[   r1   r  )r?   r/   rk   r  r  r   r  s          r9   
p_timeliner  U  s    
B ?L(H" H%adOO # #yOOI&&&
Ay-*<E! 	 	# 	# 	# 	# 8}}q
1ELL!B!B!B!B!BCCE E	F 	F 	F 	F 	F r;   c                 z    | j         j        }|j        rdS |j        j                            | d                    dS )ztype_code : TypeCode CODE_BLOCKNr   )r4   r/   rV   rY   	type_coder   r\   s     r9   p_type_coder  s  s?     
B	{ Had#####r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z,type_header_code : TypeHeaderCode CODE_BLOCKNr   )r4   r/   rV   rY   
iface_filetype_header_coder   r\   s     r9   p_type_header_coder    sB     
B	{ H(//!55555r;   c                     | j         j        }|j        rdS |j        }|,|j        j        j                            | d                    dS |j        |                    | dd           | d         |_        dS )z(type_hint_code : TypeHintCode CODE_BLOCKNr   r#   z(%TypeHintCode can only be specified once)	r4   r/   rV   rY   rk   rl   type_hint_coder   r[   r?   r/   rY   s      r9   p_type_hint_coder    s     
B	{  HE}
-44QqT:::::+OOAq"LMMM tr;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )zunit_code : UnitCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   	unit_coder   r\   s     r9   p_unit_coder    sB     
B	{ O$++AaD11111r;   c                     | j         j        }|j        rdS |j        j        j                            | d                    dS )z6unit_postinclude_code : UnitPostIncludeCode CODE_BLOCKNr   )r4   r/   rV   rk   rl   unit_postinclude_coder   r\   s     r9   p_unit_postinclude_coder    sB     
B	{ O077!=====r;   c                    | j         j        }|j        rdS t          |           dk    r| d         }| d         }n>| d                             d          }||                    | dd           dS | d         }|j        j        D ]:}|j        |k    r-|                    | dd		                    |                      dS ;|j        j        
                    t          ||j        j        |                     dS )
zvirtual_error_handler : VirtualErrorHandler NAME CODE_BLOCK
        | VirtualErrorHandler begin_args '(' veh_args end_args ')' CODE_BLOCKNrc   r   rd   re   r#   z1a name must be specified for %VirtualErrorHandlerrf   z=a virtual error handler called '{0}' has already been defined)r4   r/   rV   rj   r   r[   rh   virtual_error_handlersre   r1   r   r   rk   rl   )r?   r/   re   codehandlers        r9   p_virtual_error_handlerr    s'    
B	{ 
1vv{{tttxx<OOAqGI I IFt71 I I<4OOAqSZZ[_``b b bEE  
 	&--#D"/*@$GG	I 	I 	I 	I 	Ir;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )z1veh_args : veh_arg
        | veh_args ',' veh_argrc   r#   rd   rU   Nrt   r>   s    r9   
p_veh_argsr    rw   r;   c                 ,    | d         | d         i| d<   dS )zveh_arg : name '=' NAMEr#   rd   rU   Nr=   r>   s    r9   	p_veh_argr    rz   r;   c                    t          |           dk    r=| d         }d|_        |j                            | d                    | d         |_        n| d         }|j                            | d                    | d         |_        |j        t          j        u rft          |j                  dk    rN|j        j	        dk    r>t          |j                  dk    r&|j        st          j
        |_        d|_        g |_        || d	<   dS )
zLcpp_type : const base_type derefs opt_ref
        | base_type derefs opt_refrF  r   Trd   rc   r#   PyObjectNrU   )rj   is_constderefsextendis_referencer6   r   DEFINEDr6  	base_namePYOBJECTr?   r2   s     r9   
p_cpp_typer    s'    1vv{{!AaD!!!qT!AaD!!!qT :---#e6F2G2G12L2LQVQaQkoyQyQy  B  CH  CO  P  P  TU  U  U  ^c  ^p  U%.EJ#EELAaDDDr;   c           
         | j         j        }t          | d         t                    rt	          | d                   | d<   nt          |           dk    rt	          t          j        | d                   }|j        t          j        u rt          j        |_        t          |j
        |j        |           |j        t          j        t          j        fv r"t	          t          j        | d                   }n|j        t          j        u || d<   nt          |           dk    rkt          | j         j        j                  rt          j        }n%| d         dk    rt          j        }nt          j        }t	          || d                   | d<   nFt	          t          j        t#          | d         t%          | d                                       | d<   |                    | d          | d         _        dS )	zbase_type : pod_type
        | scoped_name
        | scoped_name '<' cpp_types '>'
        | struct scoped_name
        | union scoped_namer#   rU   r   r6  rd   structr   N)r4   r/   ro   r   r   rj   r  r6   rg  r"   rh   r6  r3  boolri  STRUCTUNIONr   r   get_source_locationsource_location)r?   r/   adr6   s       r9   p_base_typer    s    
B!A$%% A!~~!	Q1 l*qt<<<g---"'BGBGR]B777 w<,l.CDDDl2qtDDD g--- !	Q1&'' 	&'DDqTX&DD%D1...!-#AaD)1*>*>*>??A A A! 11!Q77AaDr;   )charintlongshortz...voidr  r  doublefloatr  r  unsignedr  size_twchar_t	Py_hash_t
Py_ssize_tSIP_PYBUFFERSIP_PYCALLABLE
SIP_PYDICT)
SIP_PYENUM
SIP_PYLISTSIP_PYOBJECTSIP_PYSLICESIP_PYTUPLE
SIP_PYTYPESIP_SSIZE_Tc                 D   t          |           dk    rt          j        | d<   dS t          |           dk    rR| d         dk    rt          j        | d<   dS | d         dk    rt          j        | d<   dS t
          | d                  | d<   dS t          | d                  | d<   dS )	aq  pod_type : unsigned long long
        | signed char
        | long long
        | unsigned char
        | unsigned short
        | unsigned int
        | unsigned long
        | unsigned
        | short
        | int
        | long
        | float
        | double
        | bool
        | char
        | wchar_t
        | void
        | SIP_PYOBJECT
        | SIP_PYTUPLE
        | SIP_PYLIST
        | SIP_PYDICT
        | SIP_PYCALLABLE
        | SIP_PYSLICE
        | SIP_PYTYPE
        | SIP_PYBUFFER
        | SIP_PYENUM
        | SIP_SSIZE_T
        | Py_hash_t
        | Py_ssize_t
        | size_t
        | ELLIPSISrc   rU   rd   r#   signedr  r   N)rj   r   	ULONGLONGSSTRINGLONGLONG_UNSIGNED_MAP_ONE_WORD_MAPr>   s    r9   
p_pod_typer  W  s    B 1vv{{%!	Q1Q48'AaDDDqTV^^(AaDDD 1&AaDDDQqT"!r;   c                 $   t          |           dk    r| d         g| d<   dS | d         d         j        t          j        k    r!| j        j                            | dd           | d         | d<   | d                             | d                    dS )z5cpp_types : cpp_type
        | cpp_types ',' cpp_typer   r#   rU   r   rd   z3an ellipsis must be at the end of the argument listN)rj   r6   r   ELLIPSISr4   r/   r[   r   r>   s    r9   p_cpp_typesr    s     1vv{{!v!Q48=L111HK$$QIK K K t!	!AaDr;   c                     t          |           dk    rg | d<   dS | d         | d<   | d                             t          |           dk               dS )z>derefs : empty
        | derefs '*'
        | derefs '*' constr   rU   r#   rc   Nr   r>   s    r9   p_derefsr	    sS    
 1vv{{!t!	!CFFaK     r;   c                 p    | d         d| d<   dS | j         j                            | dd           d| d<   dS )zopt_ref : '&'
        | emptyr#   NFrU   
referencesT)r4   r/   r2  r>   s    r9   	p_opt_refr    sC     	t|!	Q<000!r;   )Abstractr  	DelayDtor
DeprecatedExportDerivedExternalFileExtensionMetatypeMixinNoDefaultCtors
NoTypeHintr  r  PyQtFlagsEnumsPyQtInterfacePyQtNoQMetaObject	Supertyper  r   r!  r"  r   c                     | j         j        }|j        rdS |                    | dd           |j                            | d         | d         f           d|_        dS )z)class_template : template_decl class_declNr#   zclass templatesr   F)r4   r/   rV   r2  class_templatesr   r(  r\   s     r9   p_class_templater    sd     
B	{ KK1'(((qtQqTl+++Br;   c                     | j         j        }|j        rdS |j        j        | d         |j        _        dS |                    | dd           dS )zclass_docstring : docstringNr#   z2%Docstring has already been defined for this class)r4   r/   rV   rY   rp   r[   r\   s     r9   p_class_docstringr    sg     
B	{ 	x!qT
1D	F 	F 	F 	F 	Fr;   c                 ~    | j         j        }|j        rdS |                    | d| d         | d                   | d<   dS )z6class_decl : class class_head opt_class_definition ';'Nr   rd   rU   r4   r/   rV   complete_classr\   s     r9   p_class_declr#    sG     
B	{  Q1Q41..AaDDDr;   c           	      ,   | j         j        }|j        rdS |                    | ddt                     | d         |                    | dd           |                    | dt          j        | d         | d         | d                    | d         | d<   dS )	z/class_head : scoped_name superclasses opt_annosNrd   classr   zsuper-classesr#   superclassesrU   )	r4   r/   rV   r,  _CLASS_ANNOTATIONSr2  define_classr   CLASSr\   s     r9   p_class_headr+    s     
B	{ Aw(:;;;t
Aq/***OOAq(.!A$!1Q4OHHH Q4AaDDDr;   c                 x    | j         j        }|j        rdS |                    | d| d         | d                    dS )z9struct_decl : struct struct_head opt_class_definition ';'Nr   rd   r!  r\   s     r9   p_struct_declr-    D     
B	{ aAaD!A$'''''r;   c           	          | j         j        }|j        rdS |                    | ddt                     |                    | dt          j        | d         | d         | d                    | d         | d<   dS )z0struct_head : scoped_name superclasses opt_annosNrd   r%  r#   r   r&  rU   )r4   r/   rV   r,  r(  r)  r   r  r\   s     r9   p_struct_headr0    sv     
B	{ Aw(:;;;OOAq(/1Q41AaDOIII Q4AaDDDr;   c                 F    t          |           dk    rg n| d         | d<   dS )z2superclasses : ':' superclass_list
        | emptyr   rU   Nr|   r>   s    r9   p_superclassesr2  !  r  r;   c                     t          |           dk    rg }| d         }n| d         }| d         }||                    |           || d<   dS )zEsuperclass_list : superclass
        | superclass_list ',' superclassr   r#   rd   NrU   r   )r?   lr2   s      r9   p_superclass_listr5  (  sW     1vv{{!aD!	AaDDDr;   c                 >   | j         j        }|j        rdS | d         dk    rd| d<   dS t          t          j        | d                   }|j        t          j        u r?t          j        |_        t          |j	        |j
        |           |j        t          j        u ?|j        t          j        us&t          |j                  dk    s|j        s|j        r|                    | dd           |                    | dt"          j        |j
        |j                  | d<   dS )	z%superclass : class_access scoped_nameNr#   publicrU   r   r  z)super-class list contains an invalid type)tmpl_arg)r4   r/   rV   r   r   r  r6   rg  r"   rh   r6  rj   r  r  r  r[   
find_classr   r*  r(  )r?   r/   r  s      r9   p_superclassr:  9  s    
B	{ tx!
 
,&1Q4	8	8	8B
'\)
)
)#333 '\)
)
) 
wl'''3ry>>Q+>+>"++>QSQ`+>
1IJJJ ==A}2BM(  * *AaDDDr;   c                 6    | d         d| d<   | d         | d<   dS )zKclass_access : empty
        | public
        | protected
        | privater#   Nr7  rU   r=   r>   s    r9   p_class_accessr<  V  s'     	t|!Q4AaDDDr;   c                 \    | j         j        }|j        rdS t          |           dk    | d<   dS )z=opt_class_definition : '{' opt_class_body '}'
        | emptyNrc   rU   )r4   r/   rV   rj   r\   s     r9   p_opt_class_definitionr>  b  s3     
B	{ FFaKAaDDDr;   c                     dS )z+opt_class_body : class_body
        | emptyNr=   r>   s    r9   p_opt_class_bodyr@  n  rA   r;   c                     dS )z7class_body : class_line
        | class_body class_lineNr=   r>   s    r9   p_class_bodyrB  s  rA   r;   c                     dS )a  class_line : if_start
        | if_end
        | class_decl
        | class_docstring
        | class_template
        | ctor
        | dtor
        | enum_decl
        | exception
        | typedef_decl
        | method_variable
        | namespace_decl
        | struct_decl
        | union_decl
        | public_specifier
        | protected_specifier
        | private_specifier
        | signals_specifier
        | convert_from_type_code
        | convert_to_subclass_code
        | convert_to_type_code
        | finalisation_code
        | gc_clear_code
        | gc_traverse_code
        | get_buffer_code
        | instance_code
        | pickle_code
        | property
        | release_buffer_code
        | type_code
        | type_header_code
        | type_hint_code
        | BIGetReadBufferCode CODE_BLOCK
        | BIGetWriteBufferCode CODE_BLOCK
        | BIGetSegCountCode CODE_BLOCK
        | BIGetCharBufferCode CODE_BLOCKNr=   r>   s    r9   p_class_linerD  x  rA   r;   )Defaultr  HoldGILKeywordArgs	NoDerivedNoRaisesPyExceptionr  PostHookPreHookRaisesPyException
ReleaseGILTransferc                     | j         j        }|j        rdS t          |           dk    r|                    | dd           dS dS )z-ctor : explicit ctor_decl
        | ctor_declNrd   r#   zexplicit constructors)r4   r/   rV   rj   r2  r\   s     r9   p_ctorrP    sO     
B	{ 
1vv{{
Aq122222 {r;   c                     | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d         | d         | d         | d         | d	         | d
         	  	         dS )z~ctor_decl : NAME '(' opt_arg_list ')' opt_exceptions opt_annos opt_ctor_signature ';' opt_docstring premethod_code method_codeNrT   constructorr#   rd   rF  rf   rD  rH     )rM  rN  rp   rO  rP  )r4   r/   rV   r,  _CTOR_ANNOTATIONSadd_ctorr\   s     r9   p_ctor_declrV    s     
B	{ A}.?@@@KK1adAaDQqT1d1R5ae  E E E E Er;   c                 l    t          |           dk    rt          | d                   | d<   dS d| d<   dS )zAopt_ctor_signature : '[' '(' opt_arg_list ')' ']'
        | emptyrT   rd   r  rU   Nrj   r   r>   s    r9   p_opt_ctor_signaturerY    s<     1vv{{ad###!!r;   )rF  rM  c                    | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d         | d         | d         | d         | d	         | d
         	  	         d|_        dS )z}dtor : opt_virtual '~' NAME '(' ')' opt_exceptions opt_abstract opt_annos ';' premethod_code method_code virtual_catcher_codeNrG  
destructorr#   rd   rT   rf   rH  rS  rI  )rM  abstractrO  rP  virtual_catcher_codeF)r4   r/   rV   r,  _DTOR_ANNOTATIONSadd_dtorparsing_virtualr\   s     r9   p_dtorra    s     
B	{ A|->???KK1adAaDQqTAaDR5ae!"2  ( ( ( Br;   c                 n   | j         j        }t          |           dk    r_| d         }t          |t                    r*| d         dk    rt
          j        nt
          j        |_        n |	                    | dd           n| d         }t          |t                    r|
                    | d|           dS dS )zzmethod_variable : Q_SIGNAL simple_method_variable
        | Q_SLOT simple_method_variable
        | simple_method_variablerd   r   r#   Q_SIGNALz?a PyQt method specifier can only be applied to member functionsN)r4   r/   rj   ro   r   r   SIGNALSLOTpyqt_method_specifierr[   rU  )r?   r/   items      r9   p_method_variablerh    s    
 
B
1vv{{tdH%% 	WGHtzGYGY)<)C)C_r_wD&&OOAqUW W W W t$!! )
Q4((((() )r;   c                     t          |           dk    rC| d         }|8| d         dk    rd|_        n-|j        sd|_        d| j        j        j        _        n| d         }|| d<   dS )zpsimple_method_variable : virtual function
        | static plain_method_variable
        | plain_method_variablerd   r   Nr#   staticTrU   )rj   rT  is_final
is_virtualr4   r/   rY   needs_shadow)r?   rg  s     r9   p_simple_method_variablern    sq    
 1vv{{ttx!%] 6"&15!.tAaDDDr;   c                     | d         | d<   dS )z3plain_method_variable : function
        | variabler#   rU   Nr=   r>   s    r9   p_plain_method_variablerp         Q4AaDDDr;   c                 l    | j         j        }|j        rdS t          j        |_        | d         |_        dS )z'public_specifier : public opt_slots ':'Nr   )r4   r/   rV   r   PUBLICscope_access_specifierscope_pyqt_method_specifierr\   s     r9   p_public_specifierrv    s9     
B	{  / 6B%&qTB"""r;   c                 l    | j         j        }|j        rdS t          j        |_        | d         |_        dS )z-protected_specifier : protected opt_slots ':'Nr   )r4   r/   rV   r   	PROTECTEDrt  ru  r\   s     r9   p_protected_specifierry  *  s9     
B	{  / 9B%&qTB"""r;   c                 l    | j         j        }|j        rdS t          j        |_        | d         |_        dS )z)private_specifier : private opt_slots ':'Nr   )r4   r/   rV   r   PRIVATErt  ru  r\   s     r9   p_private_specifierr|  6  s9     
B	{  / 7B%&qTB"""r;   c                 t    | j         j        }|j        rdS t          j        |_        t          j        |_        dS )z7signals_specifier : signals ':'
        | Q_SIGNALS ':'N)	r4   r/   rV   r   rs  rt  r   rd  ru  r\   s     r9   p_signals_specifierr~  B  s8     
B	{  / 6B%8%?B"""r;   c                 8    | d         dnt           j        | d<   dS )z3opt_slots : slots
        | Q_SLOTS
        | emptyr#   NrU   )r   re  r>   s    r9   p_opt_slotsr  O  s!    
 Q4<44%8%=AaDDDr;   )BaseTypeNoScoper  r  )r  r  c           	          | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d         | d         | d                    dS )zJenum_decl : enum opt_enum_key opt_name opt_annos '{' opt_enum_body '}' ';'Nrc   enumr#   rd   r   rT   )r4   r/   rV   r,  _ENUM_ANNOTATIONSadd_enumr\   s     r9   p_enum_declr  h  si     
B	{ Av'8999KK1adAaD!A$!-----r;   c                      | d         du| d<   dS )zEopt_enum_key : class
        | struct
        | union
        | emptyr#   NrU   r=   r>   s    r9   p_opt_enum_keyr  u  s     Q4tAaDDDr;   c                 0    | d         g n| d         | d<   dS )z)opt_enum_body : enum_body
        | emptyr#   NrU   r=   r>   s    r9   p_opt_enum_bodyr    !     1221Q4AaDDDr;   c                     t          |           dk    rg | d<   | d         }n| d         | d<   | d         }|| d                             |           dS dS )z3enum_body : enum_line
        | enum_body enum_liner   rU   r#   Nr   )r?   lines     r9   p_enum_bodyr    sg     1vv{{!tt!t	!D r;   c           	      ^   | j         j        }|j        rd| d<   dS t          |           dk    rz|                    | ddt
                     | d         t          |j        |                    | d         | d                             | d         	                    dd          f| d<   dS d| d<   dS )	zXenum_line : if_start
        | if_end
        | NAME opt_enum_assign opt_annos opt_commaNrU   rF  rd   zenum memberr#   r  F)
r4   r/   rV   rj   r,  _ENUM_MEMBER_ANNOTATIONSr    rh   get_py_namer   r\   s     r9   p_enum_liner    s    
 
B	{ !
1vv{{
Q=2JKKK!k"'2>>!A$!+E+EFF!u--/! !r;   c                     dS )z+opt_enum_assign : '=' value
        | emptyNr=   r>   s    r9   p_opt_enum_assignr    rA   r;   c                     dS )zopt_comma : empty
        | ','Nr=   r>   s    r9   p_opt_commar    rA   r;   )rE  r  c                 h   | j         j        }|j        rdS |                    | dd           |                    | ddt
                     | d         }|                    |j        | d                   }|                    | d|           | d         \  }}| d         	                    d	          }| d         	                    d
          }||
                    | dd           |                    | d||          }|j        j        }	|j        j        |
                    | dd           |	|j        _        ||j        j                            |           ||_        ||_        ||_        | d         	                    d          r)|	j        	||	_        dS |
                    | dd           dS dS )zYexception : Exception scoped_name opt_base_exception opt_annos '{' exception_body '}' ';'Nr#   z
%Exceptionrc   	exceptionr   rd   rT   z
%RaiseCodez%TypeHeaderCodez/%Exception must have a %RaiseCode sub-directive)
raise_codez5an %Exception with this name has already been definedrE  z>another %Exception has already been annotated with '/Default/')r4   r/   rV   r2  r,  _EXCEPTION_ANNOTATIONSr  r  r  r   r[   find_exceptionrk   rl   r  r  r   builtin_base_exceptiondefined_base_exceptionpy_namedefault_exception)
r?   r/   r7  r  builtin_basedefined_baser  r  xdrl   s
             r9   p_exceptionr    s    
B	{ KK1l###A{,BCCCtHnnX/166G1g&&&!"1L,1,''Jtxx 122
1A	C 	C 	C 
		1aj		A	AB_#F	}'
1G	I 	I 	I "BM#
&--.>??? ,B ,BBJtxx	 V#+')F$$$OOAqTV V V V V	V Vr;   c                 d   d}d}t          |           dk    r| d         }|                                 | j        j        j        j        D ]}|j        j        |k    r|} nIt          |          dk    r5|j        	                    d          r|j        dd         }ddl
m} ||v r|}||f| d<   dS )z8opt_base_exception : '(' scoped_name ')'
        | emptyNrc   r   r#   SIP_)PYTHON_EXCEPTIONSrU   )rj   make_absoluter4   r/   rh   rM  r  fq_cpp_namer  
startswithpython_exceptionsr  )r?   r  r  baser  r  r  s          r9   p_opt_base_exceptionr    s     LL
1vv{{t (+"- 	+ 	+B}(D00! 1
 4yyA~~$.";";F"C"C~.,@@@@@@///#*L,'AaDDDr;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zGexception_body : exception_line
        | exception_body exception_linerd   r#   r   rU   Nrt   r>   s    r9   p_exception_bodyr  		  rw   r;   c                 x    t          |           dk    s| j        j        j        ri n| d         | d         i| d<   dS )zmexception_line : if_start
        | if_end
        | RaiseCode CODE_BLOCK
        | TypeHeaderCode CODE_BLOCKr   r#   rU   Nrj   r4   r/   rV   r>   s    r9   p_exception_liner  	  s:     Q1 4221Q41,AaDDDr;   )!__len____imatmul__
__matmul__AbortOnExceptionr  AutoGenr  DisallowNoneEncodingFactoryrF  rG  KeepReference	NewThreadNoArgParserNoCopyrI  r  NoVirtualErrorHandlerNumericrJ  rK  PyIntr  PyQtSignalHackrL  rM  Sequencer   rN  TransferBackTransferThisr  c                     | d         | d<   dS )zpfunction : function_decl
        | assignment_operator_decl
        | operator_decl
        | operator_cast_declr#   rU   Nr=   r>   s    r9   
p_functionr  D	  rz  r;   c                    | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d                    |                    | d| d         | d         | d         | d         | d         | d         | d	         | d
         | d         | d         | d         | d         | d         | d                   | d<   dS )zfunction_decl : cpp_type NAME '(' opt_arg_list ')' opt_const opt_final opt_exceptions opt_abstract opt_annos opt_signature ';' opt_docstring premethod_code method_code virtual_catcher_code virtual_call_codeNrH  rE  r#   r   rc   rT   rf   rG  rD  rS  rJ  rK           )
rL  finalrM  r\  rN  rp   rO  rP  r]  virtual_call_coderU   )r4   r/   rV   r,  rQ  rR  rS  r\   s     r9   p_function_declr  M	  s     
B	{ B
,ABBBaQqT1R5111??1a1qtQqT1R5!A$1Q4!A$aeeAbEqu!"2!B%  A AAaDDDr;   c                     | j         j        }|j        rdS |j        t          j        u rd|j        _        dS |                    | dd           dS )zEassignment_operator_decl : cpp_type operator '=' '(' cpp_type ')' ';'NTr   zNan assignment operator may only be specified in the private section of a class)	r4   r/   rV   rt  r   r{  rY   cannot_assignr[   r\   s     r9   p_assignment_operator_declr  ^	  si     
B	{ 	 O$;;;!%
1`	b 	b 	b 	b 	br;   c                 \   | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d                    |j        }|t          | d                   dk    s|<t          | d                   dk    r#| d         dk    rd	| d<   n| d         d
k    rd| d<   |                    | d| d         | d         | d         | d         | d         | d         | d         | d         | d         | d         | d         | d         | d                   | d<   dS )zoperator_decl : cpp_type operator operator_name '(' opt_arg_list ')' opt_const opt_final opt_exceptions opt_abstract opt_annos opt_signature ';' premethod_code method_code virtual_catcher_code virtual_call_codeNrS  rE  r#   rF  rU   rd   __add____pos____sub____neg__rf   rG  rD  rH  rI  rK  r  r  r  	rL  r  rM  r\  rN  rO  rP  r]  r  )	r4   r/   rV   r,  rQ  rR  rY   rj   rS  r  s      r9   p_operator_declr  m	  s:    
B	{ B
,ABBBaQqT1R5111HE 	c!A$ii1nn%-C!IIQRNNQ49AaDDqTYAaD??1a1qtQqT1R5!A$1Q4!B%quR5ae!"2!B%  A AAaDDDr;   c                    | j         j        }|j        rdS |                    | ddt                     |                    | d| d         | d                    |j        |                    | dd           t          | d                   dk    r|                    | dd	           d}| d         }|j	        t          v rd
}n;|j	        t          v rd}n*|j	        t          j        ur|                    | dd           |[|j        j        D ],}|j        |j        k    r|                    | dd            dS -|j        j                            d|           dS |                    | d|| d         | d         | d         | d         | d         | d         | d         | d         | d         | d         | d         | d                   | d<   dS )zoperator_cast_decl : operator cpp_type '(' opt_arg_list ')' opt_const opt_final opt_exceptions opt_abstract opt_annos opt_signature ';' premethod_code method_code virtual_catcher_code virtual_call_codeNrH  rE  r   r#   z7operator casts can only be specified as part of a classrc   rU   z(operator casts cannot have any arguments__int__	__float__zunsupported operator castz7operator cast has already been specified for this classrT   rf   rG  rD  rS  rJ  rK  r  r  r  )r4   r/   rV   r,  rQ  rR  rY   r[   rj   r6   
_INT_TYPES_FLOAT_TYPESr   r  castsr6  r;  rS  )r?   r/   	slot_namecpp_typecasts        r9   p_operator_cast_declr  	  s    
B	{ B
,ABBBaQqT1R5111	x
1I	K 	K 	K 1Q4yyA~~
1HIII ItH}
""			,	&	&			l2	2	2
19:::HN 	/ 	/D("5551QS S S 6
 HN!!!X.....q!Y!adAbE1dqtadeAbEqu%&rUae  E E!r;   c                    | d         g }nn| d         }t          | j        j        j                  rHt	          |          dk    r5|d         }|j        t          j        u rt	          |j                  dk    rg }|| d<   dS )z'opt_arg_list : arg_list
        | emptyr#   NrU   )	r  r4   r/   ri  rj   r6   r   VOIDr  )r?   arg_listargs      r9   p_opt_arg_listr  	  s     	t|Q4 &'' 	CMMQ,>,>1+Cx<,,,SZA1E1EAaDDDr;   c                     t          |           dk    r
| d         g}n#| d         }|                    | d                    || d<   dS )z5arg_list : arg_value
        | arg_list ',' arg_valuer   r#   rd   rU   Nr   )r?   r  s     r9   
p_arg_listr  	  sL     1vv{{aD6Q4!AaDDDr;   c                 B    | d         | d<   | d         | d         _         dS )zarg_value : arg_type opt_assignr#   rU   r   N)default_valuer>   s    r9   p_arg_valuer  	  s'     Q4AaD1AaDr;   )r  Array	ArraySizeConstrainedr  r  
GetWrapperInr  r  Outr  
ResultSizeScopesStrippedrN  r  r  r  r   r!  r"  c                    | j         j        }|                    | ddt                     | d         }| d         }| d          t	          |j        | d                   |_        |                    | d||           d|v }d|v }|r+|r|                    | dd           t          j
        |_        n|rt          j        |_        |                    | d||           d	|v rd
|_        |j        t           j        u rt           j        |_        nn|j        t           j        u rt           j        |_        nI|j        t           j        u rt           j        |_        n$|j        t           j        u rt           j        |_        |                    dd          |_        |                    dd          |_        |                    dd          |_        |                    dd          |_        	 |d         |_        |j        dk    r|                    | dd           n# t>          $ r
 d|_        Y nw xY w|                     | d|          |_!        || d<   dS )z&arg_type : cpp_type opt_name opt_annosrd   argumentr#   r   Nr  r  z0/Array/ and /ArraySize/ cannot both be specifiedr  Tr  Fr  r  r  r  rU   z'/ScopesStripped/ must be greater than 0)"r4   r/   r,  _ARGUMENT_ANNOTATIONSr    rh   re   !apply_common_argument_annotationsr[   r   ARRAYarray
ARRAY_SIZErR  is_constrainedr6   r   BOOLCBOOLINTCINTFLOATCFLOATDOUBLECDOUBLEr   get_wrapperis_inis_outresult_sizescopes_strippedr   get_transfertransfer)r?   r/   r  annotations	has_arrayhas_array_sizes         r9   
p_arg_typer  
  sQ    
BAz+@AAA
A$CA$Ktrw!--((AsK@@@;&I K/N - 	HOOAqFH H H "'			 -!,	aC555##!8|(((#)CHHX)))#(CHHX+++#*CHHX,,,#+CH!oolE::COe,,CI..CJ!oolE::CO )*:;!##OOAq"KLLL        ??1a55CLAaDDDs   %/H H)(H)c                 F    t          |           dk    r| d         nd| d<   dS )z%opt_assign : '=' expr
        | emptyrd   r   NrU   r|   r>   s    r9   p_opt_assignr  J
  '     q66Q;;1Q44DAaDDDr;   c                     t          |           dk    r
| d         g}n6| d         }| d         |d         _        |                    | d                    || d<   dS )z'expr : value
        | expr binop valuer   r#   r   rd   rU   N)rj   binary_operatorr   )r?   exprs     r9   p_exprr  Q
  s\     1vv{{!vt#$Q4R AaDAaDDDr;   c                 T    | d         }| d         |_         | d         |_        || d<   dS )z&value : opt_cast opt_unop simple_valuerd   r#   r   rU   N)r  unary_operatorr  s     r9   p_valuer  _
  s1     aDE1EJQ4EAaDDDr;   c                     | d         | d<   dS )zsimple_value : empty_value
        | function_call_value
        | null_value
        | number_value
        | quoted_char_value
        | real_value
        | scoped_name_value
        | string_valuer#   rU   Nr=   r>   s    r9   p_simple_valuer  i
  s     Q4AaDDDr;   c                 @    t          t          j        d          | d<   dS )zempty_value : '{' '}'NrU   )r   r   EMPTYr>   s    r9   p_empty_valuer  v
  s     $''AaDDDr;   c                 t    t          t          j        t          | d         | d                             | d<   dS )z5function_call_value : base_type '(' opt_expr_list ')'r#   rd   rU   N)r   r   FCALLr   r>   s    r9   p_function_call_valuer!  |
  s/     ,qtQqT":":;;AaDDDr;   c                 @    t          t          j        d          | d<   dS )znull_value : NULLrU   Nr   r   NUMERICr>   s    r9   p_null_valuer%  
  s     "A&&AaDDDr;   c                 L    t          t          j        | d                   | d<   dS )z*number_value : NUMBER
        | bool_valuer#   rU   Nr#  r>   s    r9   p_number_valuer'  
  s"     "AaD))AaDDDr;   c                 L    t          t          j        | d                   | d<   dS )zquoted_char_value : QUOTED_CHARr#   rU   N)r   r   QCHARr>   s    r9   p_quoted_char_valuer*  
  s!     !A$''AaDDDr;   c                 L    t          t          j        | d                   | d<   dS )zreal_value : REALr#   rU   N)r   r   REALr>   s    r9   p_real_valuer-  
  s!     1&&AaDDDr;   c                 L    t          t          j        | d                   | d<   dS )zscoped_name_value : scoped_namer#   rU   N)r   r   SCOPEDr>   s    r9   p_scoped_name_valuer0  
  "     !1Q4((AaDDDr;   c                 L    t          t          j        | d                   | d<   dS )zstring_value : STRINGr#   rU   N)r   r   STRINGr>   s    r9   p_string_valuer4  
  r1  r;   c                 0    | d         g n| d         | d<   dS )z)opt_expr_list : expr_list
        | emptyr#   NrU   r=   r>   s    r9   p_opt_expr_listr6  
  r  r;   c                     t          |           dk    r
| d         g}n#| d         }|                    | d                    || d<   dS )z-expr_list : expr
        | expr_list ',' exprr   r#   rd   rU   Nr   r  s     r9   p_expr_listr8  
  L     1vv{{1!QqTAaDDDr;   c                 F    t          |           dk    r| d         nd| d<   dS )z.opt_cast : '(' scoped_name ')'
        | emptyrc   r   NrU   r|   r>   s    r9   
p_opt_castr;  
  r  r;   c                     | d         | d<   dS )zQbinop : '-'
        | '+'
        | '*'
        | '/'
        | '&'
        | '|'r#   rU   Nr=   r>   s    r9   p_binopr=  
  s     Q4AaDDDr;   c                     | d         | d<   dS )zdopt_unop : empty
        | '!'
        | '~'
        | '-'
        | '+'
        | '*'
        | '&'r#   rU   Nr=   r>   s    r9   
p_opt_unopr?  
  s     Q4AaDDDr;   c                     | d         dk    r| d         | d<   dS | d         dk    rt                      | d<   dS d| d<   dS )zTopt_exceptions : empty
        | noexcept
        | throw '(' opt_exception_list ')'r#   throwrd   rU   noexceptNr   r>   s    r9   p_opt_exceptionsrD  
  sQ    
 	twt!	
1		!!r;   c                 L    | d         t          g           n| d         | d<   dS )z3opt_exception_list : exception_list
        | emptyr#   N	argumentsrU   rC  r>   s    r9   p_opt_exception_listrH  
  s-     ,-Q4<>B''''QqTAaDDDr;   c                 "   | j         j        }t          |           dk    r-t          |                    | d| d                   g          }n=| d         }|j                            |                    | d| d                              || d<   dS )zEexception_list : scoped_name
        | exception_list ',' scoped_namer   r#   rF  rd   rU   N)r4   r/   rj   r   r  rG  r   )r?   r/   
throw_argss      r9   p_exception_listrK  
  s     
B
1vv{{#r/@/@Aqt/L/L.MNNN

qT
##B$5$5aAaD$A$ABBBAaDDDr;   c                     t          |           dk    rd| d<   dS | d         dk    r!| j        j                            | dd           d| d<   dS )z)opt_abstract : '=' NUMBER
        | emptyr   FrU   z'0' expectedTN)rj   r4   r/   r[   r>   s    r9   p_opt_abstractrM  
  sV     1vv{{!Q4199HK$$Q>:::!r;   c                 z    t          |           dk    r"t          | d         | d                   | d<   dS d| d<   dS )zEopt_signature : '[' cpp_type '(' opt_arg_list ')' ']'
        | emptyrf   rc   r   )r   resultrU   NrX  r>   s    r9   p_opt_signaturerP  	  sB     1vv{{ad1Q4000!!r;   +r  -r  *__mul__/__truediv__%__mod__&__and__|__or__^__xor__z<<
__lshift__z>>
__rshift__z+=__iadd__z-=__isub__z*=__imul__z/=__itruediv__z%=__imod__z&=__iand__z|=__ior____ixor____ilshift____irshift__
__invert____call____getitem____lt____le____eq____ne____gt____ge__)z^=z<<=z>>=~z()z[]<z<=z==z!=>z>=c                 \    t           d                    | dd                            | d<   dS )a  operator_name : '+'
        | '-'
        | '*'
        | '/'
        | '%'
        | '&'
        | '|'
        | '^'
        | '<' '<'
        | '>' '>'
        | '+' '='
        | '-' '='
        | '*' '='
        | '/' '='
        | '%' '='
        | '&' '='
        | '|' '='
        | '^' '='
        | '<' '<' '='
        | '>' '>' '='
        | '~'
        | '(' ')'
        | '[' ']'
        | '<'
        | '<' '='
        | '=' '='
        | '!' '='
        | '>'
        | '>' '='r   r#   NrU   )_OPERATOR_NAME_MAPr  r>   s    r9   p_operator_namery  4  s(    > bggaenn-AaDDDr;   c                 F    t          |           dk    r| d         nd| d<   dS )z3method_code : MethodCode CODE_BLOCK
        | emptyrd   r   NrU   r|   r>   s    r9   p_method_coder{  V  r  r;   c                 F    t          |           dk    r| d         nd| d<   dS )z9premethod_code : PreMethodCode CODE_BLOCK
        | emptyrd   r   NrU   r|   r>   s    r9   p_premethod_coder}  ]  r  r;   c                 F    t          |           dk    r| d         nd| d<   dS )z>virtual_call_code : VirtualCallCode CODE_BLOCK
        | emptyrd   r   NrU   r|   r>   s    r9   p_virtual_call_coder  d  r  r;   c                 F    t          |           dk    r| d         nd| d<   dS )zDvirtual_catcher_code : VirtualCatcherCode CODE_BLOCK
        | emptyrd   r   NrU   r|   r>   s    r9   p_virtual_catcher_coder  k  r  r;   )r  c                     | j         j        }|j        rdS |j        r'd|j        j        j        _        d|j        j        _        |	                                 dS )z@namespace_decl : namespace namespace_head opt_namespace_body ';'NT)
r4   r/   rV   rg   rY   r  r7  re  r  r%  r\   s     r9   p_namespace_declr  z  sU     
B	{ 	 %,0$) $LLNNNNNr;   c           	      z   | j         j        }|j        rdS |                    | dd           |                    | ddt
                     |                    | dt          j        t          | d         |j
                            }| d                             dd          |_        |                    |           dS )z&namespace_head : scoped_name opt_annosNr#   
namespacesr   r   r  F)r4   r/   rV   r2  r,  _NAMESPACE_ANNOTATIONSr   r   r   r!   rY   r   pyqt_no_qmetaobjectr<  )r?   r/   r   s      r9   p_namespace_headr    s     
B	{ KK1l###A{,BCCCQ=#:"1Q4224 4I %&aDHH-@%$H$HI!MM)r;   c                     dS )z;opt_namespace_body : '{' namespace_body '}'
        | emptyNr=   r>   s    r9   p_opt_namespace_bodyr    rA   r;   c                     dS )zQnamespace_body : namespace_statement
        | namespace_body namespace_statementNr=   r>   s    r9   p_namespace_bodyr    rA   r;   )Capsuler  
NoTypeNamer  r  r  r   r!  c                    | j         j        }|j        rdS t          |           dk    r| d         }d}d}| d         }n| d         }d}d}| d	         }| |         }t	          t          |          |j                  }| |         }|                    | |d
t                     |	                    | |||           |
                    dd          }	|j        t          j        u r8|                    | |||j        |                    ||          |	|          }
|
rdS d|v ri|j        t          j        u r?t          |j                  dk    r'|j        s |j        st          j        |_        g |_        n|                    | |d           |                    | |t1          ||j        j        |j        ||	                     dS )ztypedef_decl : typedef cpp_type NAME opt_annos ';' opt_docstring
        | typedef cpp_type '(' '*' NAME ')' '(' cpp_types ')' opt_annos ';' opt_docstringNrf   r   rd   rc   rT   rF  rH  rI  typedefr  Fr  r#   z0/Capsule/ can only be specified for a void* type)no_type_name)r4   r/   rV   rj   r!   r   rY   r,  _TYPEDEF_ANNOTATIONSrR  r   r6   r   r3  instantiate_class_templater6  r  r  r  r  r  CAPSULEr[   add_typedefr   rk   rl   )r?   r/   r6   name_symbolannos_symbolrp   r7  r  r  r  instantiateds              r9   p_typedef_declr    s    
B	{ 
1vv{{taD		tbE	~H(H)=)=rxHHKL/KL)5IJJJat[AAA??<77L yL)))44QT_x55|YP P  	F K9)))c$+.>.>!.C.CDM.Cbfbs.C$,DIDKKOOA|FH H H NN1k;(>$!-/ / /0 0 0 0 0r;   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  c                 x    | j         j        }|j        rdS |                    | d| d         | d                    dS )z6union_decl : union union_head opt_class_definition ';'Nr   rd   r!  r\   s     r9   p_union_declr    r.  r;   c                     | j         j        }|j        rdS |                    | ddt                     |                    | dt          j        | d         | d                    | d         | d<   dS )z"union_head : scoped_name opt_annosNr   unionr#   rU   )r4   r/   rV   r,  _UNION_ANNOTATIONSr)  r   r  r\   s     r9   p_union_headr    sn     
B	{ Aw(:;;;OOAq(.!A$!555 Q4AaDDDr;   )r  NoSetterr  r  r  r  c                 D   | j         j        }|j        rdS | d         }| d         }d}| d         }| |         }|                    | |dt                     |                    | |||           t          |j        |                    || d                             }|j	        rd|_
        t          ||j                  }t          ||j        j        ||j        |          }	|                    dd	          |	_        |                    d
d	          |	_        |                    d          |	_        |                    d          |	_        |                    d          |	_        |                    | d|	           |j        j                            |	           |	| d<   dS )z4variable : cpp_type NAME opt_annos variable_body ';'Nr#   r   rd   rc   variableTr  Fr  z%AccessCodez%GetCodez%SetCoderU   )r4   r/   rV   r,  _VARIABLE_ANNOTATIONSrR  r    rh   r  rg   re  r!   rY   r   rk   rl   r   	no_setterno_type_hintaccess_codeget_codeset_codevalidate_variable	variablesr   )
r?   r/   r6   r7  r  rq   r  r  r  r  s
             r9   
p_variabler  -  s    
B	{ Q4DtHLQ4DL/KL*6KLLLat[AAA"'2>>(AaD#A#ABBG	 (28<<K{BO,BGHd H %U;;H'OOL%@@H88M22H,,H,,HAx(((GX&&&AaDDDr;   c                 F    t          |           dk    r| d         ni | d<   dS )z@variable_body : '{' variable_body_directives '}'
        | emptyrc   r   rU   Nr|   r>   s    r9   p_variable_bodyr  W  r~   r;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )zmvariable_body_directives : variable_body_directive
        | variable_body_directives variable_body_directiverd   r#   r   rU   Nrt   r>   s    r9   p_variable_body_directivesr  ^  rw   r;   c                 x    t          |           dk    s| j        j        j        ri n| d         | d         i| d<   dS )zvariable_body_directive : if_start
        | if_end
        | AccessCode CODE_BLOCK
        | GetCode CODE_BLOCK
        | SetCode CODE_BLOCKr   r#   rU   Nr  r>   s    r9   p_variable_body_directiver  h  s:     Q1 4221Q41,AaDDDr;   c                 F    t          |           dk    r| d         ni | d<   dS )z/opt_annos : '/' annotations '/'
        | emptyrc   r   rU   Nr|   r>   s    r9   p_opt_annosr  t  r~   r;   c                     t          |           dk    r!| d                             | d                    | d         | d<   dS )z=annotations : annotation
        | annotations ',' annotationrc   r#   rd   rU   Nrt   r>   s    r9   p_annotationsr  {  rw   r;   c                     t          |           dk    rdn| d         }| j        j                            | d|          }| d         |i| d<   dS )z5annotation : NAME
        | NAME '=' annotation_valuer   Nrd   r#   rU   )rj   r4   r/   validate_annotationr  s     r9   p_annotationr    sO     FFaKKDDQqTEHK++Aq%88EaD%=AaDDDr;   c                     | d         | d<   dS )z@annotation_value : dotted_name
        | STRING
        | NUMBERr#   rU   Nr=   r>   s    r9   p_annotation_valuer    r   r;   ))leftSCOPEc                     t          |           dk    rH| j        j                            | dd           | d                                          | d         | d<   dS | d         | d<   dS )zGscoped_name : SCOPE relative_scoped_name
        | relative_scoped_namerd   r#   scoped namesr   rU   N)rj   r4   r/   r2  r  r>   s    r9   p_scoped_namer    sg     1vv{{	Q>222	!t!t!r;   c                     t          |           dk    rt          | d                   | d<   dS | j        j                            | dd           | d                             | d                    | d         | d<   dS )zErelative_scoped_name : NAME
        | relative_scoped_name SCOPE NAMEr   r#   rU   r  rd   N)rj   r   r4   r/   r2  r   r>   s    r9   p_relative_scoped_namer    ss     1vv{{!A$!	Q>222	!AaDt!r;   c                 p    | j         j        }|j        rdS t          | d                   | d<   d|_        dS )z*template_decl : template '<' cpp_types '>'Nrd   r  rU   T)r4   r/   rV   r   r(  r\   s     r9   p_template_declr    sB     
B	{ !A$AaDBr;   c                 H    | d                                          dk    | d<   dS )z@bool_value : true
        | True
        | false
        | Falser#   truerU   N)lowerr>   s    r9   p_bool_valuer    s"     aDJJLLF"AaDDDr;   c                 6    t          | d                   | d<   dS )z(dotted_name : NAME
        | DOTTED_NAMEr#   rU   Nr$   r>   s    r9   p_dotted_namer    s     adAaDDDr;   c                     | d         | d<   dS )z:file_path : NAME
        | DOTTED_NAME
        | FILE_PATHr#   rU   Nr=   r>   s    r9   p_file_pathr    r   r;   c                     d| d<   dS )zempty :NrU   r=   r>   s    r9   p_emptyr    s     AaDDDr;   c                      | d         du| d<   dS )z!opt_const : const
        | emptyr#   NrU   r=   r>   s    r9   p_opt_constr         Q4tAaDDDr;   c                     | d         | d<   dS )z)opt_docstring : docstring
        | emptyr#   rU   Nr=   r>   s    r9   p_opt_docstringr    rq  r;   c                      | d         du| d<   dS )z!opt_final : final
        | emptyr#   NrU   r=   r>   s    r9   p_opt_finalr    r  r;   c                     | d         | d<   dS )zopt_name : NAME
        | emptyr#   rU   Nr=   r>   s    r9   
p_opt_namer    rq  r;   c                 R    | j         j        }|j        rdS | d         	d|_        dS dS )z%opt_virtual : virtual
        | emptyNr#   T)r4   r/   rV   r`  r\   s     r9   p_opt_virtualr    s<     
B	{ t! r;   c                 \   | j         j        }t          |           }|dk    r|                    | d          | d<   dS |dk    r|                    | dd          | d<   dS |dk    r#| d         p|                    | d          | d<   dS | d         p|                    | dd          | d<   dS )	zored_qualifiers : NAME
        | '!' NAME
        | ored_qualifiers LOGICAL_OR NAME
        | ored_qualifiers LOGICAL_OR '!' NAMEr   r#   rU   rd   T)invertedrc   N)r4   r/   rj   evaluate_feature_or_platform)r?   r/   
nr_symbolss      r9   p_ored_qualifiersr    s     
BQJQ..q!44!	q..q!d.CC!	qt<r66q!<<!tKr66q!d6KK!r;   c                     t          |           dk    r
| d         g}n#| d         }|                    | d                    || d<   dS )z3qualifier_list : NAME
        | qualifier_list NAMEr   r#   rU   Nr   r  s     r9   p_qualifier_listr  #  r9  r;   c                     t          |           dk    r| d         | d<   dS | j        j                            | dd          | d<   dS )z<qualifiers : ored_qualifiers
        | opt_name '-' opt_namer   r#   rU   rd   N)rj   r4   r/   evaluate_timeliner>   s    r9   p_qualifiersr  0  sG     1vv{{t!x{,,Q155!r;   (+  scoped_namer   r'   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	templatesr   utilsr    r!   r"   r  r%   r&   r4   startr:   r@   rC   rE   rH   rL   rN   rQ   rW   r]   r`   rr   rv   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r-  r&  r)  r/  r>  r@  rB  rW  rZ  rm  ro  rs  ru  rw  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  USTRINGUINTULONGUSHORTr  r  r  r  r3  r  r  SHORTr  LONGSIZEWSTRINGHASHSSIZEPYBUFFER
PYCALLABLEPYDICTPYENUMPYLISTr  PYSLICEPYTUPLEPYTYPEr  r  r  r	  r  r(  r  r  r#  r+  r-  r0  r2  r5  r:  r<  r>  r@  rB  rD  rT  rP  rV  rY  r^  ra  rh  rn  rp  rv  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rQ  r  r  r  r  r  BYTESBYTEUBYTEr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r%  r'  r*  r-  r0  r4  r6  r8  r;  r=  r?  rD  rH  rK  rM  rP  rx  ry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  
precedencer  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r;   r9   <module>r     sP  0 % $ $ $ $ $> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 0 / / / / / H H H H H H H H H H # # # # # #       
 	  ,% % %
 #  #  #F   # # #- - -" " "+ + +$ $ $' ' ' + + +") ) )>    ' ' '  "  + + +"- - -") ) ) 0 0 0] ] ] c c c F F F C C C,D D D,  .  $     . . .	5 	5 	5; ; ;8    K K K& & & " " " % % % ) ) )0    
# 
# 
#< < <@ @ @
( ( (2 2 2     B B B
  G G G     < < <" " " - - -@     
 
 
  
) 
) 
)  D/ / /

 
 
) ) ),; ; ;B) B) B)J    :' ' '  "  4 4 4      F F F0! ! !@ @ @? ? ? (  (  (F    ' ' '  "  ! ! ! F F F<$ $ $6 6 6$ $ $.2 2 2> > >I I I>      .)8 )8 )8\ $!"#	 	-
) ) +	
 + * * 
( ) ) ) , ) * -  /!" +#$ %+$+$-$,$,$+$*1  8+# +# +#\  	! 	! 	!	 	 	 4     F F F	/ 	/ 	/  &( ( (   ' ' '  "* * *:	 	 		 	 	  
# # #
$, $, $,P  
3 
3 
3E E E     ") ) ),  (  	* 	* 	*	* 	* 	*	* 	* 	*
@ 
@ 
@> > >  
. 
. 
.  ( ( (    (  
   -V -V -V`( ( (:  G G G" J  A A A"b b bA A A8 
& 	*E *E *EZ  &
 
 
   28 8 8v) ) )    
 
 
( ( (< < <' ' '* * *( ( (' ' ') ) )) ) )( ( (
 
 
) ) )  	 	 	
 
 
B B B  
 
 
  II I M	
 I I H I 	L 	L 	J 	J 	J 	N 	J  	J!" 	I#$ ;   @. . .D) ) )) ) )) ) )) ) ) 
    $  
0 0 0	 20 20 20p 0( ( (  ( ' ' 'T' ' '  G G G' ' '      

	 	 		 	 	
 
 
$ $ $              
" 
" 
"L L L(
 
 
6 6 6 6 6r;   