
    -Ph                   
   d dl mZ d dlZd dlZd dlmZ d dlmZ 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 d dlmZmZmZmZmZ er,d dlmZmZmZ d d	lmZm Z  d d
l!m"Z" d dl#m$Z$ d dl%m&Z& d dlm'Z'm(Z(  G d de          Z) G d de)          Z* G d de)          Z+ G d de)          Z, G d de)          Z- G d de-          Z. G d de.          Z/ G d de.          Z0 G d de.          Z1 G d  d!e.          Z2 G d" d#e.          Z3 G d$ d%e.          Z4 G d& d'e-          Z5 G d( d)e-          Z6 G d* d+e-          Z7 G d, d-e-          Z8 G d. d/e)          Z9 G d0 d1e9          Z: G d2 d3e9          Z; G d4 d5e9          Z< G d6 d7e9          Z= G d8 d9e9          Z> G d: d;e9          Z? G d< d=e-          Z@ G d> d?e-          ZA G d@ dAe-          ZB G dB dCe-          ZC G dD dEe-          ZD G dF dGe-          ZE G dH dIe-          ZF G dJ dKe-          ZG G dL dMe-          ZH G dN dOe-          ZI G dP dQe-          ZJ G dR dSe-          ZK G dT dUe-          ZL G dV dWe-          ZM G dX dYe)          ZN G dZ d[e-          ZO G d\ d]e-          ZP G d^ d_e-          ZQ G d` dae)          ZR G db dceR          ZS G dd deeR          ZT G df dgeR          ZU G dh die)          ZV G dj dke)          ZW G dl dme)          ZX G dn doeX          ZY G dp dqeX          ZZ G dr dseX          Z[ G dt dueX          Z\ G dv dwe)          Z] G dx dye)          Z^ G dz d{e)          Z_ G d| d}e)          Z` G d~ de)          Za G d de)          Zb G d de)          Zc G d de)          Zd G d ded          Ze G d ded          Zf G d ded          Zg G d ded          Zh G d ded          Zi G d ded          Zj G d ded          Zk G d de-          Zl G d de          Zm G d de)          Zn G d de)          Zo G d de)          Zp G d de)          Zq G d de)          Zr G d de)          Zs G d de)          Zt G d de)          Zu G d de)          Zv G d de)          Zw G d de)          Zx G d de)          Zy G d dey          Zz G d dey          Z{ G d dey          Z| G d dey          Z} G d de)          Z~ G d de)          Z G d de)          Z G d de)          Z G d de)          Z G d de)          Z G dĄ de)          ZdS )    )annotationsN)TYPE_CHECKING)nodes)addnodes)
_id_char_from_prefix_id_explicit_cast_id_fundamental_v1_id_fundamental_v2_id_operator_unary_v2_id_operator_v1_id_operator_v2
_id_prefix_id_shorthands_v1_max_id)ASTBaseBaseASTBaseParenExprListNoOldIdError$UnsupportedMultiCharacterCharLiteralverify_description_mode)AnyClassVarLiteral)ElementTextElement)desc_signature)Symbol)BuildEnvironment)ASTAttributeListStringifyTransformc                      e Zd ZdS )ASTBaseN__name__
__module____qualname__     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/cpp/_ast.pyr!   r!   ,           Dr'   r!   c                  n    e Zd Zd dZd!d	Zd"dZd#dZd$dZd%dZd&dZ	d&dZ
d'dZed&d            ZdS )(ASTIdentifiernamestrreturnNonec                    t          |t                    rt          |          dk    rt          t	          j        |          | _        |d         dk    | _        d S )Nr   @)
isinstancer-   lenAssertionErrorsysinternr,   is_anonymousselfr,   s     r(   __init__zASTIdentifier.__init__5   sO    $$$ 	!D		Q  Jt$$	 GsNr'   otherobjectboolc                Z    t          |t                    st          S | j        |j        k    S N)r2   r+   NotImplementedr,   r9   r;   s     r(   __eq__zASTIdentifier.__eq__=   )    %// 	"!!yEJ&&r'   intc                *    t          | j                  S r?   hashr,   r9   s    r(   __hash__zASTIdentifier.__hash__B       DIr'   	transformr   c                "     || j                   S r?   r,   r9   rK   s     r(   
_stringifyzASTIdentifier._stringifyE       y###r'   c                    | j         S r?   r7   rH   s    r(   is_anonzASTIdentifier.is_anonH         r'   versionc                P   | j         r|dk     rt          |dk    r| j        dk    rdS | j        S | j        dk    rdS | j        d         dk    rd	S | j         r)d
t          | j                  dz
  | j        dd          fz  S t	          t          | j                            | j        z   S )N      size_tsstdStr   ~D0zUt%d_%s)r7   r   r,   r3   r-   r9   rU   s     r(   get_idzASTIdentifier.get_idK   s     	1a<<yH$$sy 94Yq\S  4  7 C	NNQ$6	!""#FFF3ty>>**TY66r'   c                    | j         S r?   rM   rH   s    r(   __str__zASTIdentifier.__str__`   
    yr'   c                "    | j         rdn| j        S )N[anonymous])r7   r,   rH   s    r(   get_display_stringz ASTIdentifier.get_display_stringc   s     $ 1@}}ty@r'   signoder   modeenvr   prefixtemplateArgssymbolr   c                   t          |           | j        rt          j        d          }nt          j        | j        | j                  }|dk    rJ|| j        z   |z   }t          j        ddd|d d           }	|                                |	d<   |	|z  }	||	z  }d S |d	k    rt          j                    }
|
|z  }
||
z  }d S |d
k    r||z  }d S |dk    r"|d                             d           ||z  }d S |dk    rzt          |          dk    sJ t          |          dk    sJ | j        rJ d| j        z   }t          j        ddd|d d           }	|                                |	d<   |	|z  }	||	z  }d S t          d|z            )Nre   )textmarkType cpp
identifier	refdomainreftype	reftargetmodname	classnamecpp:parent_key
lastIsName
noneIsNameparamclassesz	sig-paramudlr   
operator""Unknown description mode: %s)r   r7   r   desc_sig_namer,   pending_xrefget_lookup_key	desc_nameappendr3   	Exception)r9   rg   rh   ri   rj   rk   rl   nodetarget_textpnode	name_nodes              r(   describe_signaturez ASTIdentifier.describe_signaturef   s    	 %%% 	@)}===DD)$)TY??D: 49,|;K)$%  E '-&;&;&=&=E"#TMEuGGG\!! *,,IIy GGG\!!tOGGGW__O"";///tOGGGU]]v;;!####|$$))))((((&2K)$%  E '-&;&;&=&=E"#TMEuGGG:TABBBr'   c                H    t          j        dt          d           | j        S )NzJ`ASTIdentifier.identifier` is deprecated, use `ASTIdentifier.name` instead   )
stacklevel)warningswarnDeprecationWarningr,   rH   s    r(   rr   zASTIdentifier.identifier   s.    X	
 	
 	
 	

 yr'   N)r,   r-   r.   r/   r;   r<   r.   r=   r.   rD   rK   r   r.   r-   r.   r=   rU   rD   r.   r-   r.   r-   rg   r   rh   r-   ri   r   rj   r-   rk   r-   rl   r   r.   r/   )r#   r$   r%   r:   rB   rI   rO   rS   r`   rb   rf   r   propertyrr   r&   r'   r(   r+   r+   4   s        + + + +' ' ' '
   $ $ $ $! ! ! !7 7 7 7*   A A A A6C 6C 6C 6Cp    X  r'   r+   c                  F    e Zd ZddZd dZd!dZd"dZd#dZd$dZd%dZ	dS )&ASTNestedNameElement	identOrOpASTIdentifier | ASTOperatorrk   ASTTemplateArgs | Noner.   r/   c                "    || _         || _        d S r?   r   rk   )r9   r   rk   s      r(   r:   zASTNestedNameElement.__init__   s    
 #(r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r   r@   r   rk   rA   s     r(   rB   zASTNestedNameElement.__eq__   s?    %!566 	"!!Neo- 8!U%77	
r'   rD   c                8    t          | j        | j        f          S r?   )rG   r   rk   rH   s    r(   rI   zASTNestedNameElement.__hash__   s    T^T%67888r'   c                    dS NFr&   rH   s    r(   is_operatorz ASTNestedNameElement.is_operator       ur'   rU   r-   c                    | j                             |          }| j        r|| j                            |          z  }|S r?   )r   r`   rk   r9   rU   ress      r(   r`   zASTNestedNameElement.get_id   sB    n##G,, 	54$++G444C
r'   rK   r   c                Z     || j                   }| j        r| || j                  z  }|S r?   r   r9   rK   r   s      r(   rO   zASTNestedNameElement._stringify   s:    i'' 	099T.///C
r'   rg   r   rh   ri   r   rj   rl   r   c                    | j         t          | j                   nd}| j                            ||||||           | j         | j                             |d||           d S d S )Nrp   ro   )rk   r-   r   r   )r9   rg   rh   ri   rj   rl   t_argss          r(   r   z'ASTNestedNameElement.describe_signature   su     ,0+<+HT&'''b))'4fffUUU(00*c6RRRRR )(r'   N)r   r   rk   r   r.   r/   r   r   r   r   r   )rg   r   rh   r-   ri   r   rj   r-   rl   r   r.   r/   )
r#   r$   r%   r:   rB   rI   r   r`   rO   r   r&   r'   r(   r   r      s        ) ) ) )
 
 
 
9 9 9 9         S S S S S Sr'   r   c                  `    e Zd Zd"d	Zd#dZd$dZed%d            Zd$dZd&d'dZ	d(dZ
d)d Zd!S )*ASTNestedNamenameslist[ASTNestedNameElement]	templates
list[bool]rootedr=   r.   r/   c                    t          |          dk    sJ || _        || _        t          | j                  t          | j                  k    sJ || _        d S Nr   )r3   r   r   r   )r9   r   r   r   s       r(   r:   zASTNestedName.__init__   sS     5zzA~~~~
"4:#dn"5"55555r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r   r@   r   r   r   rA   s     r(   rB   zASTNestedName.__eq__   sM    %// 	"!!J%+% ,%/1,u|+	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r   r   r   rH   s    r(   rI   zASTNestedName.__hash__   s    TZ=>>>r'   c                    | S r?   r&   rH   s    r(   r,   zASTNestedName.name   s    r'   c                `    d}| j         D ]#}|                                r|j        r|dz  }$|S Nr   rX   )r   r   rk   )r9   countns      r(   num_templateszASTNestedName.num_templates   sD     	 	A}} ~ 
r'   rp   rU   	modifiersr-   c                J   dk    rKt          |           }|t          v rt          |         S d                    fd| j        D                       S g }t	          | j                  dk    st	          |          dk    r|                    d           |                    |           |                    fd| j        D                        t	          | j                  dk    st	          |          dk    r|                    d           d                    |          S )	NrX   ::c              3  B   K   | ]}|                               V  d S r?   r`   .0r   rU   s     r(   	<genexpr>z'ASTNestedName.get_id.<locals>.<genexpr>  /       G Gq'!2!2 G G G G G Gr'   r   Nc              3  B   K   | ]}|                               V  d S r?   r   r   s     r(   r   z'ASTNestedName.get_id.<locals>.<genexpr>  s/      99188G$$999999r'   Erp   )r-   r   joinr   r3   r   extend)r9   rU   r   ttr   s    `   r(   r`   zASTNestedName.get_id   s   a<<TB&&&(,,yy G G G GDJ G G GGGGtz??Q#i..1"4"4JJsOOO

9

9999dj999999tz??Q#i..1"4"4JJsOOOwws||r'   rK   r   c                d   g }| j         r|                    d           t          t          | j                            D ]\}| j        |         }| j        |         r"|                    d ||          z              >|                     ||                     ]d                    |          S )Nrp   z	template r   )r   r   ranger3   r   r   r   )r9   rK   r   ir   s        r(   rO   zASTNestedName._stringify  s    ; 	JJrNNNs4:'' 	) 	)A
1A~a  )

;156666

99Q<<((((yy~~r'   rg   r   rh   ri   r   rl   r   c                   t          |           |dk    r| j        rd}t          |          t          t          | j                            D ]]}|dk    rd}t          |          | j        |         }| j        |         rd}t          |          |	                    |||d|           ^d S |d	k    rm| j        rJ t          |                       t          | j                  d
k    sJ | j        d         rJ | j        d         	                    |d	|d|           d S |dv rJg }|dk    r!|J |j        j        |j        j        j        }d}	d}
d}d}|dk    r| j        d d         n| j        }|}|dk    rt          j                    }| j        rO|dz  }|dk    r,t          |          dk    r|t          j        dd          z  }n|t          j        dd          z  }t          t          |                    D ]}||         }| j        |         }|s|t          j        dd          z  }|dz  }|r.|t          j        dd          z  }|t          j                    z  }d}t          |          }|rS|j        r0|	t          |          k     r|
t          ||	                   z  }
|	d
z  }	|	                    |d||
|z   |           ||z  }|dk    rt          | j                  d
k    r|t          j        dd          z  }||z  }| j        d         r.|t          j        dd          z  }|t          j                    z  }| j        d         	                    |||d|           d S d S t'          d|z            )Nr{   zCan this happen?r   r   z::blahtemplate rp   r|   rX   >   markNamero   rz   rz   TFro   r   )r   r   r4   r   Textr   r3   r   r   r   r-   declarationtemplatePrefixr   desc_addnamedesc_sig_punctuationdesc_sig_keyworddesc_sig_spacerk   r   )r9   rg   rh   ri   rl   unreachabler   r   template_paramsi_template_paramstemplate_params_prefixrj   firstr   destnner   txt_nnes                     r(   r   z ASTNestedName.describe_signature  s&    	 %%%<{ ,0$[1113tz??++ E E66"4K(555JqM>!$ /"4K(555 $$WdCVDDDDE E W__{--CII---tz??a''''~a((((JqM,,WgsBOOOOO;;;
 *,O|##)))%4@&,&8&G&QO !%'"FE'+|';';DJssOOE
 D|##,..{ F$<''CJJ!OOx<T4HHHGGH9$EEED3u::&& " "Ah>!, #H9$EEEDdNF 6H5j*MMMDH3555Dc(( ' /,=O@T@T,T,T.#+,=>3 3 . *Q.)**j#/E/NPV   '!|##tz??Q&&H9$EEEDtOG>"% 9x8ZPPPGx6888G
211'4b&QQQQQ $# :TABBBr'   N)r   r   r   r   r   r=   r.   r/   r   r   r.   r   )rp   )rU   rD   r   r-   r.   r-   r   
rg   r   rh   r-   ri   r   rl   r   r.   r/   )r#   r$   r%   r:   rB   rI   r   r,   r   r`   rO   r   r&   r'   r(   r   r      s           
 
 
 
? ? ? ?    X       "
 
 
 
UC UC UC UC UC UCr'   r   c                      e Zd ZddZddZdS )ASTExpressionrU   rD   r.   r-   c                :    t          t          |                     r?   NotImplementedErrorreprr_   s     r(   r`   zASTExpression.get_idw      !$t**---r'   rg   r   rh   ri   r   rl   r   r/   c                :    t          t          |                     r?   r   r9   rg   rh   ri   rl   s        r(   r   z ASTExpression.describe_signaturez       "$t**---r'   Nr   r   r#   r$   r%   r`   r   r&   r'   r(   r   r   v  <        . . . .. . . . . .r'   r   c                      e Zd ZdS )
ASTLiteralNr"   r&   r'   r(   r   r     r)   r'   r   c                  6    e Zd ZddZddZddZddZddZdS )ASTPointerLiteralr;   r<   r.   r=   c                ,    t          |t                    S r?   )r2   r   rA   s     r(   rB   zASTPointerLiteral.__eq__  s    %!2333r'   rD   c                     t          d          S NnullptrrG   rH   s    r(   rI   zASTPointerLiteral.__hash__  s    Ir'   rK   r   r-   c                    dS r   r&   rN   s     r(   rO   zASTPointerLiteral._stringify  s    yr'   rU   c                    dS )NLDnEr&   r_   s     r(   r`   zASTPointerLiteral.get_id      vr'   rg   r   rh   ri   r   rl   r   r/   c                6    |t          j        dd          z  }d S r   r   r   r   s        r(   r   z$ASTPointerLiteral.describe_signature  s     	8,Y	BBBr'   Nr   r   r   r   r   r#   r$   r%   rB   rI   rO   r`   r   r&   r'   r(   r   r     s~        4 4 4 4         C C C C C Cr'   r   c                  >    e Zd ZddZddZdd
ZddZddZddZdS ) ASTBooleanLiteralvaluer=   r.   r/   c                    || _         d S r?   r  r9   r  s     r(   r:   zASTBooleanLiteral.__init__      


r'   r;   r<   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTBooleanLiteral.__eq__  s*    %!233 	"!!zU[((r'   rD   c                *    t          | j                  S r?   rG   r  rH   s    r(   rI   zASTBooleanLiteral.__hash__      DJr'   rK   r   r-   c                    | j         rdS dS )Ntruefalser  rN   s     r(   rO   zASTBooleanLiteral._stringify  s    : 	67r'   rU   c                    | j         rdS dS )NL1EL0Er  r_   s     r(   r`   zASTBooleanLiteral.get_id  s    : 	55r'   rg   r   rh   ri   r   rl   r   c                j    |t          j        t          |           t          |                     z  }d S r?   )r   r   r-   r   s        r(   r   z$ASTBooleanLiteral.describe_signature  s+     	8,SYYD		BBBr'   N)r  r=   r.   r/   r   r   r   r   r   	r#   r$   r%   r:   rB   rI   rO   r`   r   r&   r'   r(   r  r    s           ) ) ) )
             C C C C C Cr'   r  c                  >    e Zd ZddZdd	ZddZddZddZddZdS ) ASTNumberLiteraldatar-   r.   r/   c                    || _         d S r?   r  r9   r  s     r(   r:   zASTNumberLiteral.__init__      			r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTNumberLiteral.__eq__  *    %!122 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rG   r  rH   s    r(   rI   zASTNumberLiteral.__hash__  rJ   r'   rK   r   c                    | j         S r?   r  rN   s     r(   rO   zASTNumberLiteral._stringify  rc   r'   rU   c                >    d| j                             dd          z  S )NzL%sE'rp   )r  replacer_   s     r(   r`   zASTNumberLiteral.get_id  s    	))#r2222r'   rg   r   rh   ri   r   rl   r   c                J    |t          j        | j        | j                  z  }d S r?   )r   desc_sig_literal_numberr  r   s        r(   r   z#ASTNumberLiteral.describe_signature  #     	83DItyIIIr'   Nr  r-   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ' ' ' '
      3 3 3 3J J J J J Jr'   r  c                  >    e Zd ZddZdd	ZddZddZddZddZdS ) ASTStringLiteralr  r-   r.   r/   c                    || _         d S r?   r  r  s     r(   r:   zASTStringLiteral.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r*  r@   r  rA   s     r(   rB   zASTStringLiteral.__eq__  r  r'   rD   c                *    t          | j                  S r?   r   rH   s    r(   rI   zASTStringLiteral.__hash__  rJ   r'   rK   r   c                    | j         S r?   r  rN   s     r(   rO   zASTStringLiteral._stringify  rc   r'   rU   c                6    dt          | j                  dz
  z  S )NzLA%d_KcEr   )r3   r  r_   s     r(   r`   zASTStringLiteral.get_id  s    S^^a/00r'   rg   r   rh   ri   r   rl   r   c                J    |t          j        | j        | j                  z  }d S r?   )r   desc_sig_literal_stringr  r   s        r(   r   z#ASTStringLiteral.describe_signature  r'  r'   Nr(  r   r   r   r   r   r  r&   r'   r(   r*  r*    s           ' ' ' '
      1 1 1 1J J J J J Jr'   r*  c                  >    e Zd ZddZdd
ZddZddZddZd dZdS )!ASTCharLiteralrj   r-   r  r.   r/   c                   || _         || _        |t          v sJ t          |         | _        |                                                    d          }t          |          dk    rt          |          | _        d S t          |          )Nzunicode-escaperX   )
rj   r  r   typeencodedecoder3   ordr  r   )r9   rj   r  decodeds       r(   r:   zASTCharLiteral.__init__  sz    	-----(0	++--&&'788w<<1WDJJJ6w???r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r3  r@   rj   r  rA   s     r(   rB   zASTCharLiteral.__eq__  s7    %00 	"!!{el*HtzU[/HHr'   rD   c                8    t          | j        | j        f          S r?   )rG   rj   r  rH   s    r(   rI   zASTCharLiteral.__hash__  s    T[$*-...r'   rK   r   c                T    | j         d| j        z   dz   S | j         dz   | j        z   dz   S Nr#  )rj   r  rN   s     r(   rO   zASTCharLiteral._stringify  s4    ;?S((;$ty0366r'   rU   c                :    | j         t          | j                  z   S r?   )r5  r-   r  r_   s     r(   r`   zASTCharLiteral.get_id  s    y3tz??**r'   rg   r   rh   ri   r   rl   r   c                    | j         "|t          j        | j         | j                   z  }d| j        z   dz   }|t          j        ||          z  }d S r=  )rj   r   r   r  desc_sig_literal_char)r9   rg   rh   ri   rl   txts         r(   r   z!ASTCharLiteral.describe_signature	  sR     ;"x0dkJJJGDIo#81#s;;;r'   N)rj   r-   r  r-   r.   r/   r   r   r   r   r   r  r&   r'   r(   r3  r3    s        	@ 	@ 	@ 	@I I I I
/ / / /7 7 7 7+ + + +< < < < < <r'   r3  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTUserDefinedLiteralliteralr   identr+   r.   r/   c                "    || _         || _        d S r?   rD  rE  )r9   rD  rE  s      r(   r:   zASTUserDefinedLiteral.__init__  s    


r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   rC  r@   rD  rE  rA   s     r(   rB   zASTUserDefinedLiteral.__eq__  s8    %!677 	"!!|u},Ju{1JJr'   rD   c                8    t          | j        | j        f          S r?   )rG   rD  rE  rH   s    r(   rI   zASTUserDefinedLiteral.__hash__  s    T\4:.///r'   rK   r   r-   c                D     || j                    || j                  z   S r?   rG  rN   s     r(   rO   z ASTUserDefinedLiteral._stringify  s%    y&&4:)>)>>>r'   rU   c                t    d| j                             |           d| j                            |           dS )NclL_Zlir   )rE  r`   rD  r_   s     r(   r`   zASTUserDefinedLiteral.get_id"  s;    U**733UUdl6I6I'6R6RUUUUr'   rg   r   rh   ri   r   rl   r   c                ~    | j                             ||||           | j                            |d|dd|           d S )Nr~   rp   )rD  r   rE  r   s        r(   r   z(ASTUserDefinedLiteral.describe_signature&  sF     	''sFCCC
%%guc2r6JJJJJr'   N)rD  r   rE  r+   r.   r/   r   r   r   r   r   r  r&   r'   r(   rC  rC    s           K K K K
0 0 0 0? ? ? ?V V V VK K K K K Kr'   rC  c                  6    e Zd ZddZddZddZddZddZdS )ASTThisLiteralr;   r<   r.   r=   c                ,    t          |t                    S r?   )r2   rO  rA   s     r(   rB   zASTThisLiteral.__eq__1  s    %000r'   rD   c                     t          d          S Nthisr   rH   s    r(   rI   zASTThisLiteral.__hash__4  s    F||r'   rK   r   r-   c                    dS rR  r&   rN   s     r(   rO   zASTThisLiteral._stringify7  r   r'   rU   c                    dS )NfpTr&   r_   s     r(   r`   zASTThisLiteral.get_id:  r   r'   rg   r   rh   ri   r   rl   r   r/   c                6    |t          j        dd          z  }d S rR  r  r   s        r(   r   z!ASTThisLiteral.describe_signature=  s     	8,VV<<<r'   Nr   r   r   r   r   r  r&   r'   r(   rO  rO  0  sx        1 1 1 1         = = = = = =r'   rO  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTFoldExprleftExprASTExpression | Noneopr-   	rightExprr.   r/   c                <    ||J || _         || _        || _        d S r?   rZ  r\  r]  r9   rZ  r\  r]  s       r(   r:   zASTFoldExpr.__init__D  s.     #y'<'<'< "r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rY  r@   rZ  r\  r]  rA   s     r(   rB   zASTFoldExpr.__eq__L  sM    %-- 	"!!MU^+ 258#2%/1	
r'   rD   c                D    t          | j        | j        | j        f          S r?   rG   rZ  r\  r]  rH   s    r(   rI   zASTFoldExpr.__hash__U      T]DGT^<===r'   rK   r   c                R   dg}| j         r,|                     || j                   d| j        df           |                    d           | j        r,|                    d| j        d || j                  f           |                    d           d                    |          S )N(r   ...)rp   )rZ  r   r\  r   r]  r   r   s      r(   rO   zASTFoldExpr._stringifyX  s    e= 	JJ	$-((	    	

5> 	JJ	$.))	    	

3wws||r'   rU   c                "   |dk    sJ |dk    rt          |           S g }| j        |                    d           n2| j        |                    d           n|                    d           |                    t          | j                            | j        r-|                    | j                            |                     | j        r-|                    | j                            |                     d                    |          S )NrW   flfrfLrp   )r-   rZ  r   r]  r   r\  r`   r   r   s      r(   r`   zASTFoldExpr.get_idl  s    !||||a<<t99= JJt^#JJt JJt

?47+,,,= 	6JJt}++G44555> 	7JJt~,,W55666wws||r'   rg   r   rh   ri   r   rl   r   c                ^   |t          j        dd          z  }| j        rk| j                            ||||           |t          j                    z  }|t          j        | j        | j                  z  }|t          j                    z  }|t          j        dd          z  }| j        rk|t          j                    z  }|t          j        | j        | j                  z  }|t          j                    z  }| j                            ||||           |t          j        dd          z  }d S )Nrf  rg  rh  )r   r   rZ  r   r   desc_sig_operatorr\  r]  r   s        r(   r   zASTFoldExpr.describe_signature  s    	80c:::= 	1M,,WdCHHHx.000Gx1$'47CCCGx.000G80>>>> 	Jx.000Gx1$'47CCCGx.000GN--gtS&III80c:::r'   N)rZ  r[  r\  r-   r]  r[  r.   r/   r   r   r   r   r   r  r&   r'   r(   rY  rY  C  s        # # # #
 
 
 
> > > >   (   *; ; ; ; ; ;r'   rY  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTParenExprexprr   r.   r/   c                    || _         d S r?   rq  r9   rq  s     r(   r:   zASTParenExpr.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   rp  r@   rq  rA   s     r(   rB   zASTParenExpr.__eq__  s)    %.. 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rG   rq  rH   s    r(   rI   zASTParenExpr.__hash__  rJ   r'   rK   r   r-   c                .    d || j                   z   dz   S Nrf  rh  rs  rN   s     r(   rO   zASTParenExpr._stringify      YYty)))C//r'   rU   c                6    | j                             |          S r?   rq  r`   r_   s     r(   r`   zASTParenExpr.get_id      y(((r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S ry  r   r   rq  r   r   s        r(   r   zASTParenExpr.describe_signature  R     	80c:::	$$WdC@@@80c:::r'   Nrq  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   rp  rp    s           ' ' ' '
   0 0 0 0) ) ) ); ; ; ; ; ;r'   rp  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTIdExpressionr,   r   r.   r/   c                    || _         d S r?   rM   r8   s     r(   r:   zASTIdExpression.__init__  s    			r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r,   rA   s     r(   rB   zASTIdExpression.__eq__  )    %11 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rF   rH   s    r(   rI   zASTIdExpression.__hash__  rJ   r'   rK   r   r-   c                "     || j                   S r?   rM   rN   s     r(   rO   zASTIdExpression._stringify  rP   r'   rU   c                6    | j                             |          S r?   r,   r`   r_   s     r(   r`   zASTIdExpression.get_id  r}  r'   rg   r   rh   ri   r   rl   r   c                @    | j                             ||||           d S r?   )r,   r   r   s        r(   r   z"ASTIdExpression.describe_signature  &     		$$WdC@@@@@r'   Nr,   r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ' ' ' '
   $ $ $ $) ) ) )A A A A A Ar'   r  c                      e Zd ZddZddZdS )ASTPostfixOpidPrefixr-   rU   rD   r.   c                :    t          t          |                     r?   r   r9   r  rU   s      r(   r`   zASTPostfixOp.get_id  r   r'   rg   r   rh   ri   r   rl   r   r/   c                :    t          t          |                     r?   r   r   s        r(   r   zASTPostfixOp.describe_signature  r   r'   Nr  r-   rU   rD   r.   r-   r   r   r&   r'   r(   r  r    r   r'   r  c                  >    e Zd ZddZdd	ZddZddZd dZd!dZdS )"ASTPostfixArrayrq  r   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTPostfixArray.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rq  rA   s     r(   rB   zASTPostfixArray.__eq__  r  r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTPostfixArray.__hash__  rJ   r'   rK   r   r-   c                .    d || j                   z   dz   S N[]rs  rN   s     r(   rO   zASTPostfixArray._stringify  rz  r'   r  rU   c                B    d|z   | j                             |          z   S )Nixr|  r  s      r(   r`   zASTPostfixArray.get_id  !    h!1!1'!:!:::r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S r  r  r   s        r(   r   z"ASTPostfixArray.describe_signature  r  r'   Nr  r   r   r   r  r   r  r&   r'   r(   r  r    s           ' ' ' '
   0 0 0 0; ; ; ;; ; ; ; ; ;r'   r  c                  >    e Zd ZddZdd	ZddZddZd dZd!dZdS )"ASTPostfixMemberr,   r   r.   r/   c                    || _         d S r?   rM   r8   s     r(   r:   zASTPostfixMember.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r,   rA   s     r(   rB   zASTPostfixMember.__eq__  r  r'   rD   c                *    t          | j                  S r?   rF   rH   s    r(   rI   zASTPostfixMember.__hash__  rJ   r'   rK   r   r-   c                (    d || j                   z   S )N.rM   rN   s     r(   rO   zASTPostfixMember._stringify  s    YYty))))r'   r  rU   c                B    d|z   | j                             |          z   S )Ndtr  r  s      r(   r`   zASTPostfixMember.get_id  r  r'   rg   r   rh   ri   r   rl   r   c                p    |t          j        dd          z  }| j                            |d||           d S )Nr  r{   )r   r   r,   r   r   s        r(   r   z#ASTPostfixMember.describe_signature   s=     	80c:::	$$WlCHHHHHr'   Nr  r   r   r   r  r   r  r&   r'   r(   r  r    s           ' ' ' '
   * * * *; ; ; ;I I I I I Ir'   r  c                  >    e Zd ZddZdd	ZddZddZd dZd!dZdS )"ASTPostfixMemberOfPointerr,   r   r.   r/   c                    || _         d S r?   rM   r8   s     r(   r:   z"ASTPostfixMemberOfPointer.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r,   rA   s     r(   rB   z ASTPostfixMemberOfPointer.__eq__  s*    %!:;; 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rF   rH   s    r(   rI   z"ASTPostfixMemberOfPointer.__hash__  rJ   r'   rK   r   r-   c                (    d || j                   z   S )N->rM   rN   s     r(   rO   z$ASTPostfixMemberOfPointer._stringify  s    ii	****r'   r  rU   c                B    d|z   | j                             |          z   S )Nptr  r  s      r(   r`   z ASTPostfixMemberOfPointer.get_id  r  r'   rg   r   rh   ri   r   rl   r   c                p    |t          j        dd          z  }| j                            |d||           d S )Nr  r{   )r   rn  r,   r   r   s        r(   r   z,ASTPostfixMemberOfPointer.describe_signature  s=     	8-dD999	$$WlCHHHHHr'   Nr  r   r   r   r  r   r  r&   r'   r(   r  r    s           ' ' ' '
   + + + +; ; ; ;I I I I I Ir'   r  c                  6    e Zd ZddZddZddZddZddZdS )ASTPostfixIncr;   r<   r.   r=   c                ,    t          |t                    S r?   )r2   r  rA   s     r(   rB   zASTPostfixInc.__eq__!      %///r'   rD   c                     t          d          S Nz++r   rH   s    r(   rI   zASTPostfixInc.__hash__$      Dzzr'   rK   r   r-   c                    dS r  r&   rN   s     r(   rO   zASTPostfixInc._stringify'      tr'   r  rU   c                    d|z   S )Nppr&   r  s      r(   r`   zASTPostfixInc.get_id*      hr'   rg   r   rh   ri   r   rl   r   r/   c                6    |t          j        dd          z  }d S r  r   rn  r   s        r(   r   z ASTPostfixInc.describe_signature-       	8-dD999r'   Nr   r   r   r  r   r  r&   r'   r(   r  r     x        0 0 0 0         : : : : : :r'   r  c                  6    e Zd ZddZddZddZddZddZdS )ASTPostfixDecr;   r<   r.   r=   c                ,    t          |t                    S r?   )r2   r  rA   s     r(   rB   zASTPostfixDec.__eq__4  r  r'   rD   c                     t          d          S Nz--r   rH   s    r(   rI   zASTPostfixDec.__hash__7  r  r'   rK   r   r-   c                    dS r  r&   rN   s     r(   rO   zASTPostfixDec._stringify:  r  r'   r  rU   c                    d|z   S )Nmmr&   r  s      r(   r`   zASTPostfixDec.get_id=  r  r'   rg   r   rh   ri   r   rl   r   r/   c                6    |t          j        dd          z  }d S r  r  r   s        r(   r   z ASTPostfixDec.describe_signature@  r  r'   Nr   r   r   r  r   r  r&   r'   r(   r  r  3  r  r'   r  c                  >    e Zd ZddZdd	ZddZddZd dZd!dZdS )"ASTPostfixCallExprlst$ASTParenExprList | ASTBracedInitListr.   r/   c                    || _         d S r?   r  )r9   r  s     r(   r:   zASTPostfixCallExpr.__init__G      r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTPostfixCallExpr.__eq__J  s*    %!344 	"!!x59$$r'   rD   c                *    t          | j                  S r?   )rG   r  rH   s    r(   rI   zASTPostfixCallExpr.__hash__O      DH~~r'   rK   r   r-   c                "     || j                   S r?   r  rN   s     r(   rO   zASTPostfixCallExpr._stringifyR  s    y"""r'   r  rU   c                f    d                     d|gfd| j        j        D             d          S )Nrp   clc              3  B   K   | ]}|                               V  d S r?   r   r   erU   s     r(   r   z,ASTPostfixCallExpr.get_id.<locals>.<genexpr>Y  s/      88Aahhw888888r'   r   )r   r  exprsr  s     `r(   r`   zASTPostfixCallExpr.get_idU  sP    ww
 9888888
 	
   	r'   rg   r   rh   ri   r   rl   r   c                @    | j                             ||||           d S r?   )r  r   r   s        r(   r   z%ASTPostfixCallExpr.describe_signature]  s&     	##GT3?????r'   N)r  r  r.   r/   r   r   r   r  r   r  r&   r'   r(   r  r  F  s           % % % %
   # # # #   @ @ @ @ @ @r'   r  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTPostfixExprrj   ASTType	postFixeslist[ASTPostfixOp]r.   r/   c                "    || _         || _        d S r?   )rj   r  )r9   rj   r  s      r(   r:   zASTPostfixExpr.__init__d  s    "r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   rj   r  rA   s     r(   rB   zASTPostfixExpr.__eq__h  s7    %00 	"!!{el*Pt~/PPr'   rD   c                8    t          | j        | j        f          S r?   )rG   rj   r  rH   s    r(   rI   zASTPostfixExpr.__hash__m  s    T[$.1222r'   rK   r   r-   c                r    d                      | j                  gfd| j        D                       S )Nrp   c              3  .   K   | ]} |          V  d S r?   r&   )r   prK   s     r(   r   z,ASTPostfixExpr._stringify.<locals>.<genexpr>s  s+      33qiill333333r'   )r   rj   r  rN   s    `r(   rO   zASTPostfixExpr._stringifyp  sK    wwIdk""
3333DN333
   	r'   rU   c                z    | j                             |          }| j        D ]}|                    ||          }|S r?   )rj   r`   r  )r9   rU   idr  s       r(   r`   zASTPostfixExpr.get_idv  sB    [(( 	' 	'A"g&&BB	r'   rg   r   rh   ri   r   rl   r   c                    | j                             ||||           | j        D ]}|                    ||||           d S r?   )rj   r   r  )r9   rg   rh   ri   rl   r  s         r(   r   z!ASTPostfixExpr.describe_signature|  sX     	&&wc6BBB 	= 	=A  $V<<<<	= 	=r'   N)rj   r  r  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r  c  s        # # # #Q Q Q Q
3 3 3 3      = = = = = =r'   r  c                  >    e Zd Zdd	ZddZd dZd!dZd"dZd#dZdS )$ASTExplicitCastcastr-   typr  rq  r   r.   r/   c                F    |t           v sJ || _        || _        || _        d S r?   )r   r  r  rq  )r9   r  r  rq  s       r(   r:   zASTExplicitCast.__init__  s-    (((((				r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rq  rA   s     r(   rB   zASTExplicitCast.__eq__  sM    %11 	"!!I# (EI%(	UZ'	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r  r  rq  rH   s    r(   rI   zASTExplicitCast.__hash__  s    TY$)4555r'   rK   r   c                    | j         g}|                    d || j                  d || j                  df           d                    |          S )N<z>(rh  rp   )r  r   r  rq  r   r   s      r(   rO   zASTExplicitCast._stringify  s_    yk

IdhIdi  
 	 	 	 wws||r'   rU   c                    t           | j                 | j                            |          z   | j                            |          z   S r?   )r   r  r  r`   rq  r_   s     r(   r`   zASTExplicitCast.get_id  s?    di(hoog&&'iw''(	
r'   rg   r   rh   ri   r   rl   r   c                ~   |t          j        | j        | j                  z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nr  >rf  rh  )r   r   r  r   r  r   rq  r   s        r(   r   z"ASTExplicitCast.describe_signature  s     	8,TY	BBB80c:::##GT3???80c:::80c:::	$$WdC@@@80c:::r'   N)r  r-   r  r  rq  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           
 
 
 
6 6 6 6	 	 	 	
 
 
 
	; 	; 	; 	; 	; 	;r'   r  c                  >    e Zd ZddZdd
ZddZddZd dZd!dZdS )"	ASTTypeId
typeOrExprASTType | ASTExpressionisTyper=   r.   r/   c                "    || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   zASTTypeId.__init__  s    $r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTTypeId.__eq__  s8    %++ 	"!!%"22Rt{el7RRr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTTypeId.__hash__  s    T_dk2333r'   rK   r   r-   c                .    d || j                   z   dz   S )Nztypeid(rh  )r  rN   s     r(   rO   zASTTypeId._stringify  s    99T_555;;r'   rU   c                R    | j         rdnd}|| j                            |          z   S )Ntite)r  r  r`   )r9   rU   rj   s      r(   r`   zASTTypeId.get_id  s-    .$..w7777r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Ntypeidrf  rh  )r   r   r   r  r   r   s        r(   r   zASTTypeId.describe_signature  si     	8,Xx@@@80c:::**7D#vFFF80c:::r'   N)r  r  r  r=   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           S S S S
4 4 4 4< < < <8 8 8 8; ; ; ; ; ;r'   r  c                  >    e Zd ZddZddZddZddZd dZd!dZdS )"ASTUnaryOpExprr\  r-   rq  r   r.   r/   c                "    || _         || _        d S r?   r\  rq  )r9   r\  rq  s      r(   r:   zASTUnaryOpExpr.__init__  s    			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r
  r@   r\  rq  rA   s     r(   rB   zASTUnaryOpExpr.__eq__  s7    %00 	"!!w%(">tyEJ'>>r'   rD   c                8    t          | j        | j        f          S r?   )rG   r\  rq  rH   s    r(   rI   zASTUnaryOpExpr.__hash__  s    TWdi()))r'   rK   r   c                    | j         d         dv r| j         dz    || j                  z   S | j          || j                  z   S )Nr   cnr   r  rN   s     r(   rO   zASTUnaryOpExpr._stringify  sI    71:7S=99TY#7#7777YYty1111r'   rU   c                \    t           | j                 | j                            |          z   S r?   )r   r\  rq  r`   r_   s     r(   r`   zASTUnaryOpExpr.get_id  s$    $TW-	0@0@0I0IIIr'   rg   r   rh   ri   r   rl   r   c                   | j         d         dv r9|t          j        | j         | j                   z  }|t          j                    z  }n"|t          j        | j         | j                   z  }| j                            ||||           d S )Nr   r  )r\  r   r   r   rn  rq  r   r   s        r(   r   z!ASTUnaryOpExpr.describe_signature  s     71:x0$'BBBGx.000GGx1$'47CCCG	$$WdC@@@@@r'   N)r\  r-   rq  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r
  r
    s           ? ? ? ?
* * * *2 2 2 2J J J JA A A A A Ar'   r
  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTSizeofParamPackrr   r+   r.   r/   c                    || _         d S r?   rr   r9   rr   s     r(   r:   zASTSizeofParamPack.__init__      $r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rr   rA   s     r(   rB   zASTSizeofParamPack.__eq__  +    %!344 	"!!%"222r'   rD   c                *    t          | j                  S r?   rG   rr   rH   s    r(   rI   zASTSizeofParamPack.__hash__       DO$$$r'   rK   r   r-   c                .    d || j                   z   dz   S )Nz
sizeof...(rh  r  rN   s     r(   rO   zASTSizeofParamPack._stringify  s    ii8883>>r'   rU   c                <    d| j                             |          z   S )NsZ)rr   r`   r_   s     r(   r`   zASTSizeofParamPack.get_id  s    do,,W5555r'   rg   r   rh   ri   r   rl   r   c                   |t          j        dd          z  }|t          j        dd          z  }|t          j        dd          z  }| j                            |d||dd           |t          j        dd          z  }d S )Nsizeofrg  rf  ro   rp   )rl   rj   rk   rh  )r   r   r   rr   r   r   s        r(   r   z%ASTSizeofParamPack.describe_signature	  s     	8,Xx@@@80>>>80c:::**ZVBR 	+ 	
 	
 	
 	80c:::r'   Nrr   r+   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s        % % % %3 3 3 3
% % % %? ? ? ?6 6 6 6	; 	; 	; 	; 	; 	;r'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTSizeofTyper  r  r.   r/   c                    || _         d S r?   r  r9   r  s     r(   r:   zASTSizeofType.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r%  r@   r  rA   s     r(   rB   zASTSizeofType.__eq__  s)    %// 	"!!x59$$r'   rD   c                *    t          | j                  S r?   rG   r  rH   s    r(   rI   zASTSizeofType.__hash__  r  r'   rK   r   r-   c                .    d || j                   z   dz   S )Nzsizeof(rh  r'  rN   s     r(   rO   zASTSizeofType._stringify!  s    99TX...44r'   rU   c                <    d| j                             |          z   S )Nstr  r`   r_   s     r(   r`   zASTSizeofType.get_id$      dhoog....r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nr"  rf  rh  r   r   r   r  r   r   s        r(   r   z ASTSizeofType.describe_signature'  si     	8,Xx@@@80c:::##GT3???80c:::r'   Nr  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r%  r%    s           % % % %
   5 5 5 5/ / / /; ; ; ; ; ;r'   r%  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTSizeofExprrq  r   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTSizeofExpr.__init__1  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r5  r@   rq  rA   s     r(   rB   zASTSizeofExpr.__eq__4  rC   r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTSizeofExpr.__hash__9  rJ   r'   rK   r   r-   c                (    d || j                   z   S )Nzsizeof rs  rN   s     r(   rO   zASTSizeofExpr._stringify<  s    99TY////r'   rU   c                <    d| j                             |          z   S )Nszr|  r_   s     r(   r`   zASTSizeofExpr.get_id?      di&&w////r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr"  r   r   r   rq  r   r   s        r(   r   z ASTSizeofExpr.describe_signatureB  sP     	8,Xx@@@8*,,,	$$WdC@@@@@r'   Nr  r   r   r   r   r   r  r&   r'   r(   r5  r5  0  s           ' ' ' '
   0 0 0 00 0 0 0A A A A A Ar'   r5  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTAlignofExprr  r  r.   r/   c                    || _         d S r?   r'  r(  s     r(   r:   zASTAlignofExpr.__init__K  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r@  r@   r  rA   s     r(   rB   zASTAlignofExpr.__eq__N  s)    %00 	"!!x59$$r'   rD   c                *    t          | j                  S r?   r+  rH   s    r(   rI   zASTAlignofExpr.__hash__S  r  r'   rK   r   r-   c                .    d || j                   z   dz   S )Nzalignof(rh  r'  rN   s     r(   rO   zASTAlignofExpr._stringifyV  s    IIdh///#55r'   rU   c                <    d| j                             |          z   S )Natr/  r_   s     r(   r`   zASTAlignofExpr.get_idY  r0  r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nalignofrf  rh  r2  r   s        r(   r   z!ASTAlignofExpr.describe_signature\  si     	8,Y	BBB80c:::##GT3???80c:::r'   Nr3  r   r   r   r   r   r  r&   r'   r(   r@  r@  J  s           % % % %
   6 6 6 6/ / / /; ; ; ; ; ;r'   r@  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTNoexceptExprrq  r   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTNoexceptExpr.__init__f  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   rJ  r@   rq  rA   s     r(   rB   zASTNoexceptExpr.__eq__i  r  r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTNoexceptExpr.__hash__n  rJ   r'   rK   r   r-   c                .    d || j                   z   dz   S )N	noexcept(rh  rs  rN   s     r(   rO   zASTNoexceptExpr._stringifyq      YYty111C77r'   rU   c                <    d| j                             |          z   S )Nnxr|  r_   s     r(   r`   zASTNoexceptExpr.get_idt  r<  r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nnoexceptrf  rh  r   r   r   rq  r   r   s        r(   r   z"ASTNoexceptExpr.describe_signaturew  i     	8,ZDDD80c:::	$$WdC@@@80c:::r'   Nr  r   r   r   r   r   r  r&   r'   r(   rJ  rJ  e  s           ' ' ' '
   8 8 8 80 0 0 0; ; ; ; ; ;r'   rJ  c                  >    e Zd Zdd
Zd dZd!dZd"dZd#dZd$dZdS )%
ASTNewExprr   r=   isNewTypeIdr  r  initListr  r.   r/   c                >    || _         || _        || _        || _        d S r?   )r   rY  r  rZ  )r9   r   rY  r  rZ  s        r(   r:   zASTNewExpr.__init__  s%     & r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rX  r@   r   rY  r  rZ  rA   s     r(   rB   zASTNewExpr.__eq__  sb    %,, 	"!!K5<' 0 E$550EI%0 /		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r   rY  r  rZ  rH   s    r(   rI   zASTNewExpr.__hash__  s"    T[$"2DHdmLMMMr'   rK   r   r-   c                J   g }| j         r|                    d           |                    d           | j        r$|                     || j                             nt          | j        #|                     || j                             d                    |          S )Nr   znew rp   )r   r   rY  r  r4   rZ  r   r   s      r(   rO   zASTNewExpr._stringify  s    ; 	JJt

6 	!JJyy**++++  =$JJyy//000wws||r'   rU   c                $   dg}|                     d| j                            |          f           | j        .|                    | j                            |                     n|                    d           d                    |          S )Nnw_r   rp   )r   r  r`   rZ  r   r   r   s      r(   r`   zASTNewExpr.get_id  sz    f

C112333=$JJt}++G445555JJsOOOwws||r'   rg   r   rh   ri   r   rl   r   c                D   | j         r|t          j        dd          z  }|t          j        dd          z  }|t          j                    z  }| j        r| j                            ||||           nt          | j	        | j	                            ||||           d S d S )Nr   new)
r   r   r   r   r   rY  r  r   r4   rZ  r   s        r(   r   zASTNewExpr.describe_signature  s     ; 	Ax4T4@@@G8,UE:::8*,,, 	!H''sFCCCC  =$M,,WdCHHHHH %$r'   N)
r   r=   rY  r=   r  r  rZ  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   rX  rX    s        
! 
! 
! 
!
 
 
 
N N N N   	 	 	 	I I I I I Ir'   rX  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTDeleteExprr   r=   arrayrq  r   r.   r/   c                0    || _         || _        || _        d S r?   )r   rf  rq  )r9   r   rf  rq  s       r(   r:   zASTDeleteExpr.__init__  s    
			r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   re  r@   r   rf  rq  rA   s     r(   rB   zASTDeleteExpr.__eq__  sM    %// 	"!!K5<' (
ek)(	UZ'	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r   rf  rq  rH   s    r(   rI   zASTDeleteExpr.__hash__  s    T[$*di8999r'   rK   r   r-   c                   g }| j         r|                    d           |                    d           | j        r|                    d           |                     || j                             d                    |          S )Nr   zdelete z[] rp   )r   r   rf  rq  r   r   s      r(   rO   zASTDeleteExpr._stringify  s    ; 	JJt

9: 	JJu

99TY''(((wws||r'   rU   c                T    | j         rd}nd}|| j                            |          z   S )Ndadl)rf  rq  r`   r9   rU   r  s      r(   r`   zASTDeleteExpr.get_id  s3    : 	BBBDI$$W----r'   rg   r   rh   ri   r   rl   r   c                D   | j         r|t          j        dd          z  }|t          j        dd          z  }|t          j                    z  }| j        r.|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr   delete[])r   r   r   r   r   rf  rq  r   r   s        r(   r   z ASTDeleteExpr.describe_signature  s     ; 	Ax4T4@@@G8,Xx@@@8*,,,: 	1x4T4@@@Gx.000G	$$WdC@@@@@r'   N)r   r=   rf  r=   rq  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   re  re    s           

 
 
 
: : : :   . . . .
A 
A 
A 
A 
A 
Ar'   re  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTCastExprr  r  rq  r   r.   r/   c                "    || _         || _        d S r?   )r  rq  )r9   r  rq  s      r(   r:   zASTCastExpr.__init__  s    			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   rs  r@   r  rq  rA   s     r(   rB   zASTCastExpr.__eq__  s7    %-- 	"!!x59$@ej)@@r'   rD   c                8    t          | j        | j        f          S r?   )rG   r  rq  rH   s    r(   rI   zASTCastExpr.__hash__  s    TXty)***r'   rK   r   r-   c                    dg}|                      || j                  d || j                  f           d                    |          S Nrf  rh  rp   )r   r  rq  r   r   s      r(   rO   zASTCastExpr._stringify  sW    e

IdhIdi  
 	 	 	
 wws||r'   rU   c                r    d| j                             |          z   | j                            |          z   S )Ncv)r  r`   rq  r_   s     r(   r`   zASTCastExpr.get_id  s0    dhoog...1A1A'1J1JJJr'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            ||||           d S ry  )r   r   r  r   rq  r   s        r(   r   zASTCastExpr.describe_signature  sp     	80c:::##GT3???80c:::	$$WdC@@@@@r'   N)r  r  rq  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   rs  rs    s           A A A A
+ + + +   K K K KA A A A A Ar'   rs  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTBinOpExprr  list[ASTExpression]ops	list[str]r.   r/   c                    t          |          dk    sJ t          |          t          |          dz   k    sJ || _        || _        d S r   )r3   r  r  )r9   r  r  s      r(   r:   zASTBinOpExpr.__init__  sH    5zzA~~~~5zzSXX\))))
r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r}  r@   r  r  rA   s     r(   rB   zASTBinOpExpr.__eq__   s7    %.. 	"!!zU[(BTX-BBr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTBinOpExpr.__hash__%  s    TZ*+++r'   rK   r   r-   c           
         || j         d                   g}t          dt          | j                             D ]=}|                    d| j        |dz
           d || j         |                   f           >d                    |          S )Nr   rX   r   rp   )r  r   r3   r   r  r   )r9   rK   r   r   s       r(   rO   zASTBinOpExpr._stringify(  s    yA''(q#dj//** 	 	AJJQ	$*Q-((	     wws||r'   rU   c                   |dk    sJ g }t          t          | j                            D ]M}|                    t          | j        |                  | j        |                             |          f           N|                    | j        d                             |                     d                    |          S )Nr   r   rp   )	r   r3   r  r   r   r  r`   r   r   )r9   rU   r   r   s       r(   r`   zASTBinOpExpr.get_id3  s    !||||s48}}%% 	V 	VAJJ4djm6J6J76S6STUUUU

4:b>((11222wws||r'   rg   r   rh   ri   r   rl   r   c                N   | j         d                             ||||           t          dt          | j                             D ]}|t	          j                    z  }| j        |dz
           }t          |d                   t          d          k    r?t          |d                   t          d          k    r|t	          j        ||          z  }n|t	          j	        ||          z  }|t	          j                    z  }| j         |                             ||||           d S )Nr   rX   az)
r  r   r   r3   r   r   r  r8  r   rn  )r9   rg   rh   ri   rl   r   r\  s          r(   r   zASTBinOpExpr.describe_signature;  s    	
1(($VDDDq#dj//** 	I 	IAx.000G!a%B2a5zzSXX%%#be**C*@*@84R<<<85b"===x.000GJqM,,WdCHHHH	I 	Ir'   N)r  r~  r  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r}  r}    s           C C C C
, , , ,	 	 	 	   I I I I I Ir'   r}  c                  >    e Zd ZddZddZddZd dZd!dZd"dZdS )#ASTConditionalExprifExprr   thenExprelseExprr.   r/   c                0    || _         || _        || _        d S r?   )r  r  r  )r9   r  r  r  s       r(   r:   zASTConditionalExpr.__init__K  s       r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  r  rA   s     r(   rB   zASTConditionalExpr.__eq__R  sN    %!344 	"!!K5<' 0/0/	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r  r  r  rH   s    r(   rI   zASTConditionalExpr.__hash__[  s    T[$-?@@@r'   rK   r   r-   c           	         g }|                      || j                  d || j                  d || j                  f           d                    |          S )Nz ?  : rp   )r   r  r  r  r   r   s      r(   rO   zASTConditionalExpr._stringify^  sg    

Idk""Idm$$Idm$$
 	 	 	 wws||r'   rU   c                   |dk    sJ g }|                     t          d         | j                            |          | j                            |          | j                            |          f           d                    |          S )Nr   ?rp   )r   r   r  r`   r  r  r   r   s      r(   r`   zASTConditionalExpr.get_idi  s    !||||

C Kw''M  ))M  ))	
 	 	 	 wws||r'   rg   r   rh   ri   r   rl   r   c                   | j                             ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr  :)r  r   r   r   rn  r  r  r   s        r(   r   z%ASTConditionalExpr.describe_signaturet  s     	&&wc6BBB8*,,,8-c37778*,,,(($VDDD8*,,,8-c37778*,,,(($VDDDDDr'   N)r  r   r  r   r  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r  J  s        ! ! ! !
 
 
 
A A A A	 	 	 		 	 	 	E E E E E Er'   r  c                  >    e Zd ZddZdd
ZddZddZd dZd!dZdS )"ASTBracedInitListr  'list[ASTExpression | ASTBracedInitList]trailingCommar=   r.   r/   c                "    || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   zASTBracedInitList.__init__  s     
*r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTBracedInitList.__eq__  s:    %!233 	"!!zU[(VT-?5CV-VVr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTBracedInitList.__hash__      TZ!34555r'   rU   r-   c                V    dd                     fd| j        D                       z  S )Nzil%sErp   c              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z+ASTBracedInitList.get_id.<locals>.<genexpr>  r   r'   r   r  r_   s    `r(   r`   zASTBracedInitList.get_id  1     G G G GDJ G G GGGGGr'   rK   r   c                v    d                     fd| j        D                       }| j        rdnd}d| | dS )N, c              3  .   K   | ]} |          V  d S r?   r&   r   r  rK   s     r(   r   z/ASTBracedInitList._stringify.<locals>.<genexpr>  s+      ;;1))A,,;;;;;;r'   ,rp   {})r   r  r  )r9   rK   r  trailing_commas    `  r(   rO   zASTBracedInitList._stringify  sR    		;;;;
;;;;; $ 2:-E->----r'   rg   r   rh   ri   r   rl   r   c                p   t          |           |t          j        dd          z  }d}| j        D ]M}|s/|t          j        dd          z  }|t          j                    z  }nd}|                    ||||           N| j        r|t          j        dd          z  }|t          j        dd          z  }d S )Nr  Tr  Fr  )r   r   r   r  r   r   r  r9   rg   rh   ri   rl   r   r  s          r(   r   z$ASTBracedInitList.describe_signature  s     	 %%%80c::: 	= 	=A 88cBBB82444  $V<<<< 	?x4S#>>>G80c:::r'   N)r  r  r  r=   r.   r/   r   r   r   r   r   	r#   r$   r%   r:   rB   rI   r`   rO   r   r&   r'   r(   r  r    s        + + + +W W W W
6 6 6 6H H H H. . . .
; ; ; ; ; ;r'   r  c                  >    e Zd Zdd	ZddZd dZd!dZd"dZd#dZdS )$ASTAssignmentExprrZ  r   r\  r-   r]  !ASTExpression | ASTBracedInitListr.   r/   c                0    || _         || _        || _        d S r?   r_  r`  s       r(   r:   zASTAssignmentExpr.__init__  s     !"r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   rZ  r\  r]  rA   s     r(   rB   zASTAssignmentExpr.__eq__  sN    %!233 	"!!MU^+ 258#2%/1	
r'   rD   c                D    t          | j        | j        | j        f          S r?   rc  rH   s    r(   rI   zASTAssignmentExpr.__hash__  rd  r'   rK   r   c           	         g }|                      || j                  d| j        d || j                  f           d                    |          S Nr   rp   )r   rZ  r\  r]  r   r   s      r(   rO   zASTAssignmentExpr._stringify  s]    

Idm$$GIdn%%
 	 	 	 wws||r'   rU   c                    g }|                     t          | j                 | j                            |          | j                            |          f           d                    |          S Nrp   )r   r   r\  rZ  r`   r]  r   r   s      r(   r`   zASTAssignmentExpr.get_id  sd    

DG$M  ))N!!'**
 	 	 	
 wws||r'   rg   r   rh   ri   r   rl   r   c                   | j                             ||||           |t          j                    z  }t	          | j        d                   t	          d          k    rNt	          | j        d                   t	          d          k    r#|t          j        | j        | j                  z  }n"|t          j        | j        | j                  z  }|t          j                    z  }| j                            ||||           d S )Nr   r  r  )	rZ  r   r   r   r8  r\  r   rn  r]  r   s        r(   r   z$ASTAssignmentExpr.describe_signature  s     	(($VDDD8*,,,twqz??c#hh&&3twqz??c#hh+F+Fx0$'BBBGGx1$'47CCCG8*,,,))'4fEEEEEr'   N)rZ  r   r\  r-   r]  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s        # # # #
 
 
 
> > > >	 	 	 	   
F 
F 
F 
F 
F 
Fr'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTCommaExprr  r~  r.   r/   c                >    t          |          dk    sJ || _        d S r   )r3   r  r9   r  s     r(   r:   zASTCommaExpr.__init__  s     5zzA~~~~


r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTCommaExpr.__eq__  s)    %.. 	"!!zU[((r'   rD   c                *    t          | j                  S r?   rG   r  rH   s    r(   rI   zASTCommaExpr.__hash__  r  r'   rK   r   r-   c                P    d                     fd| j        D                       S )Nr  c              3  .   K   | ]} |          V  d S r?   r&   r  s     r(   r   z*ASTCommaExpr._stringify.<locals>.<genexpr>  s+      ::!1::::::r'   r  rN   s    `r(   rO   zASTCommaExpr._stringify  s,    yy::::tz::::::r'   rU   c                h   t           d         }g }t          t          | j                  dz
            D ]7}|                    || j        |                             |          f           8|                    | j        d                             |                     d                    |          S )Nr  rX   r   rp   )r   r   r3   r  r   r`   r   r   )r9   rU   id_r   r   s        r(   r`   zASTCommaExpr.get_id  s    c"s4:*++ 	= 	=AJJTZ]11'::;<<<<

4:b>((11222wws||r'   rg   r   rh   ri   r   rl   r   c                8   | j         d                             ||||           t          dt          | j                             D ]S}|t	          j        dd          z  }|t	          j                    z  }| j         |                             ||||           Td S )Nr   rX   r  )r  r   r   r3   r   r   r   )r9   rg   rh   ri   rl   r   s         r(   r   zASTCommaExpr.describe_signature  s     	
1(($VDDDq#dj//** 	I 	IAx4S#>>>Gx.000GJqM,,WdCHHHH	I 	Ir'   N)r  r~  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ) ) ) )
       ; ; ; ;   I I I I I Ir'   r  c                  >    e Zd ZddZdd	ZddZddZddZddZdS ) ASTFallbackExprrq  r-   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTFallbackExpr.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rq  rA   s     r(   rB   zASTFallbackExpr.__eq__
  r  r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTFallbackExpr.__hash__  rJ   r'   rK   r   c                    | j         S r?   rs  rN   s     r(   rO   zASTFallbackExpr._stringify  rc   r'   rU   c                *    t          | j                  S r?   )r-   rq  r_   s     r(   r`   zASTFallbackExpr.get_id  s    49~~r'   rg   r   rh   ri   r   rl   r   c                J    |t          j        | j        | j                  z  }d S r?   )r   rD  rq  r   s        r(   r   z"ASTFallbackExpr.describe_signature  s"     	5=DI666r'   N)rq  r-   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ' ' ' '
         7 7 7 7 7 7r'   r  c                  V    e Zd ZU dZded<   ddZdd
Zd dZd dZd!dZ	d"dZ
d#dZdS )$ASTOperatorFzClassVar[Literal[False]]r7   r;   r<   r.   r=   c                :    t          t          |                     r?   r   rA   s     r(   rB   zASTOperator.__eq__)  r   r'   rD   c                :    t          t          |                     r?   r   rH   s    r(   rI   zASTOperator.__hash__,  r   r'   c                    | j         S r?   rR   rH   s    r(   rS   zASTOperator.is_anon/  rT   r'   c                    dS NTr&   rH   s    r(   r   zASTOperator.is_operator2  r  r'   rU   r-   c                    t           r?   r   r_   s     r(   r`   zASTOperator.get_id5  s    !!r'   rg   r   	identnoderi   r   rl   r   r/   c                    t           )zARender the prefix into signode, and the last part into identnode.r  r9   rg   r  ri   rl   s        r(   _describe_identifierz ASTOperator._describe_identifier8  s
     "!r'   rh   rj   rk   c                H   t          |           |dk    r2t          j                    }|                     ||||           ||z  }d S |dk    r|t	          |           z   |z   }t          j        ddd|d d           }	|                                |	d<   t          j                    }
|                     ||
||           |
	                                }|	t          j        ||          z  }	||	z  }d S t          j
                    }|                     ||||           ||z  }d S )Nrz   ro   rp   rq   rr   rs   ry   )r   r   r   r  r-   r   r   r   rD  astextr   )r9   rg   rh   ri   rj   rk   rl   	main_namer   r   	containerrA  add_names                r(   r   zASTOperator.describe_signatureB  sH    	 %%%< *,,I%%iCHHHy GGGZ 3t99,|;K)$%  E '-&;&;&=&=E"#
 I%%gy#vFFF""$$CX'S111EuGGG,..H%%h#vFFFxGGGr'   Nr   r   r   r   
rg   r   r  r   ri   r   rl   r   r.   r/   r   )r#   r$   r%   r7   __annotations__rB   rI   rS   r   r`   r  r   r&   r'   r(   r  r  &  s         -2L2222. . . .. . . .! ! ! !   " " " "" " " "%  %  %  %  %  % r'   r  c                  >    e Zd ZddZdd	ZddZddZddZddZdS ) ASTOperatorBuildInr\  r-   r.   r/   c                    || _         d S r?   r\  )r9   r\  s     r(   r:   zASTOperatorBuildIn.__init__k  s    r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r\  rA   s     r(   rB   zASTOperatorBuildIn.__eq__n  s*    %!344 	"!!w%(""r'   rD   c                *    t          | j                  S r?   )rG   r\  rH   s    r(   rI   zASTOperatorBuildIn.__hash__s  s    DG}}r'   rU   c                    |dk    rt           }| j        |vrt          nt          }| j        |vrt	          d| j        z            || j                 S )NrX   zBInternal error: Built-in operator "%s" can not be mapped to an id.)r   r\  r   r   r   )r9   rU   idss      r(   r`   zASTOperatorBuildIn.get_idv  sk    a<<!Cwc!!"" " "C7#&(,0   47|r'   rK   r   c                Z    | j         dv s| j         d         dv r
d| j         z   S d| j         z   S )N>   rc  rp  new[]delete[]r   abcnox	operator operatorr  rN   s     r(   rO   zASTOperatorBuildIn._stringify  s:    7<<<
h@V@V((''r'   rg   r   r  ri   r   rl   r   c                    |t          j        dd          z  }| j        dv s| j        d         dv r|t          j                    z  }|t          j        | j        | j                  z  }d S )Nr  >   rc  rp  r  r  r   r  )r   r   r\  r   rn  r  s        r(   r  z'ASTOperatorBuildIn._describe_identifier  sk     	8,ZDDD7<<<
h@V@Vx.000GX/AAA			r'   N)r\  r-   r.   r/   r   r   r   r   r  	r#   r$   r%   r:   rB   rI   r`   rO   r  r&   r'   r(   r  r  j  s           # # # #
      ( ( ( (
B 
B 
B 
B 
B 
Br'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTOperatorLiteralrr   r+   r.   r/   c                    || _         d S r?   r  r  s     r(   r:   zASTOperatorLiteral.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rr   rA   s     r(   rB   zASTOperatorLiteral.__eq__  r  r'   rD   c                *    t          | j                  S r?   r  rH   s    r(   rI   zASTOperatorLiteral.__hash__  r  r'   rU   r-   c                V    |dk    rt           d| j                            |          z   S )NrX   li)r   rr   r`   r_   s     r(   r`   zASTOperatorLiteral.get_id  s,    a<<do,,W5555r'   rK   r   c                (    d || j                   z   S )Nr   r  rN   s     r(   rO   zASTOperatorLiteral._stringify  s    ii8888r'   rg   r   r  ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            |d|dd|           d S )Nr  z""ro   rp   )r   r   r1  rr   r   r  s        r(   r  z'ASTOperatorLiteral._describe_identifier  sX     	8,ZDDD83D$???**9j#r2vVVVVVr'   Nr#  r   r   r   r   r  r  r&   r'   r(   r  r    s        % % % %3 3 3 3
% % % %6 6 6 6
9 9 9 9	W 	W 	W 	W 	W 	Wr'   r  c                  F    e Zd ZddZdd	ZddZddZd dZd!dZd"dZ	dS )#ASTOperatorTyper5  r  r.   r/   c                    || _         d S r?   r5  )r9   r5  s     r(   r:   zASTOperatorType.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r5  rA   s     r(   rB   zASTOperatorType.__eq__  r  r'   rD   c                *    t          | j                  S r?   )rG   r5  rH   s    r(   rI   zASTOperatorType.__hash__  rJ   r'   rU   r-   c                    |dk    rd| j                             |          z  S d| j                             |          z   S )NrX   zcastto-%s-operatorrz  )r5  r`   r_   s     r(   r`   zASTOperatorType.get_id  sA    a<<'$)*:*:7*C*CCC$)**73333r'   rK   r   c                (    d || j                    S )Nr  r  rN   s     r(   rO   zASTOperatorType._stringify  s    199TY//111r'   c                     t          |           S r?   )r-   rH   s    r(   get_name_no_templatez$ASTOperatorType.get_name_no_template  s    4yyr'   rg   r   r  ri   r   rl   r   c                    |t          j        dd          z  }|t          j                    z  }| j                            |d||           d S )Nr  ro   )r   r   r   r5  r   r  s        r(   r  z$ASTOperatorType._describe_identifier  sP     	8,ZDDD8*,,,	$$Y
CHHHHHr'   N)r5  r  r.   r/   r   r   r   r   r   r  )
r#   r$   r%   r:   rB   rI   r`   rO   r  r  r&   r'   r(   r  r    s           ' ' ' '
   4 4 4 42 2 2 2   	I 	I 	I 	I 	I 	Ir'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTTemplateArgConstantr  r   r.   r/   c                    || _         d S r?   r  r  s     r(   r:   zASTTemplateArgConstant.__init__  r	  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTTemplateArgConstant.__eq__  s*    %!788 	"!!zU[((r'   rD   c                *    t          | j                  S r?   r  rH   s    r(   rI   zASTTemplateArgConstant.__hash__  r  r'   rK   r   r-   c                "     || j                   S r?   r  rN   s     r(   rO   z!ASTTemplateArgConstant._stringify  s    y$$$r'   rU   c                    |dk    r#t          |                               dd          S |dk    rdt          |           z   dz   S d| j                            |          z   dz   S )NrX   r   -r   Xr   )r-   r$  r  r`   r_   s     r(   r`   zASTTemplateArgConstant.get_id  se    a<<t99$$S#...a<<T?S((TZ&&w///#55r'   rg   r   rh   ri   r   rl   r   c                ^    t          |           | j                            ||||           d S r?   )r   r  r   r   s        r(   r   z)ASTTemplateArgConstant.describe_signature  s4     	 %%%
%%gtS&AAAAAr'   N)r  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ) ) ) )
       % % % %6 6 6 6B B B B B Br'   r  c                  >    e Zd ZddZdd
ZddZddZd dZd!dZdS )"ASTTemplateArgsargs&list[ASTType | ASTTemplateArgConstant]packExpansionr=   r.   r/   c                *    |J || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   zASTTemplateArgs.__init__  s%     	*r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTTemplateArgs.__eq__   s9    %11 	"!!yEJ&T4+=AT+TTr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTTemplateArgs.__hash__  s    TY 23444r'   rU   r-   c                   dk    rSg }|                     dd                    fd| j        D                       df           d                    |          S dg}t          | j                  dk    r| j        d d         D ]*}|                    |                                         +| j        r|                    d	           |                    | j        d                                                  | j        r|                    d
           |                    d
           d                    |          S )NrX   r  r  c              3  B   K   | ]}|                               V  d S r?   r   r   r  rU   s     r(   r   z)ASTTemplateArgs.get_id.<locals>.<genexpr>  s/      >>q'**>>>>>>r'   rp   Ir   r   Jr   )r   r   r  r3   r   r`   r  )r9   rU   r   r  s    `  r(   r`   zASTTemplateArgs.get_id  s7   a<<CJJ>>>>DI>>>>>   
 773<<ety>>AYss^ . .

188G,,----!  

3JJty}++G44555!  

3

3wws||r'   rK   r   c                x    d                     fd| j        D                       }| j        r|dz  }d|z   dz   S )Nr  c              3  .   K   | ]} |          V  d S r?   r&   r   r  rK   s     r(   r   z-ASTTemplateArgs._stringify.<locals>.<genexpr>  s+      88		!888888r'   rg  r  r  )r   r  r  r   s    ` r(   rO   zASTTemplateArgs._stringify  sM    ii8888di88888 	5LCSy3r'   rg   r   rh   ri   r   rl   r   c                p   t          |           |t          j        dd          z  }d}| j        D ]M}|s.|t          j        dd          z  }|t          j                    z  }d}|                    |d||           N| j        r|t          j        dd          z  }|t          j        dd          z  }d S )	Nr  Tr  Fro   rl   rg  r  )r   r   r   r  r   r   r  )r9   rg   rh   ri   rl   r   r  s          r(   r   z"ASTTemplateArgs.describe_signature$  s     	 %%%80c::: 	J 	JA 588cBBB82444E  *c& IIII 	Cx4UEBBBG80c:::r'   N)r  r  r  r=   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s        + + + +U U U U
5 5 5 5   ,   ; ; ; ; ; ;r'   r  c                      e Zd ZddZddZdS )ASTTrailingTypeSpecrU   rD   r.   r-   c                :    t          t          |                     r?   r   r_   s     r(   r`   zASTTrailingTypeSpec.get_id:  r   r'   rg   r   rh   ri   r   rl   r   r/   c                :    t          t          |                     r?   r   r   s        r(   r   z&ASTTrailingTypeSpec.describe_signature=  r   r'   Nr   r   r   r&   r'   r(   r"  r"  9  r   r'   r"  c                  >    e Zd ZddZdd
ZddZddZd dZd!dZdS )"ASTTrailingTypeSpecFundamentalr   r  
canonNamesr.   r/   c                    t          |          dk    sJ t          |          t          |          k    sJ ||f            || _        || _        d S r   )r3   r   r'  )r9   r   r'  s      r(   r:   z'ASTTrailingTypeSpecFundamental.__init__D  sQ    5zzQ5zzS__,,,uj.A,,,
$r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r&  r@   r   r'  rA   s     r(   rB   z%ASTTrailingTypeSpecFundamental.__eq__K  s9    %!?@@ 	"!!zU[(PT_@P-PPr'   rD   c                8    t          | j        | j        f          S r?   )rG   r   r'  rH   s    r(   rI   z'ASTTrailingTypeSpecFundamental.__hash__P  s    TZ1222r'   rK   r   r-   c                6    d                     | j                  S )Nr   )r   r   rN   s     r(   rO   z)ASTTrailingTypeSpecFundamental._stringifyS  s    xx
###r'   rU   c                R   |dk    r`g }| j         D ]A}|t          v r!|                    t          |                    ,|                    |           Bd                    |          S d                    | j                   }|t          vrt          d|z            t          |         S )NrX   r  r   zSemi-internal error: Fundamental type "%s" can not be mapped to an ID. Is it a true fundamental type? If not so, the parser should have rejected it.)r'  r	   r   r   r
   r   )r9   rU   r   r  rA  s        r(   r`   z%ASTTrailingTypeSpecFundamental.get_idV  s    a<<C_ " "***JJ1!45555JJqMMMM88C== hht''(((2478  
 "#&&r'   rg   r   rh   ri   r   rl   r   c                    d}| j         D ]5}|s|t          j                    z  }nd}|t          j        ||          z  }6d S )NTF)r   r   r   desc_sig_keyword_type)r9   rg   rh   ri   rl   r   r   s          r(   r   z1ASTTrailingTypeSpecFundamental.describe_signaturei  s_      	< 	<A 82444x5a;;;GG	< 	<r'   N)r   r  r'  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r&  r&  C  s        % % % %Q Q Q Q
3 3 3 3$ $ $ $' ' ' '&	< 	< 	< 	< 	< 	<r'   r&  c                  6    e Zd ZddZddZddZddZddZdS )ASTTrailingTypeSpecDecltypeAutor;   r<   r.   r=   c                ,    t          |t                    S r?   )r2   r0  rA   s     r(   rB   z&ASTTrailingTypeSpecDecltypeAuto.__eq__v  s    %!@AAAr'   rD   c                     t          d          S Ndecltype(auto)r   rH   s    r(   rI   z(ASTTrailingTypeSpecDecltypeAuto.__hash__y  s    $%%%r'   rK   r   r-   c                    dS r3  r&   rN   s     r(   rO   z*ASTTrailingTypeSpecDecltypeAuto._stringify|  s    r'   rU   c                     |dk    rt           dS )NrX   Dc)r   r_   s     r(   r`   z&ASTTrailingTypeSpecDecltypeAuto.get_id  s    a<<tr'   rg   r   rh   ri   r   rl   r   r/   c                    |t          j        dd          z  }|t          j        dd          z  }|t          j        dd          z  }|t          j        dd          z  }d S )Ndecltyperf  autorh  )r   r   r   r   s        r(   r   z2ASTTrailingTypeSpecDecltypeAuto.describe_signature  sd     	8,ZDDD80c:::8,VV<<<80c:::r'   Nr   r   r   r   r   r  r&   r'   r(   r0  r0  u  s|        B B B B& & & &          
; ; ; ; ; ;r'   r0  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTTrailingTypeSpecDecltyperq  r   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   z$ASTTrailingTypeSpecDecltype.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r<  r@   rq  rA   s     r(   rB   z"ASTTrailingTypeSpecDecltype.__eq__  s*    %!<== 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   z$ASTTrailingTypeSpecDecltype.__hash__  rJ   r'   rK   r   r-   c                .    d || j                   z   dz   S )Nz	decltype(rh  rs  rN   s     r(   rO   z&ASTTrailingTypeSpecDecltype._stringify  rP  r'   rU   c                \    |dk    rt           d| j                            |          z   dz   S )NrX   DTr   )r   rq  r`   r_   s     r(   r`   z"ASTTrailingTypeSpecDecltype.get_id  s1    a<<di&&w///#55r'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nr9  rf  rh  rU  r   s        r(   r   z.ASTTrailingTypeSpecDecltype.describe_signature  rV  r'   Nr  r   r   r   r   r   r  r&   r'   r(   r<  r<    s           ' ' ' '
   8 8 8 86 6 6 6
; ; ; ; ; ;r'   r<  c                  V    e Zd Zdd	Zd dZd!dZed"d            Zd#dZd$dZ	d%dZ
dS )&ASTTrailingTypeSpecNamerj   r-   
nestedNamer   placeholderType
str | Noner.   r/   c                0    || _         || _        || _        d S r?   )rj   rF  rG  )r9   rj   rF  rG  s       r(   r:   z ASTTrailingTypeSpecName.__init__  s      $.r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rE  r@   rj   rF  rG  rA   s     r(   rB   zASTTrailingTypeSpecName.__eq__  sQ    %!899 	"!!K5<' >5#33>$(==	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   rj   rF  rG  rH   s    r(   rI   z ASTTrailingTypeSpecName.__hash__  s    T[$/43GHIIIr'   c                    | j         S r?   rF  rH   s    r(   r,   zASTTrailingTypeSpecName.name  
    r'   rU   c                6    | j                             |          S r?   )rF  r`   r_   s     r(   r`   zASTTrailingTypeSpecName.get_id  s    %%g...r'   rK   r   c                   g }| j         r|                    | j         df           |                     || j                             | j        |                    d| j        f           d                    |          S r  )rj   r   r   rF  rG  r   r   s      r(   rO   z"ASTTrailingTypeSpecName._stringify  s{    ; 	+JJS)***

99T_--...+JJT12333wws||r'   rg   r   rh   ri   r   rl   r   c                F   | j         r8|t          j        | j         | j                   z  }|t          j                    z  }| j                            ||||           | j        |t          j                    z  }| j        dk    r|t          j        dd          z  }d S | j        dk    rb|t          j        dd          z  }|t          j        dd          z  }|t          j        dd          z  }|t          j        dd          z  }d S t          | j                  d S )Nr   r:  r4  r9  rf  rh  )	rj   r   r   r   rF  r   rG  r   r4   r   s        r(   r   z*ASTTrailingTypeSpecName.describe_signature  s(    ; 	1x0dkJJJGx.000G**7D#f*MMM+x.000G#v--84VVDDD%)99984ZLLL88cBBB84VVDDD88cBBB$T%9::: ,+r'   N)rj   r-   rF  r   rG  rH  r.   r/   r   r   r   r   r   r   r#   r$   r%   r:   rB   rI   r   r,   r`   rO   r   r&   r'   r(   rE  rE    s        / / / /
 
 
 
J J J J    X/ / / /   ; ; ; ; ; ;r'   rE  c                  F    e Zd Z	 d d!dZd"dZd#dZ	 d$d%dZd&dZd'dZdS )(ASTFunctionParameterFarg9ASTTypeWithInit | ASTTemplateParamConstrainedTypeWithInitellipsisr=   r.   r/   c                "    || _         || _        d S r?   )rU  rW  )r9   rU  rW  s      r(   r:   zASTFunctionParameter.__init__  s    
  r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   rT  r@   rU  rW  rA   s     r(   rB   zASTFunctionParameter.__eq__  s8    %!566 	"!!x59$H%.)HHr'   rD   c                8    t          | j        | j        f          S r?   )rG   rU  rW  rH   s    r(   rI   zASTFunctionParameter.__hash__  s    TXt}-...r'   NrU   
objectTyperH  rl   Symbol | Noner-   c                    |r!|j         j                            |d          S | j        rdS | j                            |          S )NFprefixedr  )parentr   r`   rW  rU  r9   rU   r[  rl   s       r(   r`   zASTFunctionParameter.get_id  sN      	M=,33Ge3LLL= 	,38??7+++r'   rK   r   c                4    | j         rdS  || j                  S Nrg  )rW  rU  rN   s     r(   rO   zASTFunctionParameter._stringify   s#    = 	'59TX&&&r'   rg   r   rh   ri   r   r   c                    t          |           | j        r|t          j        dd          z  }d S | j                            ||||           d S )Nrg  r   )r   rW  r   r   rU  r   r   s        r(   r   z'ASTFunctionParameter.describe_signature  s]     	 %%%= 	Kx4UEBBBGGGH''s6'JJJJJr'   F)rU  rV  rW  r=   r.   r/   r   r   NNrU   rD   r[  rH  rl   r\  r.   r-   r   r   r  r&   r'   r(   rT  rT    s         ! ! ! ! !I I I I
/ / / / TX, , , , ,' ' ' 'K K K K K Kr'   rT  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTNoexceptSpecrq  r[  r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTNoexceptSpec.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   ri  r@   rq  rA   s     r(   rB   zASTNoexceptSpec.__eq__  r  r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTNoexceptSpec.__hash__  rJ   r'   rK   r   r-   c                @    | j         rd || j                   z   dz   S dS )NrO  rh  rT  rs  rN   s     r(   rO   zASTNoexceptSpec._stringify  s-    9 	<49!5!55;;zr'   rg   r   rh   ri   r   rl   r   c                    |t          j        dd          z  }| j        rO|t          j        dd          z  }| j                            |d||           |t          j        dd          z  }d S d S )NrT  rf  ro   rh  r   r   rq  r   r   r   s        r(   r   z"ASTNoexceptSpec.describe_signature!  s}     	8,ZDDD9 	?x4S#>>>GI((*c6JJJx4S#>>>GGG	? 	?r'   Nrq  r[  r.   r/   r   r   r   r   r#   r$   r%   r:   rB   rI   rO   r   r&   r'   r(   ri  ri    sx           ' ' ' '
      
? ? ? ? ? ?r'   ri  c                  ^    e Zd Zd*dZd+dZd,dZed-d            Zd.dZd.dZ	d/d Z
d0d(Zd)S )1ASTParametersQualifiersr  list[ASTFunctionParameter]volatiler=   constrefQualrH  exceptionSpecri  trailingReturnr  overridefinalattrsr   initializerr.   r/   c                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        d S r?   )
r  ru  rv  rw  rx  ry  rz  r{  r|  r}  )r9   r  ru  rv  rw  rx  ry  rz  r{  r|  r}  s              r(   r:   z ASTParametersQualifiers.__init__,  sS     	 
*, 

&r'   r;   r<   c                z   t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j	        |j	        k    o/| j
        |j
        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rs  r@   r  ru  rv  rw  rx  ry  rz  r{  r|  r}  rA   s     r(   rB   zASTParametersQualifiers.__eq__D  s    %!899 	"!!I# 	6/	6
ek)	6 -	6 "e&99		6
 #u';;	6 /	6 
ek)	6 
ek)	6  E$55	
r'   rD   c                    t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        f
          S r?   )rG   r  ru  rv  rw  rx  ry  rz  r{  r|  r}  rH   s    r(   rI   z ASTParametersQualifiers.__hash__T  sN    IMJLMJJ
   	r'   c                    | j         S r?   )r  rH   s    r(   function_paramsz'ASTParametersQualifiers.function_paramsb  s
    yr'   rU   r-   c                Z   g }| j         r|                    d           | j        r1|dk    r|                    d           n|                    d           | j        dk    r|                    d           n | j        dk    r|                    d           d	                    |          S )
NVrX   CKz&&O&Rrp   )ru  r   rv  rw  r   r   s      r(   get_modifiers_idz(ASTParametersQualifiers.get_modifiers_idf  s    = 	JJsOOO: 	 !||

3

3<4JJsOOOO\S  JJsOOOwws||r'   c                   dk    rCt          | j                  dk    rdS dd                    fd| j        D                       z   S t          | j                  dk    rdS d                    fd| j        D                       S )	NrX   r   rp   __r  c              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z7ASTParametersQualifiers.get_param_id.<locals>.<genexpr>z  s/      &L&LQqxx'8'8&L&L&L&L&L&Lr'   vc              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z7ASTParametersQualifiers.get_param_id.<locals>.<genexpr>~  s/      @@188G,,@@@@@@r'   )r3   r  r   r_   s    `r(   get_param_idz$ASTParametersQualifiers.get_param_idu  s    a<<49~~""rchh&L&L&L&L$)&L&L&LLLLLty>>Q377@@@@di@@@@@@r'   rK   r   c                   dg}d}| j         D ]=}|s|                    d           d}|                    t          |                     >|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d| j        f           | j        r%|                    d || j                  f           | j        r%|                    d	 || j                  f           | j	        r|                    d
           | j
        r|                    d           t          | j                  dk    r%|                    d || j                  f           | j        r|                    d| j        f           d                    |          S )Nrf  Tr  Frh  z	 volatilez constr   z ->  finalz	 overrider    = rp   )r  r   r-   ru  rv  rw  r   rx  ry  r{  rz  r3   r|  r}  r   )r9   rK   r   r   r  s        r(   rO   z"ASTParametersQualifiers._stringify  s   e 	 	A !

4   EJJs1vv

3= 	$JJ{###: 	!JJx   < 	,JJT\*+++ 	=JJYYt'9::;<<< 	AJJ		$*= > >?@@@: 	!JJx   = 	$JJ{###tz??aJJYYtz223444 	2JJt/0111wws||r'   rg   r   rh   ri   r   rl   r   c                   t          |           d}|}|j        r9t          |t          j                  s|j        })|                    dd          }	 |dk    r]t          j                    }||d<   | j        D ]7}t          j        ddd          }	|	                    |	d||           ||	z  }8||z  }n|t          j
        d	d	          z  }d}
| j        D ]M}|
s.|t          j
        d
d
          z  }|t          j                    z  }d}
|	                    |d||           N|t          j
        dd          z  }dd}| j        r ||d           | j        r ||d           | j        r8|t          j                    z  }|t          j
        | j        | j                  z  }| j        r3|t          j                    z  }| j        	                    ||||           | j        ra|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j        	                    ||||           | j        r ||d           | j        r ||d           t)          | j                  dk    r0|t          j                    z  }| j        	                    |           | j        r|t          j                    z  }|t          j
        dd          z  }|t          j                    z  }| j        dv sJ | j        dk    r|t          j        dd          z  }d S |t          j        | j        | j                  z  }d S d S )NFmulti_line_parameter_listrz   rp   T)noemphr|   r   rf  r  ro   rh  rg   r   rn   r-   r.   r/   c                b    | t          j                    z  } | t          j        ||          z  } d S r?   r   r   r   rg   rn   s     r(   	_add_annoz=ASTParametersQualifiers.describe_signature.<locals>._add_anno  s0    x.000Gx0t<<<GGGr'   ru  rv  r  r{  rz  r   =>   0rp  defaultr  rg   r   rn   r-   r.   r/   )r   r`  r2   r   r   getdesc_parameterlistr  desc_parameterr   r   r   ru  rv  rw  rx  ry  rn  r{  rz  r3   r|  r}  r&  r   )r9   rg   rh   ri   rl   r  	test_node	paramlistrU  r|   r   r  s               r(   r   z*ASTParametersQualifiers.describe_signature  s    	 %%%$)!$	 	i)@AA %,	(1+U) )%  < 355I5NI12y # # /BtDDD&&ugs6&JJJU"		y GGx4S#>>>GEy P P 9x<S#FFFGx6888G&&w
C&OOOOx4S#>>>G	= 	= 	= 	= = 	+Igz***: 	(Igw'''< 	Qx.000Gx4T\4<PPPG 	Nx.000G11'4fMMM 	Ox.000Gx1$===Gx.000G227D#vNNN: 	(Igw'''= 	+Igz***tz??ax.000GJ))'222 	Yx.000Gx4S#>>>Gx.000G#'AAAAA3&&8;CEEE84T5EtGWXXX	Y 	Yr'   N)r  rt  ru  r=   rv  r=   rw  rH  rx  ri  ry  r  rz  r=   r{  r=   r|  r   r}  rH  r.   r/   r   r   r.   rt  r   r   r   )r#   r$   r%   r:   rB   rI   r   r  r  r  rO   r   r&   r'   r(   rs  rs  +  s        ' ' ' '0
 
 
 
        X   	A 	A 	A 	A   :EY EY EY EY EY EYr'   rs  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTExplicitSpecrq  r[  r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTExplicitSpec.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rq  rA   s     r(   rB   zASTExplicitSpec.__eq__  r  r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTExplicitSpec.__hash__  rJ   r'   rK   r   r-   c                    dg}| j         &|                    d || j                   df           d                    |          S )Nexplicitrf  rh  rp   )rq  r   r   r   s      r(   rO   zASTExplicitSpec._stringify  sF    l9 JJYYty1137888wws||r'   rg   r   ri   r   rl   r   c                    |t          j        dd          z  }| j        O|t          j        dd          z  }| j                            |d||           |t          j        dd          z  }d S d S )Nr  rf  ro   rh  ro  )r9   rg   ri   rl   s       r(   r   z"ASTExplicitSpec.describe_signature  sy     	8,ZDDD9 x4S#>>>GI((*c6JJJx4S#>>>GGG ! r'   Nrp  r   r   r   rg   r   ri   r   rl   r   r.   r/   rq  r&   r'   r(   r  r    sx           ' ' ' '
      ? ? ? ? ? ?r'   r  c                  >    e Zd Zd%dZd&dZd'dZd(dZd)dZd*d#Zd$S )+ASTDeclSpecsSimplestorager-   threadLocalr=   inlinevirtualexplicitSpecASTExplicitSpec | None	consteval	constexpr	constinitru  rv  friendr|  r   r.   r/   c                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        d S r?   )r  r  r  r  r  r  r  r  ru  rv  r  r|  )r9   r  r  r  r  r  r  r  r  ru  rv  r  r|  s                r(   r:   zASTDeclSpecsSimple.__init__	  s^     &(""" 



r'   r;   r<   c                   t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    o| j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j	        |j	        k    oO| j
        |j
        k    o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  r  r  r  r  r  r  ru  rv  r  r|  rA   s     r(   rB   zASTDeclSpecsSimple.__eq__	  s    %!344 	"!!LEM) * E$55*u|+* -* !U%77	*
 %/1* %/1* %/1* /* 
ek)* u|+* 
ek)	
r'   rD   c                    t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        | j
        | j        | j        f          S r?   )rG   r  r  r  r  r  r  r  r  ru  rv  r  r|  rH   s    r(   rI   zASTDeclSpecsSimple.__hash__0	  sW    LKLNNNMJKJ
   	r'   c                `   |s| S t          | j        p|j        | j        p|j        | j        p|j        | j        p|j        | j        p|j        | j        p|j        | j        p|j        | j        p|j        | j	        p|j	        | j
        p|j
        | j        p|j        | j        |j        z             S r?   )r  r  r  r  r  r  r  r  r  ru  rv  r  r|  rA   s     r(   	mergeWithzASTDeclSpecsSimple.mergeWith@	  s     	K!L)EM1 1K'5<L)EM3!3N-eoN-eoN-eoM+U^J%%+K'5<J$
 
 	
r'   rK   r   c                4   g }t          | j                  dk    r#|                     || j                             | j        r|                    | j                   | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        r#|                     || j                             | j	        r|                    d           | j
        r|                    d           | j        r|                    d           | j        r|                    d	           | j        r|                    d
           d                    |          S )Nr   thread_localr  r  r  r  r  r  ru  rv  r   )r3   r|  r   r  r  r  r  r  r  r  r  r  ru  rv  r   r   s      r(   rO   zASTDeclSpecsSimple._stringifyR	  s   tz??aJJyy,,---< 	%JJt|$$$ 	'JJ~&&&; 	!JJx   ; 	!JJx   < 	"JJy!!! 	5JJyy!233444> 	$JJ{###> 	$JJ{###> 	$JJ{###= 	#JJz""": 	 JJwxx}}r'   rg   r   ri   r   rl   r   c                |   | j                             |           t          | j                   dk    dfd}| j        r ||| j                  | j        r ||d	          | j        r ||d
          | j        r ||d          | j        r ||d          | j        r6r|t          j
                    z  }| j                            |||           d| j        r ||d          | j        r ||d          | j        r ||d          | j        r ||d          | j        r ||d          d S d S )Nr   rg   r   rn   r-   r.   r=   c                h    r| t          j                    z  } | t          j        ||          z  } dS r  r  )rg   rn   	add_spaces     r(   _addz3ASTDeclSpecsSimple.describe_signature.<locals>._addt	  s:     582444x0t<<<G4r'   r  r  r  r  Tr  r  r  ru  rv  )rg   r   rn   r-   r.   r=   )r|  r   r3   r  r  r  r  r  r  r   r   r  r  r  ru  rv  )r9   rg   ri   rl   r  r  s        @r(   r   z%ASTDeclSpecsSimple.describe_signaturen	  s    	
%%g...
OOq(		 	 	 	 	 	 < 	4Wdl33I 	6Wn55I; 	0Wh//I; 	0Wh//I< 	1Wi00I 	 58244400#vFFFI> 	3Wk22I> 	3Wk22I> 	3Wk22I= 	2Wj11I: 	/Wg..III	/ 	/r'   N)r  r-   r  r=   r  r=   r  r=   r  r  r  r=   r  r=   r  r=   ru  r=   rv  r=   r  r=   r|  r   r.   r/   r   r   )r;   r  r.   r  r   r  )	r#   r$   r%   r:   rB   rI   r  rO   r   r&   r'   r(   r  r  	  s           8
 
 
 
$    
 
 
 
$   8$/ $/ $/ $/ $/ $/r'   r  c                  >    e Zd Zdd
Zd dZd!dZd"dZd#dZd$dZdS )%ASTDeclSpecsouterr-   	leftSpecsr  
rightSpecstrailingr"  r.   r/   c                    || _         || _        || _        | j                            | j                  | _        || _        d S r?   )r  r  r  r  allSpecstrailingTypeSpec)r9   r  r  r  r  s        r(   r:   zASTDeclSpecs.__init__	  s@     
"$00AA (r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  r  r  rA   s     r(   rB   zASTDeclSpecs.__eq__	  sf    %.. 	"!!J%+% @%/1@5#33@ %)??		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r  r  r  r  rH   s    r(   rI   zASTDeclSpecs.__hash__	  s.    JNO!	
   	r'   rU   c                   |dk    rr| j                             |          g}| j        j        r|                    d           | j        j        r|                    d           d                    |          S g }| j        j        r|                    d           | j        j        r|                    d           | j         -|                    | j                             |                     d                    |          S )NrX   r  r  rp   r  )r  r`   r  ru  r   rv  r   r   s      r(   r`   zASTDeclSpecs.get_id	  s    a<<(//889C}%  

3}"  

3773<<=! 	JJsOOO= 	JJsOOO ,JJt,33G<<===wws||r'   rK   r   c                   g } || j                   }t          |          dk    r|                    |           | j        rt          |          dk    r|                    d           |                     || j                             t	          | j                  }t          |          dk    r=t          |          dk    r|                    d           |                    |           d                    |          S Nr   r   rp   )r  r3   r   r  r-   r  r   )r9   rK   r   lrs        r(   rO   zASTDeclSpecs._stringify	  s    Idn%%q66A::JJqMMM  	3xx!||

3JJyy!677888DO$$A1vvzzs88a<<JJsOOO

1wws||r'   rg   r   rh   ri   r   rl   r   c                   t          |           t          |          }| j                            |||           t          |          |k    }| j        r|r|t          j                    z  }t          |          }| j                            ||||           t          |          |k    }t          t          | j                            dk    r8|r|t          j                    z  }| j                            |||           d S d S d S )Nr   r   )	r   r3   r  r   r  r   r   r-   r  )r9   rg   rh   ri   rl   num_childrenr  s          r(   r   zASTDeclSpecs.describe_signature	  s    	 %%%7||))'3???LLL0	  
	I 582444w<<L!44WdCPV4WWWG4I3t''((1,, 9x6888G227CHHHHH
	I 
	I -,r'   N)
r  r-   r  r  r  r  r  r"  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r  	  s        ) ) ) )
 
 
 
      "    I I I I I Ir'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTArraysizer   r.   r/   c                    || _         d S r?   r  )r9   r  s     r(   r:   zASTArray.__init__	  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTArray.__eq__	  s)    %** 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   )rG   r  rH   s    r(   rI   zASTArray.__hash__	  rJ   r'   rK   r   r-   c                @    | j         rd || j                   z   dz   S dS )Nr  r  rq  r  rN   s     r(   rO   zASTArray._stringify	  s-    9 	49---334r'   rU   c                    |dk    rdS |dk    r#| j         rdt          | j                   z   dz   S dS | j         r d| j                             |          z   dz   S dS )NrX   Ar   ra  A_)r  r-   r`   r_   s     r(   r`   zASTArray.get_id
  so    a<<3a<<y S^^+c11t9 	))'222S884r'   rg   r   rh   ri   r   rl   r   c                    t          |           |t          j        dd          z  }| j        r| j                            |d||           |t          j        dd          z  }d S )Nr  ro   r  )r   r   r   r  r   r   s        r(   r   zASTArray.describe_signature
  sk     	 %%%80c:::9 	KI((*c6JJJ80c:::r'   N)r  r   r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r  	  s           ' ' ' '
         ; ; ; ; ; ;r'   r  c                      e Zd Zed d            Zej        d!d            Zed"d            Zed#d
            Zed$d            Zd"dZ	d%dZ
d%dZd%dZd&dZd"dZd'dZdS )(ASTDeclaratorr.   r   c                :    t          t          |                     r?   r   rH   s    r(   r,   zASTDeclarator.name
      !$t**---r'   r,   r/   c                :    t          t          |                     r?   r   r8   s     r(   r,   zASTDeclarator.name
  r  r'   r=   c                :    t          t          |                     r?   r   rH   s    r(   isPackzASTDeclarator.isPack#
  r  r'   rt  c                :    t          t          |                     r?   r   rH   s    r(   r  zASTDeclarator.function_params'
  r  r'   r  c                :    t          t          |                     r?   r   rH   s    r(   ry  zASTDeclarator.trailingReturn+
  r  r'   c                :    t          t          |                     r?   r   rH   s    r(   require_space_after_declSpecsz+ASTDeclarator.require_space_after_declSpecs/
  r   r'   rU   rD   r-   c                :    t          t          |                     r?   r   r_   s     r(   r  zASTDeclarator.get_modifiers_id2
  r   r'   c                :    t          t          |                     r?   r   r_   s     r(   r  zASTDeclarator.get_param_id5
  r   r'   c                :    t          t          |                     r?   r   r_   s     r(   get_ptr_suffix_idzASTDeclarator.get_ptr_suffix_id8
  r   r'   returnTypeIdc                :    t          t          |                     r?   r   r9   rU   r  s      r(   get_type_idzASTDeclarator.get_type_id;
  r   r'   c                :    t          t          |                     r?   r   rH   s    r(   is_function_typezASTDeclarator.is_function_type>
  r   r'   rg   r   rh   ri   r   rl   r   c                :    t          t          |                     r?   r   r   s        r(   r   z ASTDeclarator.describe_signatureA
  r   r'   Nr   r  r   r  r.   r  r   rU   rD   r  r-   r.   r-   r   )r#   r$   r%   r   r,   setterr  r  ry  r  r  r  r  r  r  r   r&   r'   r(   r  r  
  s@       . . . X. 
[. . . [. . . . X. . . . X. . . . X.. . . .. . . .. . . .. . . .. . . .. . . .. . . . . .r'   r  c                      e Zd Zd-d	Zd.dZd/dZed0d            Zej        d1d            Zed2d            Z	ed3d            Z
ed4d            Zd5dZd5dZd5dZd6dZd2dZd2d Zd7d#Zd8d+Zd,S )9ASTDeclaratorNameParamQualdeclIdr   arrayOpslist[ASTArray]	paramQualrs  r.   r/   c                0    || _         || _        || _        d S r?   )r  r  r  )r9   r  r  r  s       r(   r:   z#ASTDeclaratorNameParamQual.__init__H
  s      "r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  r  rA   s     r(   rB   z!ASTDeclaratorNameParamQual.__eq__R
  sN    %!;<< 	"!!K5<' 2/2%/1	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r  r  r  rH   s    r(   rI   z#ASTDeclaratorNameParamQual.__hash__[
  s    T[$-@AAAr'   c                    | j         S r?   r  rH   s    r(   r,   zASTDeclaratorNameParamQual.name^
  
    {r'   r,   c                    || _         d S r?   r  r8   s     r(   r,   zASTDeclaratorNameParamQual.nameb
      r'   c                    dS r   r&   rH   s    r(   r  z!ASTDeclaratorNameParamQual.isPackf
  s    ur'   rt  c                    | j         j        S r?   )r  r  rH   s    r(   r  z*ASTDeclaratorNameParamQual.function_paramsj
  s    ~--r'   r  c                    | j         j        S r?   )r  ry  rH   s    r(   ry  z)ASTDeclaratorNameParamQual.trailingReturnn
  s    ~,,r'   rU   r-   c                h    | j         r| j                             |          S t          d| z            )Nz,This should only be called on a function: %s)r  r  r   r_   s     r(   r  z+ASTDeclaratorNameParamQual.get_modifiers_ids
  s6    > 	<>227;;;FMNNNr'   c                H    | j         r| j                             |          S dS r  )r  r  r_   s     r(   r  z'ASTDeclaratorNameParamQual.get_param_idy
  s'    > 	>..w7772r'   c                P    d                     fd| j        D                       S )Nrp   c              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z?ASTDeclaratorNameParamQual.get_ptr_suffix_id.<locals>.<genexpr>
  s/      @@Qqxx((@@@@@@r'   )r   r  r_   s    `r(   r  z,ASTDeclaratorNameParamQual.get_ptr_suffix_id
  s,    ww@@@@$-@@@@@@r'   r  c                "   |dk    sJ |                      |          g}| j        rA|                    |                     |          d||                     |          df           n|                    |           d                    |          S )Nr   Fr   rp   )r  r  r   r  r  r   r   r9   rU   r  r   s       r(   r  z&ASTDeclaratorNameParamQual.get_type_id
  s    !||||%%g../> 		%JJ%%g..!!'**     JJ|$$$wws||r'   c                    | j         d uS r?   r  rH   s    r(   r  z8ASTDeclaratorNameParamQual.require_space_after_declSpecs
      {$&&r'   c                    | j         d uS r?   )r  rH   s    r(   r  z+ASTDeclaratorNameParamQual.is_function_type
  s    ~T))r'   rK   r   c                &   g }| j         r#|                     | j                              |                    fd| j        D                        | j        r#|                     | j                             d                    |          S )Nc              3  .   K   | ]} |          V  d S r?   r&   )r   r\  rK   s     r(   r   z8ASTDeclaratorNameParamQual._stringify.<locals>.<genexpr>
  s+      99R99R==999999r'   rp   )r  r   r   r  r  r   r   s    ` r(   rO   z%ASTDeclaratorNameParamQual._stringify
  s    ; 	/JJyy--...

99994=999999> 	2JJyy00111wws||r'   rg   r   rh   ri   r   rl   r   c                    t          |           | j        r| j                            ||||           | j        D ]}|                    ||||           | j        r| j                            ||||           d S d S r?   )r   r  r   r  r  )r9   rg   rh   ri   rl   r\  s         r(   r   z-ASTDeclaratorNameParamQual.describe_signature
  s     	 %%%; 	GK**7D#vFFF- 	> 	>B!!'4f====> 	JN--gtS&IIIII	J 	Jr'   N)r  r   r  r   r  rs  r.   r/   r   r   r   r  r   r  r  r   r  r   r   )r#   r$   r%   r:   rB   rI   r   r,   r  r  r  ry  r  r  r  r  r  r  rO   r   r&   r'   r(   r  r  G
  s       # # # #
 
 
 
B B B B    X 
[   [    X . . . X. - - - X-O O O O   A A A A   $' ' ' '* * * *   	J 	J 	J 	J 	J 	Jr'   r  c                      e Zd Zd#dZd$dZd%dZed&d            Zej        d'd            Zd(dZ	d(dZ
d)dZd)dZd*dZd+d!Zd"S ),ASTDeclaratorNameBitFieldr  r   r  r   r.   r/   c                "    || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   z"ASTDeclaratorNameBitField.__init__
  s    			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   z ASTDeclaratorNameBitField.__eq__
  s8    %!:;; 	"!!{el*FtyEJ/FFr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   z"ASTDeclaratorNameBitField.__hash__
  s    T[$),---r'   c                    | j         S r?   r  rH   s    r(   r,   zASTDeclaratorNameBitField.name
  r  r'   r,   c                    || _         d S r?   r  r8   s     r(   r,   zASTDeclaratorNameBitField.name
  r	  r'   rU   r-   c                    dS r  r&   r_   s     r(   r  z&ASTDeclaratorNameBitField.get_param_id
      rr'   c                    dS r  r&   r_   s     r(   r  z+ASTDeclaratorNameBitField.get_ptr_suffix_id
  r"  r'   c                    | j         d uS r?   r  rH   s    r(   r  z7ASTDeclaratorNameBitField.require_space_after_declSpecs
  r  r'   c                    dS r   r&   rH   s    r(   r  z*ASTDeclaratorNameBitField.is_function_type
  r   r'   rK   r   c                    g }| j         r#|                     || j                              |                    d || j                  f           d                    |          S )Nr  rp   )r  r   r   r  r   r   s      r(   rO   z$ASTDeclaratorNameBitField._stringify
  sb    ; 	/JJyy--...

E99TY//0111wws||r'   rg   r   rh   ri   r   rl   r   c                .   t          |           | j        r| j                            ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr  )r   r  r   r   r   r   r  r   s        r(   r   z,ASTDeclaratorNameBitField.describe_signature
  s     	 %%%; 	GK**7D#vFFF8*,,,80c:::8*,,,	$$WdC@@@@@r'   N)r  r   r  r   r.   r/   r   r   r   r  r   r   r   r   )r#   r$   r%   r:   rB   rI   r   r,   r  r  r  r  r  rO   r   r&   r'   r(   r  r  
  s          G G G G
. . . .    X 
[   [      
' ' ' '      	A 	A 	A 	A 	A 	Ar'   r  c                      e Zd Zd.d
Zd/dZd0dZed1d            Zej        d2d            Zed3d            Z	ed4d            Z
ed5d            Zd3dZd6dZd7dZd7d Zd7d!Zd8d#Zd3d$Zd9d,Zd-S ):ASTDeclaratorPtrnextr  ru  r=   rv  r|  r   r.   r/   c                F    |sJ || _         || _        || _        || _        d S r?   )r*  ru  rv  r|  )r9   r*  ru  rv  r|  s        r(   r:   zASTDeclaratorPtr.__init__
  s-     	 



r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r)  r@   r*  ru  rv  r|  rA   s     r(   rB   zASTDeclaratorPtr.__eq__
  sa    %!122 	"!!I# */*
ek)* 
ek)		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r*  ru  rv  r|  rH   s    r(   rI   zASTDeclaratorPtr.__hash__
  s!    TYtz4:FGGGr'   r   c                    | j         j        S r?   r*  r,   rH   s    r(   r,   zASTDeclaratorPtr.name
      y~r'   r,   c                    || j         _        d S r?   r/  r8   s     r(   r,   zASTDeclaratorPtr.name       	r'   c                    | j         j        S r?   r*  r  rH   s    r(   r  zASTDeclaratorPtr.isPack      yr'   rt  c                    | j         j        S r?   r*  r  rH   s    r(   r  z ASTDeclaratorPtr.function_params      y((r'   r  c                    | j         j        S r?   r*  ry  rH   s    r(   ry  zASTDeclaratorPtr.trailingReturn      y''r'   c                4    | j                                         S r?   r*  r  rH   s    r(   r  z.ASTDeclaratorPtr.require_space_after_declSpecs      y66888r'   rK   r   r-   c                \   d || j                   g}t          | j                   dk    r#| j        s| j        r|                    d           | j        r|                    d           | j        r1| j        r|                    d           |                    d           | j        s| j        st          | j                   dk    r.| j                                        r|                    d           |                     || j                             d                    |          S )N*r   r   ru  rv  rp   )r|  r3   ru  rv  r   r*  r  r   r   s      r(   rO   zASTDeclaratorPtr._stringify  s   IIdj))*tz??aT]djJJsOOO= 	#JJz""": 	 }  

3JJw: 	  	 #dj//A*=*=y6688  

3

99TY''(((wws||r'   rU   c                6    | j                             |          S r?   r*  r  r_   s     r(   r  z!ASTDeclaratorPtr.get_modifiers_id#      y))'222r'   c                6    | j                             |          S r?   r*  r  r_   s     r(   r  zASTDeclaratorPtr.get_param_id&      y%%g...r'   c                   |dk    r}dg}| j         r|                    d           | j        r|                    d           |                    | j                            |                     d                    |          S | j                            |          dg}| j         r|                    d           | j        r|                    d           d                    |          S )NrX   Pr  r  rp   )ru  r   rv  r*  r  r   r   s      r(   r  z"ASTDeclaratorPtr.get_ptr_suffix_id)  s    a<<%C}  

3z  

3JJty227;;<<<773<<y**733S9= 	JJsOOO: 	JJsOOOwws||r'   r  c                    dg}| j         r|                    d           | j        r|                    d           |                    |           | j                            |d                    |                    S )NrH  r  r  rp   r  )ru  r   rv  r*  r  r   r  s       r(   r  zASTDeclaratorPtr.get_type_id:  sr    e= 	JJsOOO: 	JJsOOO

<   y$$W2773<<$HHHr'   c                4    | j                                         S r?   r*  r  rH   s    r(   r  z!ASTDeclaratorPtr.is_function_typeD      y))+++r'   rg   r   rh   ri   r   rl   r   c                r   t          |           |t          j        dd          z  }| j                            |           t          | j                  dk    r$| j        s| j        r|t          j                    z  }dd	}| j        r ||d
           | j        r)| j        r|t          j                    z  } ||d           | j        s| j        st          | j                  dk    r/| j	        
                                r|t          j                    z  }| j	                            ||||           d S )Nr@  r   rg   r   rn   r-   r.   r/   c                6    | t          j        ||          z  } d S r?   r  r  s     r(   r  z6ASTDeclaratorPtr.describe_signature.<locals>._add_annoP      x0t<<<GGGr'   ru  rv  r  )r   r   r   r|  r   r3   ru  rv  r   r*  r  r9   rg   rh   ri   rl   r  s         r(   r   z#ASTDeclaratorPtr.describe_signatureG  sN    	 %%%80c:::
%%g...tz??aT]djx.000G	= 	= 	= 	= = 	+Igz***: 	(} 582444Igw''': 	5 	5#dj//A*=*=y6688 582444	$$WdC@@@@@r'   N)
r*  r  ru  r=   rv  r=   r|  r   r.   r/   r   r   r   r  r   r  r  r   r   r  r   r#   r$   r%   r:   rB   rI   r   r,   r  r  r  ry  r  rO   r  r  r  r  r  r   r&   r'   r(   r)  r)  
  s          
 
 
 
H H H H    X 
[   [       X  ) ) ) X) ( ( ( X(9 9 9 9    3 3 3 3/ / / /   "I I I I, , , ,A A A A A Ar'   r)  c                      e Zd Zd,dZd-dZd.dZed/d            Zej        d0d            Zed1d            Z	ed2d            Z
ed3d            Zd1dZd4dZd5dZd5dZd5dZd6d!Zd1d"Zd7d*Zd+S )8ASTDeclaratorRefr*  r  r|  r   r.   r/   c                *    |sJ || _         || _        d S r?   )r*  r|  )r9   r*  r|  s      r(   r:   zASTDeclaratorRef.__init__`  s    	


r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   rT  r@   r*  r|  rA   s     r(   rB   zASTDeclaratorRef.__eq__e  s8    %!122 	"!!yEJ&D4:+DDr'   rD   c                8    t          | j        | j        f          S r?   )rG   r*  r|  rH   s    r(   rI   zASTDeclaratorRef.__hash__j      TY
+,,,r'   r   c                    | j         j        S r?   r/  rH   s    r(   r,   zASTDeclaratorRef.namem  r0  r'   r,   c                    || j         _        d S r?   r/  r8   s     r(   r,   zASTDeclaratorRef.nameq  r2  r'   c                    | j         j        S r?   r4  rH   s    r(   r  zASTDeclaratorRef.isPacku  r5  r'   rt  c                    | j         j        S r?   r7  rH   s    r(   r  z ASTDeclaratorRef.function_paramsy  r8  r'   r  c                    | j         j        S r?   r:  rH   s    r(   ry  zASTDeclaratorRef.trailingReturn}  r;  r'   c                4    | j                                         S r?   r=  rH   s    r(   r  z.ASTDeclaratorRef.require_space_after_declSpecs  r>  r'   rK   r   r-   c                "   d || j                   g}t          | j                   dk    r.| j                                        r|                    d           |                     || j                             d                    |          S )Nr  r   r   rp   )r|  r3   r*  r  r   r   r   s      r(   rO   zASTDeclaratorRef._stringify  s{    IIdj))*tz??aDI$K$K$M$MJJsOOO

99TY''(((wws||r'   rU   c                6    | j                             |          S r?   rB  r_   s     r(   r  z!ASTDeclaratorRef.get_modifiers_id  rC  r'   c                6    | j                             |          S r?   rE  r_   s     r(   r  zASTDeclaratorRef.get_param_id  rF  r'   c                    |dk    rd| j                             |          z   S | j                             |          dz   S )NrX   r  r*  r  r_   s     r(   r  z"ASTDeclaratorRef.get_ptr_suffix_id  sA    a<<44W====9..w77#==r'   r  c                P    |dk    sJ | j                             |d|z             S )Nr   r  rJ  r*  r  r  s      r(   r  zASTDeclaratorRef.get_type_id  s/    !||||y$$W3;M$NNNr'   c                4    | j                                         S r?   rL  rH   s    r(   r  z!ASTDeclaratorRef.is_function_type  rM  r'   rg   r   rh   ri   r   rl   r   c                P   t          |           |t          j        dd          z  }| j                            |           t          | j                  dk    r/| j                                        r|t          j                    z  }| j                            ||||           d S )Nr  r   )	r   r   r   r|  r   r3   r*  r  r   r   s        r(   r   z#ASTDeclaratorRef.describe_signature  s     	 %%%80c:::
%%g...tz??Q49#J#J#L#Lx.000G	$$WdC@@@@@r'   N)r*  r  r|  r   r.   r/   r   r   r   r  r   r  r  r   r   r  r   rR  r&   r'   r(   rT  rT  _  s          
E E E E
- - - -    X 
[   [       X  ) ) ) X) ( ( ( X(9 9 9 9   3 3 3 3/ / / /> > > >O O O O
, , , ,A A A A A Ar'   rT  c                      e Zd Zd*dZd+d	Zd,dZed-d            Zej        d.d            Zed/d            Z	ed0d            Z
ed1d            Zd1dZd2dZd3dZd3dZd3dZd4dZd1d Zd5d(Zd)S )6ASTDeclaratorParamPackr*  r  r.   r/   c                    |sJ || _         d S r?   )r*  )r9   r*  s     r(   r:   zASTDeclaratorParamPack.__init__      			r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   ri  r@   r*  rA   s     r(   rB   zASTDeclaratorParamPack.__eq__  s*    %!788 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   )rG   r*  rH   s    r(   rI   zASTDeclaratorParamPack.__hash__  rJ   r'   r   c                    | j         j        S r?   r/  rH   s    r(   r,   zASTDeclaratorParamPack.name  r0  r'   r,   c                    || j         _        d S r?   r/  r8   s     r(   r,   zASTDeclaratorParamPack.name  r2  r'   rt  c                    | j         j        S r?   r7  rH   s    r(   r  z&ASTDeclaratorParamPack.function_params  r8  r'   r  c                    | j         j        S r?   r:  rH   s    r(   ry  z%ASTDeclaratorParamPack.trailingReturn  r;  r'   c                    dS r  r&   rH   s    r(   r  zASTDeclaratorParamPack.isPack  s    tr'   c                    dS r   r&   rH   s    r(   r  z4ASTDeclaratorParamPack.require_space_after_declSpecs  r   r'   rK   r   r-   c                N     || j                   }| j         j        rd|z   }d|z   S )Nr   rg  r/  r   s      r(   rO   z!ASTDeclaratorParamPack._stringify  s2    i	""9> 	)Cs{r'   rU   c                6    | j                             |          S r?   rB  r_   s     r(   r  z'ASTDeclaratorParamPack.get_modifiers_id  rC  r'   c                6    | j                             |          S r?   rE  r_   s     r(   r  z#ASTDeclaratorParamPack.get_param_id  rF  r'   c                    |dk    rd| j                             |          z   S | j                             |          dz   S )NrX   Dprc  r_   s     r(   r  z(ASTDeclaratorParamPack.get_ptr_suffix_id  sA    a<<$)55g>>>>9..w77$>>r'   r  c                P    |dk    sJ | j                             |d|z             S )Nr   rx  rJ  re  r  s      r(   r  z"ASTDeclaratorParamPack.get_type_id  s/    !||||y$$W4,;N$OOOr'   c                4    | j                                         S r?   rL  rH   s    r(   r  z'ASTDeclaratorParamPack.is_function_type  rM  r'   rg   r   rh   ri   r   rl   r   c                    t          |           |t          j        dd          z  }| j        j        r|t          j                    z  }| j                            ||||           d S rc  )r   r   r   r*  r,   r   r   r   s        r(   r   z)ASTDeclaratorParamPack.describe_signature  sj     	 %%%80>>>9> 	1x.000G	$$WdC@@@@@r'   N)r*  r  r.   r/   r   r   r   r  r  r  r   r   r   r  r   )r#   r$   r%   r:   rB   rI   r   r,   r  r  ry  r  r  rO   r  r  r  r  r  r   r&   r'   r(   ri  ri    s          ' ' ' '
       X 
[   [ ) ) ) X) ( ( ( X(    X      3 3 3 3/ / / /? ? ? ?P P P P
, , , ,A A A A A Ar'   ri  c                      e Zd Zd-d
Zd.dZd/dZed0d            Zej        d1d            Zed2d            Z	ed3d            Z
ed4d            Zd2dZd5dZd6dZd6dZd6d Zd7d"Zd2d#Zd8d+Zd,S )9ASTDeclaratorMemPtr	classNamer   rv  r=   ru  r*  r  r.   r/   c                N    |sJ |sJ || _         || _        || _        || _        d S r?   )r~  rv  ru  r*  )r9   r~  rv  ru  r*  s        r(   r:   zASTDeclaratorMemPtr.__init__  s9     "
 			r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r}  r@   r~  rv  ru  r*  rA   s     r(   rB   zASTDeclaratorMemPtr.__eq__  sa    %!455 	"!!Neo- (
ek)(/( 	UZ'		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r~  rv  ru  r*  rH   s    r(   rI   zASTDeclaratorMemPtr.__hash__  s!    T^TZ	JKKKr'   c                    | j         j        S r?   r/  rH   s    r(   r,   zASTDeclaratorMemPtr.name
  r0  r'   r,   c                    || j         _        d S r?   r/  r8   s     r(   r,   zASTDeclaratorMemPtr.name  r2  r'   c                    | j         j        S r?   r4  rH   s    r(   r  zASTDeclaratorMemPtr.isPack  r5  r'   rt  c                    | j         j        S r?   r7  rH   s    r(   r  z#ASTDeclaratorMemPtr.function_params  r8  r'   r  c                    | j         j        S r?   r:  rH   s    r(   ry  z"ASTDeclaratorMemPtr.trailingReturn  r;  r'   c                    dS r  r&   rH   s    r(   r  z1ASTDeclaratorMemPtr.require_space_after_declSpecs  r  r'   rK   r   r-   c                   g }|                      || j                  df           | j        r|                    d           | j        r1| j        r|                    d           |                    d           | j                                        r|                    d           |                     || j                             d                    |          S )Nz::*ru  r   rv  rp   )r   r~  ru  r   rv  r*  r  r   r   s      r(   rO   zASTDeclaratorMemPtr._stringify!  s    

IIdn--u5666= 	#JJz""": 	 }  

3JJw92244 	JJsOOO

99TY''(((wws||r'   rU   c                P    |dk    rt           | j                            |          S NrX   )r   r*  r  r_   s     r(   r  z$ASTDeclaratorMemPtr.get_modifiers_id/  s'    a<<y))'222r'   c                P    |dk    rt           | j                            |          S r  )r   r*  r  r_   s     r(   r  z ASTDeclaratorMemPtr.get_param_id4  s'    a<<y%%g...r'   c                *    |dk    rt           t          r  )r   r   r*  r  r_   s     r(   r  z%ASTDeclaratorMemPtr.get_ptr_suffix_id9  s    a<<!!r'   r  c                    |dk    sJ d}| j         r|dz  }| j        r|dz  }|dz  }|| j                            |          z  }||z  }| j                            ||          S )Nr   rp   r  r  M)ru  rv  r~  r`   r*  r  )r9   rU   r  next_return_type_ids       r(   r  zASTDeclaratorMemPtr.get_type_id?  s    !|||| = 	'3&: 	'3&s"t~44W===|+y$$W.ABBBr'   c                4    | j                                         S r?   rL  rH   s    r(   r  z$ASTDeclaratorMemPtr.is_function_typeL  rM  r'   rg   r   rh   ri   r   rl   r   c                   t          |           | j                            |d||           |t          j        dd          z  }|t          j        dd          z  }dd
}| j        r ||d           | j        r)| j        r|t          j                    z  } ||d           | j        	                                r|t          j                    z  }| j                            ||||           d S )Nro   r   r@  rg   r   rn   r-   r.   r/   c                6    | t          j        ||          z  } d S r?   r  r  s     r(   r  z9ASTDeclaratorMemPtr.describe_signature.<locals>._add_annoW  rP  r'   ru  rv  r  )
r   r~  r   r   r   ru  rv  r   r*  r  rQ  s         r(   r   z&ASTDeclaratorMemPtr.describe_signatureO  s    	 %%%))':sFKKK80t<<<80c:::	= 	= 	= 	= = 	+Igz***: 	(} 582444Igw'''92244 	1x.000G	$$WdC@@@@@r'   N)
r~  r   rv  r=   ru  r=   r*  r  r.   r/   r   r   r   r  r   r  r  r   r   r  r   rR  r&   r'   r(   r}  r}    s          
 
 
 
L L L L    X 
[   [       X  ) ) ) X) ( ( ( X(      3 3 3 3
/ / / /
; ; ; ;C C C C, , , ,A A A A A Ar'   r}  c                      e Zd Zd+dZd,d
Zd-dZed.d            Zej        d/d            Zed0d            Z	ed1d            Z
ed2d            Zd0dZd3dZd4dZd4dZd4dZd5d Zd0d!Zd6d)Zd*S )7ASTDeclaratorPareninnerr  r*  r.   r/   c                2    |sJ |sJ || _         || _        d S r?   )r  r*  )r9   r  r*  s      r(   r:   zASTDeclaratorParen.__init__f  s&    
			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r*  rA   s     r(   rB   zASTDeclaratorParen.__eq__m  s8    %!344 	"!!zU[(DTY%*-DDr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r*  rH   s    r(   rI   zASTDeclaratorParen.__hash__r  s    TZ+,,,r'   r   c                    | j         j        S r?   r  r,   rH   s    r(   r,   zASTDeclaratorParen.nameu  s    zr'   r,   c                    || j         _        d S r?   r  r8   s     r(   r,   zASTDeclaratorParen.namey  s    
r'   c                2    | j         j        p| j        j        S r?   )r  r  r*  rH   s    r(   r  zASTDeclaratorParen.isPack}  s    z 4DI$44r'   rt  c                    | j         j        S r?   )r  r  rH   s    r(   r  z"ASTDeclaratorParen.function_params  s    z))r'   r  c                    | j         j        S r?   )r  ry  rH   s    r(   ry  z!ASTDeclaratorParen.trailingReturn  s    z((r'   c                    dS r  r&   rH   s    r(   r  z0ASTDeclaratorParen.require_space_after_declSpecs  r  r'   rK   r   r-   c                    dg}|                      || j                  d || j                  f           d                    |          S rx  )r   r  r*  r   r   s      r(   rO   zASTDeclaratorParen._stringify  sW    e

Idj!!Idi  
 	 	 	
 wws||r'   rU   c                6    | j                             |          S r?   )r  r  r_   s     r(   r  z#ASTDeclaratorParen.get_modifiers_id  s    z**7333r'   c                6    | j                             |          S r?   )r  r  r_   s     r(   r  zASTDeclaratorParen.get_param_id  s    z&&w///r'   c                    |dk    rt           | j                            |          }| j                            |          }||z   S r  )r   r*  r  r  )r9   rU   ptr_suffix_id_nextptr_suffix_id_inners       r(   r  z$ASTDeclaratorParen.get_ptr_suffix_id  sK    a<< #j::7CC!Y88AA"%777r'   r  c                    |dk    sJ | j                             ||          }| j                            ||          S )Nr   rJ  )r*  r  r  )r9   rU   r  next_ids       r(   r  zASTDeclaratorParen.get_type_id  sA    !||||)''>>z%%gG%DDDr'   c                4    | j                                         S r?   )r  r  rH   s    r(   r  z#ASTDeclaratorParen.is_function_type  s    z**,,,r'   rg   r   rh   ri   r   rl   r   c                    t          |           |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            |d||           d S )Nrf  rh  r{   )r   r   r   r  r   r*  r   s        r(   r   z%ASTDeclaratorParen.describe_signature  s~     	 %%%80c:::
%%gtS&AAA80c:::	$$WlCHHHHHr'   N)r  r  r*  r  r.   r/   r   r   r   r  r   r  r  r   r   r  r   rR  r&   r'   r(   r  r  e  s          E E E E
- - - -    X 
[   [ 5 5 5 X5 * * * X* ) ) ) X)      4 4 4 40 0 0 08 8 8 8E E E E- - - -I I I I I Ir'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTPackExpansionExprrq  r  r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTPackExpansionExpr.__init__  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rq  rA   s     r(   rB   zASTPackExpansionExpr.__eq__  *    %!566 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTPackExpansionExpr.__hash__  rJ   r'   rK   r   r-   c                (     || j                   dz   S rc  rs  rN   s     r(   rO   zASTPackExpansionExpr._stringify  s    y##e++r'   rU   c                @    | j                             |          }d|z   S )Nspr|  rn  s      r(   r`   zASTPackExpansionExpr.get_id  s!    Yg&&byr'   rg   r   rh   ri   r   rl   r   c                p    | j                             ||||           |t          j        dd          z  }d S rc  )rq  r   r   r   r   s        r(   r   z'ASTPackExpansionExpr.describe_signature  s;     		$$WdC@@@80>>>r'   N)rq  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ' ' ' '
   , , , ,   ? ? ? ? ? ?r'   r  c                  >    e Zd ZddZdd	ZddZddZddZd dZdS )!ASTParenExprListr  r  r.   r/   c                    || _         d S r?   )r  r  s     r(   r:   zASTParenExprList.__init__  r	  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r  rA   s     r(   rB   zASTParenExprList.__eq__  s*    %!122 	"!!zU[((r'   rD   c                *    t          | j                  S r?   r  rH   s    r(   rI   zASTParenExprList.__hash__  r  r'   rU   r-   c                V    dd                     fd| j        D                       z  S )Nzpi%sErp   c              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z*ASTParenExprList.get_id.<locals>.<genexpr>  r   r'   r  r_   s    `r(   r`   zASTParenExprList.get_id  r  r'   rK   r   c                Z    fd| j         D             }dd                    |          z  S )Nc                &    g | ]} |          S r&   r&   r  s     r(   
<listcomp>z/ASTParenExprList._stringify.<locals>.<listcomp>  s!    222!1222r'   z(%s)r  )r  r   )r9   rK   r  s    ` r(   rO   zASTParenExprList._stringify  s5    2222tz222		%((((r'   rg   r   rh   ri   r   rl   r   c                2   t          |           |t          j        dd          z  }d}| j        D ]M}|s/|t          j        dd          z  }|t          j                    z  }nd}|                    ||||           N|t          j        dd          z  }d S )Nrf  Tr  Frh  )r   r   r   r  r   r   r  s          r(   r   z#ASTParenExprList.describe_signature  s     	 %%%80c::: 	= 	=A 88cBBB82444  $V<<<<80c:::r'   N)r  r  r.   r/   r   r   r   r   r   r  r&   r'   r(   r  r    s           ) ) ) )
       H H H H) ) ) ); ; ; ; ; ;r'   r  c                  :    e Zd Z	 dddZddZddZddZd dZdS )!ASTInitializerTr  r  	hasAssignr=   r.   r/   c                "    || _         || _        d S r?   r  r  )r9   r  r  s      r(   r:   zASTInitializer.__init__  s     
"r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTInitializer.__eq__   s7    %00 	"!!zU[(NT^u-NNr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTInitializer.__hash__  s    TZ0111r'   rK   r   r-   c                >     || j                   }| j        rd|z   S |S Nr  r  )r9   rK   vals      r(   rO   zASTInitializer._stringify  s,    i
##> 	3;Jr'   rg   r   rh   ri   r   rl   r   c                    t          |           | j        rD|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            |d||           d S )Nr  ro   )r   r  r   r   r   r  r   r   s        r(   r   z!ASTInitializer.describe_signature  s{     	 %%%> 	1x.000Gx4S#>>>Gx.000G
%%gz3GGGGGr'   NT)r  r  r  r=   r.   r/   r   r   r   r   rq  r&   r'   r(   r  r    s        JN# # # # #O O O O
2 2 2 2   H H H H H Hr'   r  c                      e Zd Zd)dZd*dZd+dZed,d            Zej        d-d            Zed.d            Z	ed/d            Z
ed0d            Z	 d1d2dZd3d Zd4d!Zd5d(ZdS )6r  	declSpecsr  declr  r.   r/   c                2    |sJ |sJ || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   zASTType.__init__  s)    "			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTType.__eq__!  s7    %)) 	"!!~0LTY%*5LLr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTType.__hash__&  s    T^TY/000r'   r   c                    | j         j        S r?   r  r,   rH   s    r(   r,   zASTType.name)  r0  r'   r,   c                    || j         _        d S r?   r  r8   s     r(   r,   zASTType.name-  r2  r'   c                    | j         j        S r?   )r  r  rH   s    r(   r  zASTType.isPack1  r5  r'   rt  c                    | j         j        S r?   )r  r  rH   s    r(   r  zASTType.function_params5  r8  r'   c                    | j         j        S r?   )r  ry  rH   s    r(   ry  zASTType.trailingReturn9  r;  r'   NrU   r[  rH  rl   r\  r-   c                   |dk    rg }|r|dk    r|                     |                                                    |          | j                            |          | j                            |          f           | j        j        j        s| j        j	        r&| j        j	        j        r|
                    d           n|dk    r;|
                    |                                                    |                     nt          |          | j                                        rt          |                     | j                            |          | j                            |          | j                            |          f           d                    |          S g }|rn|dk    r| j                            |          }|
                    |                                                    ||                     |dk    r|j        j        }|| j                            |          }| j        r| j                            |          }n| j                            |          }|
                    |           |
                    |           |
                    | j                            |                     n|dk    r;|
                    |                                                    |                     nYt          |          | j                            |          }| j                            ||          }|
                    |           d                    |          S )NrX   functionCEr5  rp      )r   get_full_nested_namer`   r  r  r  r  r  r  r  r   r4   r  r   r  r   r   r   ry  r  )	r9   rU   r[  rl   r   r   templtype_idreturn_type_ids	            r(   r`   zASTType.get_id=  s5    a<<C ++JJ3355<<WEE	..w77	227;;    
 ~/9 )1) N5?) 

4(((6))JJv::<<CCGLLMMMM(4449--// '&&

N))'22I//88I**733   
 773<< 	 Z'' I66w??	

66688??SSTTTa<<".=E("&)"="=g"F"F. L-1-@-G-G-P-PNN-1^-B-B7-K-KN

7+++

>222

4911'::;;;;v%%

66688??HHIIII$Z000 "^227;;Ni++G^DDGJJwwws||r'   rK   r   c                B   g } || j                   }|                    |           | j                                        r(t	          |          dk    r|                    d           |                     || j                             d                    |          S r  )r  r   r  r  r3   r   )r9   rK   r   
decl_specss       r(   rO   zASTType._stringifyy  s    Yt~..


:92244 	Z19L9LJJsOOO

99TY''(((wws||r'   c                "    | j         j        rdS dS )Ntypedefr5  )r  r  rH   s    r(   get_type_declaration_prefixz#ASTType.get_type_declaration_prefix  s    >* 	96r'   rg   r   rh   ri   r   r   c                P   t          |           | j                            |d||           | j                                        r;t          t          | j                            dk    r|t          j                    z  }|dk    rd}| j                            ||||           d S )Nro   r   r{   )	r   r  r   r  r  r3   r-   r   r   r   s        r(   r   zASTType.describe_signature  s     	 %%%))':sFKKK92244 	1S=P=P9Q9QTU9U9Ux.000G :D	$$WdC@@@@@r'   )r  r  r  r  r.   r/   r   r   r   r  r   r  r  rf  rg  r   r   r   )r#   r$   r%   r:   rB   rI   r   r,   r  r  r  ry  r`   rO   r  r   r&   r'   r(   r  r    sY          M M M M
1 1 1 1    X 
[   [       X  ) ) ) X) ( ( ( X( TX: : : : :x      A A A A A Ar'   r  c                  r    e Zd Zd"dZd#d
Zd$dZed%d            Zed&d            Z	 d'd(dZ	d)dZ
d*d!ZdS )+'ASTTemplateParamConstrainedTypeWithInitr5  r  initr.   r/   c                *    |sJ || _         || _        d S r?   r5  r  r9   r5  r  s      r(   r:   z0ASTTemplateParamConstrainedTypeWithInit.__init__  s    				r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r5  r  rA   s     r(   rB   z.ASTTemplateParamConstrainedTypeWithInit.__eq__  s8    %!HII 	"!!yEJ&B49
+BBr'   rD   c                8    t          | j        | j        f          S r?   rG   r5  r  rH   s    r(   rI   z0ASTTemplateParamConstrainedTypeWithInit.__hash__      TY	*+++r'   r   c                    | j         j        S r?   r5  r,   rH   s    r(   r,   z,ASTTemplateParamConstrainedTypeWithInit.name  r0  r'   c                    | j         j        S r?   r5  r  rH   s    r(   r  z.ASTTemplateParamConstrainedTypeWithInit.isPack  r5  r'   NrU   r[  rH  rl   r\  r-   c                    |dk    sJ |r!|j         j                            |d          S | j                            |          S Nr   Fr^  )r`  r   r`   r5  ra  s       r(   r`   z.ASTTemplateParamConstrainedTypeWithInit.get_id  M     !|||| 	-=,33Ge3LLL9##G,,,r'   rK   r   c                d     || j                   }| j        r|dz  }| || j                  z  }|S r  r  r   s      r(   rO   z2ASTTemplateParamConstrainedTypeWithInit._stringify  sA    i	""9 	(5LC99TY'''C
r'   rg   r   rh   ri   r   r   c                   | j                             ||||           | j        rc|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S d S )Nr  )r5  r   r  r   r   r   r   s        r(   r   z:ASTTemplateParamConstrainedTypeWithInit.describe_signature  s     		$$WdC@@@9 	Ex.000Gx4S#>>>Gx.000GI(($VDDDDD		E 	Er'   )r5  r  r  r  r.   r/   r   r   r   r   rf  rg  r   r   r#   r$   r%   r:   rB   rI   r   r,   r  r`   rO   r   r&   r'   r(   r  r    s           
C C C C
, , , ,    X       X  TX	- 	- 	- 	- 	-   E E E E E Er'   r  c                  r    e Zd Zd#dZd$dZd%dZed&d            Zed'd            Z	 d(d)dZ	d*dZ
d+d"ZdS ),ASTTypeWithInitr5  r  r  r  r.   r/   c                "    || _         || _        d S r?   r  r  s      r(   r:   zASTTypeWithInit.__init__      				r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r5  r  rA   s     r(   rB   zASTTypeWithInit.__eq__  s7    %11 	"!!yEJ&B49
+BBr'   rD   c                8    t          | j        | j        f          S r?   r  rH   s    r(   rI   zASTTypeWithInit.__hash__  r  r'   r   c                    | j         j        S r?   r  rH   s    r(   r,   zASTTypeWithInit.name  r0  r'   c                    | j         j        S r?   r  rH   s    r(   r  zASTTypeWithInit.isPack  r5  r'   NrU   r[  rH  rl   r\  r-   c                (   |dk    r| j                             ||          S |dk    rE|                                                    |          dz   | j                             |          z   S |                                                    |          S )NmemberrX   r  )r5  r`   r  ra  s       r(   r`   zASTTypeWithInit.get_id  s     !!9##GZ888a<<++--44W==)""7++,
 **,,33G<<<r'   rK   r   c                     || j                   g}| j        r#|                     || j                             d                    |          S r  )r5  r  r   r   r   s      r(   rO   zASTTypeWithInit._stringify  sN    y##$9 	-JJyy++,,,wws||r'   rg   r   rh   ri   r   r   c                    t          |           | j                            ||||           | j        r| j                            ||||           d S d S r?   )r   r5  r   r  r   s        r(   r   z"ASTTypeWithInit.describe_signature  sg     	 %%%	$$WdC@@@9 	EI(($VDDDDD	E 	Er'   )r5  r  r  r  r.   r/   r   r   r   r   rf  rg  r   r   r  r&   r'   r(   r  r    s           C C C C
, , , ,    X       X  TX= = = = =   E E E E E Er'   r  c                  J    e Zd Zd!dZd"dZd#dZ	 d$d%dZd&dZd'dZd(d Z	dS ))ASTTypeUsingr,   r   r5  ASTType | Noner.   r/   c                "    || _         || _        d S r?   )r,   r5  )r9   r,   r5  s      r(   r:   zASTTypeUsing.__init__  r  r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r,   r5  rA   s     r(   rB   zASTTypeUsing.__eq__  s7    %.. 	"!!yEJ&B49
+BBr'   rD   c                8    t          | j        | j        f          S r?   )rG   r,   r5  rH   s    r(   rI   zASTTypeUsing.__hash__  r  r'   NrU   r[  rH  rl   r\  r-   c                j    |dk    rt           |                                                    |          S r  r   r  r`   ra  s       r(   r`   zASTTypeUsing.get_id  3     a<<**,,33G<<<r'   rK   r   c                     || j                   g}| j        r%|                    d || j                  f           d                    |          S )Nr  rp   )r,   r5  r   r   r   s      r(   rO   zASTTypeUsing._stringify  sS    y##$9 	6JJyy334555wws||r'   c                    dS )Nusingr&   rH   s    r(   r  z(ASTTypeUsing.get_type_declaration_prefix  s    wr'   rg   r   rh   ri   r   r   c                6   t          |           | j                            ||||           | j        rd|t	          j                    z  }|t	          j        dd          z  }|t	          j                    z  }| j                            |d||           d S d S )Nr   r  ro   )r   r,   r   r5  r   r   r   r   s        r(   r   zASTTypeUsing.describe_signature  s     	 %%%	$$WdC$GGG9 	Rx.000Gx4S#>>>Gx.000GI((*c&(QQQQQ		R 	Rr'   )r,   r   r5  r  r.   r/   r   r   rf  rg  r   r   r   )
r#   r$   r%   r:   rB   rI   r`   rO   r  r   r&   r'   r(   r  r    s           C C C C
, , , , TX= = = = =      	R 	R 	R 	R 	R 	Rr'   r  c                  Z    e Zd Zd!dZd"dZd#dZed$d            Z	 d%d&dZd'dZ	d(d Z
dS ))
ASTConceptrF  r   r}  r  r.   r/   c                "    || _         || _        d S r?   rF  r}  )r9   rF  r}  s      r(   r:   zASTConcept.__init__(  s    $&r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   rF  r}  rA   s     r(   rB   zASTConcept.__eq__,  s?    %,, 	"!!Ou// 6 E$55	
r'   rD   c                8    t          | j        | j        f          S r?   )rG   rF  r}  rH   s    r(   rI   zASTConcept.__hash__4  s    T_d&67888r'   c                    | j         S r?   rM  rH   s    r(   r,   zASTConcept.name7  rN  r'   NrU   r[  rH  rl   r\  r-   c                j    |dk    rt           |                                                    |          S r  r  ra  s       r(   r`   zASTConcept.get_id;  r  r'   rK   r   c                Z     || j                   }| j        r| || j                  z  }|S r?   r  r   s      r(   rO   zASTConcept._stringifyB  s:    i(( 	/99T-...C
r'   rg   r   rh   ri   r   r   c                    | j                             ||||           | j        r| j                            ||||           d S d S r?   )rF  r   r}  r   s        r(   r   zASTConcept.describe_signatureH  s[     	**7D#vFFF 	L//sFKKKKK	L 	Lr'   )rF  r   r}  r  r.   r/   r   r   r   rf  rg  r   r   rR  r&   r'   r(   r  r  '  s        ' ' ' '
 
 
 
9 9 9 9    X TX= = = = =   L L L L L Lr'   r  c                  6    e Zd Zdd
ZddZddZddZd dZdS )!ASTBaseClassr,   r   
visibilityr-   r  r=   packr.   r/   c                >    || _         || _        || _        || _        d S r?   )r,   r  r  r  )r9   r,   r  r  r  s        r(   r:   zASTBaseClass.__init__Q  s$     	$			r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r,   r  r  r  rA   s     r(   rB   zASTBaseClass.__eq__Y  sa    %.. 	"!!I# (5#33(-( 	UZ'		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r,   r  r  r  rH   s    r(   rI   zASTBaseClass.__hash__c  s!    TYtyIJJJr'   rK   r   c                ,   g }| j         |                    | j         df           | j        r|                    d           |                     || j                             | j        r|                    d           d                    |          S )Nr   zvirtual rg  rp   )r  r   r  r   r,   r  r   r   s      r(   rO   zASTBaseClass._stringifyf  s    ?&JJ-...< 	#JJz"""

99TY''(((9 	JJuwws||r'   rg   r   rh   ri   r   rl   r   c                   t          |           | j        8|t          j        | j        | j                  z  }|t          j                    z  }| j        r.|t          j        dd          z  }|t          j                    z  }| j                            |d||           | j        r|t          j	        dd          z  }d S d S )Nr  ro   r   rg  )
r   r  r   r   r   r  r,   r   r  r   r   s        r(   r   zASTBaseClass.describe_signatureq  s     	 %%%?&x0$/RRRGx.000G< 	1x0IFFFGx.000G	$$Wj#f$MMM9 	Cx4UEBBBGGG	C 	Cr'   N)
r,   r   r  r-   r  r=   r  r=   r.   r/   r   r   r   r   rq  r&   r'   r(   r  r  P  s           
 
 
 
K K K K	 	 	 	C C C C C Cr'   r  c                  >    e Zd Zd!dZd"dZd#dZd$dZd%dZd&dZd S )'ASTClassr,   r   r{  r=   baseslist[ASTBaseClass]r|  r   r.   r/   c                >    || _         || _        || _        || _        d S r?   )r,   r{  r'  r|  )r9   r,   r{  r'  r|  s        r(   r:   zASTClass.__init__  s$     	




r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r&  r@   r,   r{  r'  r|  rA   s     r(   rB   zASTClass.__eq__  s`    %** 	"!!I# *
ek)*
ek)* 
ek)		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r,   r{  r'  r|  rH   s    r(   rI   zASTClass.__hash__  s!    TY
DJ
CDDDr'   rU   r[  r-   rl   r   c                P    |                                                     |          S r?   )r  r`   ra  s       r(   r`   zASTClass.get_id  s"    **,,33G<<<r'   rK   r   c                    || j                   g}t          | j                   dk    r|                    d           |                     || j                             | j        r|                    d           t          | j                  dk    rX|                    d           d}| j        D ]9}|s|                    d           d}|                     ||                     :d                    |          S )	Nr   r   r  r  Tr  Frp   )r|  r3   r   r,   r{  r'  r   )r9   rK   r   r   bs        r(   rO   zASTClass._stringify  s    y$$%tz??aJJsOOO

99TY''(((: 	!JJx   tz??QJJuEZ ) ) %JJt$$$

99Q<<((((wws||r'   rg   r   rh   ri   r   c                   t          |           | j                            |           t          | j                  dk    r|t	          j                    z  }| j                            ||||           | j        r.|t	          j                    z  }|t	          j        dd          z  }t          | j	                  dk    r|t	          j                    z  }|t	          j
        dd          z  }|t	          j                    z  }| j	        D ]I}|                    ||||           |t	          j
        dd          z  }|t	          j                    z  }J|                                 |                                 d S d S )Nr   r   r{  r  r  )r   r|  r   r3   r   r   r,   r{  r   r'  r   pop)r9   rg   rh   ri   rl   r.  s         r(   r   zASTClass.describe_signature  sr    	 %%%
%%g...tz??ax.000G	$$WdC$GGG: 	Cx.000Gx0'BBBGtz??Qx.000Gx4S#>>>Gx.000GZ 5 5$$WdC$GGG88cBBB82444KKMMMKKMMMMM r'   N)
r,   r   r{  r=   r'  r(  r|  r   r.   r/   r   r   rU   rD   r[  r-   rl   r   r.   r-   r   r   r  r&   r'   r(   r&  r&    s        
 
 
 

 
 
 
E E E E= = = =   "     r'   r&  c                  >    e Zd ZddZddZd dZd!dZd"dZd#dZdS )$ASTUnionr,   r   r|  r   r.   r/   c                "    || _         || _        d S r?   )r,   r|  )r9   r,   r|  s      r(   r:   zASTUnion.__init__  s    	


r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r3  r@   r,   r|  rA   s     r(   rB   zASTUnion.__eq__  s7    %** 	"!!yEJ&D4:+DDr'   rD   c                8    t          | j        | j        f          S r?   )rG   r,   r|  rH   s    r(   rI   zASTUnion.__hash__  rX  r'   rU   r[  r-   rl   r   c                j    |dk    rt           |                                                    |          S r  r  ra  s       r(   r`   zASTUnion.get_id  1    a<<**,,33G<<<r'   rK   r   c                     || j                   g}t          | j                   dk    r|                    d           |                     || j                             d                    |          S r  )r|  r3   r   r,   r   r   s      r(   rO   zASTUnion._stringify  sf    y$$%tz??aJJsOOO

99TY''(((wws||r'   rg   r   rh   ri   r   c                    t          |           | j                            |           t          | j                  dk    r|t	          j                    z  }| j                            ||||           d S )Nr   r   )r   r|  r   r3   r   r   r,   r   s        r(   r   zASTUnion.describe_signature  ss     	 %%%
%%g...tz??ax.000G	$$WdC$GGGGGr'   N)r,   r   r|  r   r.   r/   r   r   r1  r   r   r  r&   r'   r(   r3  r3    s           E E E E
- - - -= = = =
   H H H H H Hr'   r3  c                  >    e Zd Zd!dZd"dZd#dZd$dZd%dZd&dZd S )'ASTEnumr,   r   scopedr-   underlyingTyper  r|  r   r.   r/   c                >    || _         || _        || _        || _        d S r?   )r,   r=  r>  r|  )r9   r,   r=  r>  r|  s        r(   r:   zASTEnum.__init__  s%     	,


r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   r<  r@   r,   r=  r>  r|  rA   s     r(   rB   zASTEnum.__eq__  sb    %)) 	"!!I# *u|+*#u';;* 
ek)		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   r,   r=  r>  r|  rH   s    r(   rI   zASTEnum.__hash__  s"    TYT-@$*MNNNr'   rU   r[  rl   r   c                j    |dk    rt           |                                                    |          S r  r  ra  s       r(   r`   zASTEnum.get_id  r8  r'   rK   r   c                   g }| j         r|                    | j         df           |                     || j                             t	          | j                  dk    r|                    d           |                     || j                             | j        r%|                    d || j                  f           d                    |          S )Nr   r   r  rp   )r=  r   r   r|  r3   r,   r>  r   r   s      r(   rO   zASTEnum._stringify  s    ; 	+JJS)***

99TZ(()))tz??aJJsOOO

99TY''((( 	@JJyy)<==>???wws||r'   rg   r   rh   ri   r   c                   t          |           | j                            |           t          | j                  dk    r|t	          j                    z  }| j                            ||||           | j        rd|t	          j                    z  }|t	          j        dd          z  }|t	          j                    z  }| j                            |d||           d S d S )Nr   r   r  r{   )	r   r|  r   r3   r   r   r,   r>  r   r   s        r(   r   zASTEnum.describe_signature  s     	 %%%
%%g...tz??ax.000G	$$WdC$GGG 	x.000Gx4S#>>>Gx.000G22s6 3     		 	r'   N)
r,   r   r=  r-   r>  r  r|  r   r.   r/   r   r   r1  r   r   r  r&   r'   r(   r<  r<    s        
 
 
 

 
 
 
O O O O= = = =

 
 
 
     r'   r<  c                  >    e Zd Zd d	Zd!dZd"dZd#dZd$dZd%dZdS )&ASTEnumeratorr,   r   r  ASTInitializer | Noner|  r   r.   r/   c                0    || _         || _        || _        d S r?   )r,   r  r|  )r9   r,   r  r|  s       r(   r:   zASTEnumerator.__init__&  s     		


r'   r;   r<   r=   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rF  r@   r,   r  r|  rA   s     r(   rB   zASTEnumerator.__eq__-  sM    %// 	"!!I# *	UZ'*
ek)	
r'   rD   c                D    t          | j        | j        | j        f          S r?   )rG   r,   r  r|  rH   s    r(   rI   zASTEnumerator.__hash__6  s    TY	4:6777r'   rU   r[  r-   rl   r   c                j    |dk    rt           |                                                    |          S r  r  ra  s       r(   r`   zASTEnumerator.get_id9  r8  r'   rK   r   c                    || j                   g}t          | j                  dk    r%|                    d || j                  f           | j        r#|                     || j                             d                    |          S r  )r,   r3   r|  r   r  r   r   r   s      r(   rO   zASTEnumerator._stringify>  s    y##$tz??aJJYYtz2234449 	-JJyy++,,,wws||r'   rg   r   rh   ri   r   c                :   t          |           | j                            ||||           t          | j                  dk    r0|t          j                    z  }| j                            |           | j        r| j                            |d||           d S d S )Nr   ro   )r   r,   r   r3   r|  r   r   r  r   s        r(   r   z ASTEnumerator.describe_signatureF  s     	 %%%	$$WdC@@@tz??ax.000GJ))'2229 	KI((*c6JJJJJ	K 	Kr'   N)r,   r   r  rG  r|  r   r.   r/   r   r   r1  r   r   r  r&   r'   r(   rF  rF  %  s           
 
 
 
8 8 8 8= = = =
   	K 	K 	K 	K 	K 	Kr'   rF  c                  V    e Zd ZddZddZddZedd            Zedd            ZdS )ASTTemplateParamr.   r+   c                :    t          t          |                     r?   r   rH   s    r(   get_identifierzASTTemplateParam.get_identifier[  r   r'   rU   rD   r-   c                :    t          t          |                     r?   r   r_   s     r(   r`   zASTTemplateParam.get_id^  r   r'   
parentNoder   rh   ri   r   rl   r   r/   c                :    t          t          |                     r?   r   )r9   rS  rh   ri   rl   s        r(   r   z#ASTTemplateParam.describe_signaturea  r   r'   r=   c                :    t          t          |                     r?   r   rH   s    r(   r  zASTTemplateParam.isPackf  r  r'   r   c                :    t          t          |                     r?   r   rH   s    r(   r,   zASTTemplateParam.namej  r  r'   Nr.   r+   r   )
rS  r   rh   r-   ri   r   rl   r   r.   r/   r   r   )	r#   r$   r%   rQ  r`   r   r   r  r,   r&   r'   r(   rO  rO  Z  s        . . . .. . . .. . . .
 . . . X. . . . X. . .r'   rO  c                  F    e Zd Zd dZd!dZd"dZd#dZd$dZd%dZd&dZ	dS )' ASTTemplateKeyParamPackIdDefaultkeyr-   rr   r+   parameterPackr=   r  r  r.   r/   c                R    |sJ |r|J || _         || _        || _        || _        d S r?   )rZ  rr   r[  r  )r9   rZ  rr   r[  r  s        r(   r:   z)ASTTemplateKeyParamPackIdDefault.__init__p  s?     


 	#???$*r'   r;   r<   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r?   )r2   rY  r@   rZ  rr   r[  r  rA   s     r(   rB   z'ASTTemplateKeyParamPackIdDefault.__eq__{  sd    %!ABB 	"!!H	! .5#33."e&99. -		
r'   rD   c                P    t          | j        | j        | j        | j        f          S r?   )rG   rZ  rr   r[  r  rH   s    r(   rI   z)ASTTemplateKeyParamPackIdDefault.__hash__  s"    TXt0BDLQRRRr'   c                    | j         S r?   r  rH   s    r(   rQ  z/ASTTemplateKeyParamPackIdDefault.get_identifier  
    r'   rU   c                    |dk    sJ g }| j         r|                    d           n|                    d           d                    |          S )Nr   rx  r  rp   )r[  r   r   r   s      r(   r`   z'ASTTemplateKeyParamPackIdDefault.get_id  sS    !|||| 	JJtJJsOOOwws||r'   rK   r   c                   | j         g}| j        r1| j        r|                    d           |                    d           | j        r?| j        s|                    d           |                     || j                             | j        r%|                    d || j                  f           d                    |          S )Nr   rg  r  rp   )rZ  r[  rr   r   r  r   r   r   s      r(   rO   z+ASTTemplateKeyParamPackIdDefault._stringify  s    xj 	  

3JJu? 	3%  

3JJyy11222< 	9JJyy667888wws||r'   rg   r   rh   ri   r   rl   r   c                   |t          j        | j        | j                  z  }| j        r5| j        r|t          j                    z  }|t          j        dd          z  }| j        r<| j        s|t          j                    z  }| j                            |||dd|           | j        rc|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            |d||           d S d S )Nrg  rp   r  ro   )	r   r   rZ  r[  rr   r   r   r   r  r   s        r(   r   z3ASTTemplateKeyParamPackIdDefault.describe_signature  s    	8,TXtx@@@ 	C 582444x4UEBBBG? 	S% 582444O..wc2r6RRR< 	Nx.000Gx4S#>>>Gx.000GL++GZfMMMMM		N 	Nr'   N)
rZ  r-   rr   r+   r[  r=   r  r  r.   r/   r   r   rW  r   r   r   )
r#   r$   r%   r:   rB   rI   rQ  r`   rO   r   r&   r'   r(   rY  rY  o  s        	 	 	 	
 
 
 
S S S S         N N N N N Nr'   rY  c                  z    e Zd Zd#dZd$d	Zd%dZed&d            Zed'd            Zd(dZ		 d)d*dZ
d+dZd,d"ZdS )-ASTTemplateParamTyper  rY  r.   r/   c                    |sJ || _         d S r?   r  r  s     r(   r:   zASTTemplateParamType.__init__  rk  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   re  r@   r  rA   s     r(   rB   zASTTemplateParamType.__eq__  r  r'   rD   c                *    t          | j                  S r?   r   rH   s    r(   rI   zASTTemplateParamType.__hash__  rJ   r'   r   c                n    |                                  }t          t          |d           gdgd          S NF)r   rQ  r   r   r9   r  s     r(   r,   zASTTemplateParamType.name  8      ""22t<<=wuUUUUr'   c                    | j         j        S r?   r  r[  rH   s    r(   r  zASTTemplateParamType.isPack      y&&r'   r+   c                4    | j                                         S r?   r  rQ  rH   s    r(   rQ  z#ASTTemplateParamType.get_identifier      y'')))r'   NrU   r[  rH  rl   r\  r-   c                    |dk    sJ |r!|j         j                            |d          S | j                            |          S r  )r`  r   r`   r  ra  s       r(   r`   zASTTemplateParamType.get_id  r  r'   rK   r   c                "     || j                   S r?   r  rN   s     r(   rO   zASTTemplateParamType._stringify  rP   r'   rg   r   rh   ri   r   r   c                @    | j                             ||||           d S r?   )r  r   r   s        r(   r   z'ASTTemplateParamType.describe_signature  r  r'   )r  rY  r.   r/   r   r   r   r   rW  rf  rg  r   r   r#   r$   r%   r:   rB   rI   r   r,   r  rQ  r`   rO   r   r&   r'   r(   re  re    s           ' ' ' '
    V V V XV ' ' ' X'* * * * TX	- 	- 	- 	- 	-$ $ $ $A A A A A Ar'   re  c                  z    e Zd Zd%dZd&dZd'dZed(d            Zed)d            Zd*dZ		 d+d,dZ
d-dZd.d$ZdS )/ASTTemplateParamTemplateTypenestedParamsASTTemplateParamsr  rY  r.   r/   c                2    |sJ |sJ || _         || _        d S r?   rz  r  )r9   rz  r  s      r(   r:   z%ASTTemplateParamTemplateType.__init__  s,     (			r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   ry  r@   rz  r  rA   s     r(   rB   z#ASTTemplateParamTemplateType.__eq__  s:    %!=>> 	"!! E$66R49
;RRr'   rD   c                8    t          | j        | j        f          S r?   )rG   rz  r  rH   s    r(   rI   z%ASTTemplateParamTemplateType.__hash__  s    T&	2333r'   r   c                n    |                                  }t          t          |d           gdgd          S rj  rk  rl  s     r(   r,   z!ASTTemplateParamTemplateType.name  rm  r'   c                    | j         j        S r?   ro  rH   s    r(   r  z#ASTTemplateParamTemplateType.isPack  rp  r'   r+   c                4    | j                                         S r?   rr  rH   s    r(   rQ  z+ASTTemplateParamTemplateType.get_identifier  rs  r'   NrU   r[  rH  rl   r\  r-   c                    |dk    sJ |r!|j         j                            |d           S | j                            |          | j                            |          z   S )Nr   r^  )r`  r   r`   rz  r  ra  s       r(   r`   z#ASTTemplateParamTemplateType.get_id   sd     !|||| 	Q=,33Gd3KKK$++G44ty7G7G7P7PPPr'   rK   r   c                D     || j                    || j                  z   S r?   r}  rN   s     r(   rO   z'ASTTemplateParamTemplateType._stringify  s&    y*++ii	.B.BBBr'   rg   r   rh   ri   r   r   c                    | j                             |d||           |t          j                    z  }| j                            ||||           d S )Nr{   )rz  r   r   r   r  r   s        r(   r   z/ASTTemplateParamTemplateType.describe_signature  sV     	,,WlCPPP8*,,,	$$WdC@@@@@r'   )rz  r{  r  rY  r.   r/   r   r   r   r   rW  rf  rg  r   r   rw  r&   r'   r(   ry  ry    s          S S S S
4 4 4 4 V V V XV ' ' ' X'* * * * TX	Q 	Q 	Q 	Q 	QC C C CA A A A A Ar'   ry  c                  ~    e Zd Z	 d%d&dZd'dZd(dZed)d            Zed*d            Zd+dZ		 d,d-dZ
d.dZd/d$ZdS )0ASTTemplateParamNonTypeFr|   rV  r[  r=   r.   r/   c                *    |sJ || _         || _        d S r?   r|   r[  )r9   r|   r[  s      r(   r:   z ASTTemplateParamNonType.__init__  s"    
 
*r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r|   r[  rA   s     r(   rB   zASTTemplateParamNonType.__eq__   s:    %!899 	"!!zU[(VT-?5CV-VVr'   rD   c                8    t          | j        | j        f          S r?   )rG   r|   r[  rH   s    r(   rI   z ASTTemplateParamNonType.__hash__%  r  r'   r   c                n    |                                  }t          t          |d           gdgd          S rj  rk  rl  s     r(   r,   zASTTemplateParamNonType.name(  rm  r'   c                (    | j         j        p| j        S r?   )r|   r  r[  rH   s    r(   r  zASTTemplateParamNonType.isPack-  s    z 6D$66r'   r+   c                    | j         j        }|rmt          |j                  dk    sJ |j        d         j        sJ |j        d         j        rJ |j        d         j        }t          |t                    sJ |S d S )NrX   r   )r|   r,   r3   r   r   rk   r2   r+   )r9   r,   r   s      r(   rQ  z&ASTTemplateParamNonType.get_identifier1  s    z 	tz??a'''':a=****z!}1111*Q-)Cc=11111J4r'   NrU   r[  rH  rl   r\  r-   c                    |dk    sJ |r!|j         j                            |d           S d}| j        r|dz  }|| j                            |          z   S )Nr   r^  ra  rx  )r`  r   r`   r[  r|   )r9   rU   r[  rl   r   s        r(   r`   zASTTemplateParamNonType.get_id=  sk     !|||| 	4=,33Gd3KKKC! t**73333r'   rK   r   c                >     || j                   }| j        r|dz  }|S rc  r  r   s      r(   rO   z"ASTTemplateParamNonType._stringifyK  s,    i
## 	5LC
r'   rg   r   rh   ri   r   r   c                    | j                             ||||           | j        r|t          j        dd          z  }d S d S rc  )r|   r   r[  r   r   r   s        r(   r   z*ASTTemplateParamNonType.describe_signatureQ  sS     	
%%gtS&AAA 	Cx4UEBBBGGG	C 	Cr'   re  )r|   rV  r[  r=   r.   r/   r   r   r   r   rW  rf  rg  r   r   rw  r&   r'   r(   r  r    s        $+ + + + +W W W W
6 6 6 6 V V V XV 7 7 7 X7
 
 
 
 TX4 4 4 4 4   C C C C C Cr'   r  c                  H    e Zd Zd#dZd$dZd%dZd&d'dZd(dZd)dZd*d!Z	d"S )+r{  paramslist[ASTTemplateParam]requiresClauseASTRequiresClause | Noner.   r/   c                *    |J || _         || _        d S r?   )r  r  )r9   r  r  s      r(   r:   zASTTemplateParams.__init__Z  s%     !!!,r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r{  r@   r  r  rA   s     r(   rB   zASTTemplateParams.__eq__a  s<    %!233 	"!!K5<'WD,?5CW,W	
r'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   zASTTemplateParams.__hash__h  s    T[$"56777r'   FrU   excludeRequiresr-   c                6   dk    sJ dg}|                     fd| j        D                        |                    d           |s<| j        r5|                     d| j        j                                      dg           d                    |          S )Nr   r  c              3  B   K   | ]}|                               V  d S r?   r   r   r|   rU   s     r(   r   z+ASTTemplateParams.get_id.<locals>.<genexpr>n  s/      BBU5<<((BBBBBBr'   r   IQrp   )r   r  r   r  rq  r`   r   )r9   rU   r  r   s    `  r(   r`   zASTTemplateParams.get_idk  s    !||||e

BBBBdkBBBBBB

3 	N4#6 	NJJd16==gFFLMMMwws||r'   rK   r   c                   g }|                     dd                    fd| j        D                       df           | j        %|                      | j                  df           d                    |          S )Nz	template<r  c              3  .   K   | ]} |          V  d S r?   r&   r  s     r(   r   z/ASTTemplateParams._stringify.<locals>.<genexpr>x  s+      88qiill888888r'   z> r   rp   )r   r   r  r  r   s    ` r(   rO   zASTTemplateParams._stringifyt  s    

II8888DK88888
 	 	 	
 *JJ		$"566<===wws||r'   rg   r   rh   ri   r   rl   r   c                   |t          j        dd          z  }|t          j        dd          z  }d}| j        D ]L}|s.|t          j        dd          z  }|t          j                    z  }d}|                    ||||           M|t          j        dd          z  }| j        5|t          j                    z  }| j                            ||||           d S d S )Nr   r  Tr  Fr  )r   r   r   r  r   r   r  )r9   rg   rh   ri   rl   r   r|   s          r(   r   z$ASTTemplateParams.describe_signature  s     	8,ZDDD80c:::[ 	A 	AE 588cBBB82444E$$WdC@@@@80c:::*x.000G227D#vNNNNN +*r'   rS  r   lineSpecc                "   dd} ||          }|t          j        dd          z  }|t          j        dd          z  }d}| j        D ]Y}	|s.|t          j        d	d	          z  }|t          j                    z  }d
}|r ||          }|	                    ||||           Z|r|s ||          }|t          j        dd          z  }| j        r>t          j                    }
d|
_        ||
z  }| j                            |
d||           d S d S )Nparent_noder   r.   addnodes.desc_signature_linec                D    t          j                    }| |z  } d|_        |S )NtemplateParams)r   desc_signature_linesphinx_line_type)r  rg   s     r(   	make_linezEASTTemplateParams.describe_signature_as_introducer.<locals>.make_line  s'    244G7"K'7G$Nr'   r   r  Tr  Fr  r  ro   )r  r   r.   r  )	r   r   r   r  r   r   r  r  r  )r9   rS  rh   ri   rl   r  r  	line_noder   r|   req_nodes              r(    describe_signature_as_introducerz2ASTTemplateParams.describe_signature_as_introducer  sh   	 	 	 	 Ij))	X.z:FFF	X23<<<	[ 	C 	CE 7X:3DDD	X4666	E 2%Ij11	$$Yc6BBBB 	.E 	.!	*--IX23<<<	 	V355H(8H%("J228ZfUUUUU		V 	Vr'   N)r  r  r  r  r.   r/   r   r   re  )rU   rD   r  r=   r.   r-   r   r   rS  r   rh   r-   ri   r   rl   r   r  r=   r.   r/   )
r#   r$   r%   r:   rB   rI   r`   rO   r   r  r&   r'   r(   r{  r{  Y  s        - - - -
 
 
 
8 8 8 8    	 	 	 	O O O O"!V !V !V !V !V !Vr'   r{  c                      e Zd Zd$dZd%d
Zd&dZed'd            Zed(d            Zd)dZ		 d*d+dZ
d,dZd-dZd.d#ZdS )/ ASTTemplateIntroductionParameterrr   r+   r[  r=   r.   r/   c                "    || _         || _        d S r?   )rr   r[  )r9   rr   r[  s      r(   r:   z)ASTTemplateIntroductionParameter.__init__  s    $*r'   r;   r<   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   rr   r[  rA   s     r(   rB   z'ASTTemplateIntroductionParameter.__eq__  s@    %!ABB 	"!!Ou// :"e&99	
r'   rD   c                8    t          | j        | j        f          S r?   )rG   rr   r[  rH   s    r(   rI   z)ASTTemplateIntroductionParameter.__hash__  s    T_d&89:::r'   r   c                n    |                                  }t          t          |d           gdgd          S rj  rk  rl  s     r(   r,   z%ASTTemplateIntroductionParameter.name  rm  r'   c                    | j         S r?   )r[  rH   s    r(   r  z'ASTTemplateIntroductionParameter.isPack  s    !!r'   c                    | j         S r?   r  rH   s    r(   rQ  z/ASTTemplateIntroductionParameter.get_identifier  r`  r'   NrU   r[  rH  rl   r\  r-   c                n    |dk    sJ |r!|j         j                            |d           S | j        rdS dS )Nr   r^  rx  r  )r`  r   r`   r[  ra  s       r(   r`   z'ASTTemplateIntroductionParameter.get_id  sL     !|||| 	=,33Gd3KKK! tsr'   c                b    |dk    sJ | j                             |          }| j        rd|z   S |S )Nr   r  )rr   r`   r[  r   s      r(   get_id_as_argz.ASTTemplateIntroductionParameter.get_id_as_arg  s>    !||||o$$W-- 	#:Jr'   rK   r   c                    g }| j         r|                    d           |                     || j                             d                    |          S Nrg  rp   )r[  r   rr   r   r   s      r(   rO   z+ASTTemplateIntroductionParameter._stringify  sR     	JJu

99T_--...wws||r'   rg   r   rh   ri   r   r   c                    | j         r|t          j        dd          z  }| j                            |||dd|           d S r  )r[  r   r   rr   r   r   s        r(   r   z3ASTTemplateIntroductionParameter.describe_signature  sM      	Cx4UEBBBG**7D#r2vNNNNNr'   )rr   r+   r[  r=   r.   r/   r   r   r   r   rW  rf  rg  r   r   r   )r#   r$   r%   r:   rB   rI   r   r,   r  rQ  r`   r  rO   r   r&   r'   r(   r  r    s
       + + + +
 
 
 
; ; ; ; V V V XV " " " X"    TX          O O O O O Or'   r  c                  >    e Zd ZddZddZd dZd!dZd"dZd#dZdS )$ASTTemplateIntroductionconceptr   r  &list[ASTTemplateIntroductionParameter]r.   r/   c                L    t          |          dk    sJ || _        || _        d S r   )r3   r  r  )r9   r  r  s      r(   r:   z ASTTemplateIntroduction.__init__  s)     6{{Qr'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   r  r  rA   s     r(   rB   zASTTemplateIntroduction.__eq__  s8    %!899 	"!!|u},L1LLr'   rD   c                8    t          | j        | j        f          S r?   )rG   r  r  rH   s    r(   rI   z ASTTemplateIntroduction.__hash__  s    T\4;/000r'   rU   r-   c                    dk    sJ d                     dgfd| j        D             dd| j                                      dfd| j        D             dd          S )Nr   rp   r  c              3  B   K   | ]}|                               V  d S r?   r   r  s     r(   r   z1ASTTemplateIntroduction.get_id.<locals>.<genexpr>  s/      ==ell7##======r'   r   r  c              3  B   K   | ]}|                               V  d S r?   )r  r  s     r(   r   z1ASTTemplateIntroduction.get_id.<locals>.<genexpr>  s1      DDue!!'**DDDDDDr'   )r   r  r  r`   r_   s    `r(   r`   zASTTemplateIntroduction.get_id
  s    !||||ww
 >======
 	
 
 L((
 
 EDDDDDD
 
 
   	r'   rK   r   c                    g }|                      | j                  dd                    fd| j        D                       df           d                    |          S )Nr  r  c              3  .   K   | ]} |          V  d S r?   r&   )r   r|   rK   s     r(   r   z5ASTTemplateIntroduction._stringify.<locals>.<genexpr>  s-      @@5ii&&@@@@@@r'   z} rp   )r   r  r   r  r   s    ` r(   rO   z"ASTTemplateIntroduction._stringify  sp    

Idl##II@@@@DK@@@@@	
 	 	 	 wws||r'   rS  r   rh   ri   r   rl   r   r  c                   t          j                    }||z  }d|_        | j                            |d||           |t          j        dd          z  }d}| j        D ]L}|s.|t          j        dd          z  }|t          j                    z  }d}|                    ||||           M|t          j        dd          z  }d S )NtemplateIntroductionro   r  Tr  Fr  )r   r  r  r  r   r   r  r   )	r9   rS  rh   ri   rl   r  rg   r   r|   s	            r(   r  z8ASTTemplateIntroduction.describe_signature_as_introducer$  s     .00g
#9 ''S&III80c:::[ 	A 	AE 588cBBB82444E$$WdC@@@@80c:::r'   N)r  r   r  r  r.   r/   r   r   r   r   r  )	r#   r$   r%   r:   rB   rI   r`   rO   r  r&   r'   r(   r  r    s           M M M M
1 1 1 1       ; ; ; ; ; ;r'   r  c                  F    e Zd ZddZdd	Zd dZd!dZd"dZd#dZd$dZ	dS )%ASTTemplateDeclarationPrefixr   8list[ASTTemplateParams | ASTTemplateIntroduction] | Noner.   r/   c                    || _         d S r?   )r   )r9   r   s     r(   r:   z%ASTTemplateDeclarationPrefix.__init__@  s     #r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   r   rA   s     r(   rB   z#ASTTemplateDeclarationPrefix.__eq__F  s*    %!=>> 	"!!~00r'   rD   c                *    t          | j                  S r?   )rG   r   rH   s    r(   rI   z%ASTTemplateDeclarationPrefix.__hash__K  s    DN###r'   r  c                j    | j         d S | j         d         }t          |t                    sd S |j        S )Nr   )r   r2   r{  r  )r9   	last_lists     r(   get_requires_clause_in_lastz8ASTTemplateDeclarationPrefix.get_requires_clause_in_lastN  s<    >!4N2&	)%677 	4''r'   rU   r-   c                z   |dk    sJ g }t          | j                  dz
  }t          | j                  D ]q\  }}t          |t                    r/|                    |                    |||k                         I|                    |                    |                     rd                    |          S )Nr   rX   )r  rp   )r3   r   	enumerater2   r{  r   r`   r   )r9   rU   r   
last_indexr   ts         r(   %get_id_except_requires_clause_in_lastzBASTTemplateDeclarationPrefix.get_id_except_requires_clause_in_lastV  s    !||||((1,
dn-- 	. 	.DAq!.// .

188Ga:o8OOPPPP

188G,,----wws||r'   rK   r   c                R    d                     t          || j                            S r  )r   mapr   rN   s     r(   rO   z'ASTTemplateDeclarationPrefix._stringifyb  s     wws9dn55666r'   rg   r   rh   ri   r   rl   r   r  c                j    t          |           | j        D ]}|                    |d|||           d S )Nrz   )r   r   r  )r9   rg   rh   ri   rl   r  r  s          r(   r   z/ASTTemplateDeclarationPrefix.describe_signaturee  sU     	 %%% 	 	A..sFH   	 	r'   N)r   r  r.   r/   r   r   )r.   r  r   r   )rg   r   rh   r-   ri   r   rl   r   r  r=   r.   r/   )
r#   r$   r%   r:   rB   rI   r  r  rO   r   r&   r'   r(   r  r  ?  s        # # # #1 1 1 1
$ $ $ $( ( ( (
 
 
 
7 7 7 7     r'   r  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTRequiresClauserq  r   r.   r/   c                    || _         d S r?   rs  rt  s     r(   r:   zASTRequiresClause.__init__u  r  r'   r;   r<   r=   c                Z    t          |t                    st          S | j        |j        k    S r?   )r2   r  r@   rq  rA   s     r(   rB   zASTRequiresClause.__eq__x  s*    %!233 	"!!yEJ&&r'   rD   c                *    t          | j                  S r?   rw  rH   s    r(   rI   zASTRequiresClause.__hash__}  rJ   r'   rK   r   r-   c                (    d || j                   z   S )Nz	requires rs  rN   s     r(   rO   zASTRequiresClause._stringify  s    YYty1111r'   rg   nodes.TextElementrh   ri   r   rl   r   c                    |t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nrequiresr>  r   s        r(   r   z$ASTRequiresClause.describe_signature  sP     	8,ZDDD8*,,,	$$WdC@@@@@r'   Nr  r   r   r   )
rg   r  rh   r-   ri   r   rl   r   r.   r/   rq  r&   r'   r(   r  r  t  s~           ' ' ' '
   2 2 2 2	A 	A 	A 	A 	A 	Ar'   r  c                      e Zd Z	 	 	 	 	 	 d-d.dZd/dZd0dZd1dZed2d            Zed3d            Z	d4d5d Z
d6d!Zd7d$Zd8d,ZdS )9ASTDeclarationNFr[  r-   directiveTyperH  r  r   #ASTTemplateDeclarationPrefix | Noner   r   trailingRequiresClauser  	semicolonr=   r.   r/   c                    || _         || _        || _        || _        || _        || _        || _        d | _        d | _        d | _	        d S r?   )
r[  r  r  r   r   r  r  rl   enumeratorScopedSymbol_newest_id_cache)r9   r[  r  r  r   r   r  r  s           r(   r:   zASTDeclaration.__init__  sX     %*$,&&<#"%)59# -1r'   r;   r<   c                Z   t          |t                    st          S | j        |j        k    o| j        |j        k    oo| j        |j        k    o_| j        |j        k    oO| j        |j        k    o?| j        |j        k    o/| j	        |j	        k    o| j
        |j
        k    o| j        |j        k    S r?   )r2   r  r@   r[  r  r  r   r   r  r  rl   r  rA   s     r(   rB   zASTDeclaration.__eq__  s    %00 	"!!Ou// L"e&99L5#33L #u';;L  E$55	L
 +u/KKL %/1L u|+L +u/KK
	
r'   rD   c                    t          | j        | j        | j        | j        | j        | j        | j        | j        | j	        f	          S r?   )
rG   r[  r  r  r   r   r  r  rl   r  rH   s    r(   rI   zASTDeclaration.__hash__  sK    OO'NK'

 
 
 
	r'   c           	     
   | j         r| j                                         nd }| j        r| j                                        nd }t          | j        | j        | j        || j                                        || j                  S r?   )	r   cloner  r  r[  r  r  r   r  )r9   template_prefix_clonetrailing_requires_clasue_clones      r(   r  zASTDeclaration.clone  s    +/+>HD%%'''D 	 483NXD'--///TX 	' OO!""$$*N
 
 	
r'   r   c                    | j         j        S r?   )r   r,   rH   s    r(   r,   zASTDeclaration.name  s    $$r'   rt  c                4    | j         dk    rd S | j        j        S )Nr  )r[  r   r  rH   s    r(   r  zASTDeclaration.function_params  s     ?j((4//r'   TrU   r_  c                8   |dk    rl| j         s| j        rt          | j        dk    r&| j        r| j        j                            |          S | j                            || j        | j                  S | j        dk    r'| j        r | j        j                            ||          S |rt          |         g}ng }| j         G|	                    | j         
                    |                     | j                                         }nd }|s| j        r|dk     rt          |	                    d           |r| j        r|	                    d           |r-|	                    |j                            |                     | j        r2|	                    | j        j                            |                     |	                    d           |	                    | j                            || j        | j                             d                    |          S )NrX   
enumeratorr  r  aar   rp   )r   r  r   r[  r  r   r`   rl   r   r   r  r  rq  r   )r9   rU   r_  r   requires_clause_in_lasts        r(   r`   zASTDeclaration.get_id  s   a<<" #d&A #"",..43N.2>EEgNNN#**7DOT[QQQ?l**t/J*.:AA'8TTT 	g&'CCC *JJ#II'RR   '+&9&U&U&W&W##&*#" 	d&A 	{{""JJt& !4+F !

4   & I

27>>wGGHHH* M

46;BB7KKLLLJJsOOO

4#**7DOT[QQRRRwws||r'   c                ^    | j          |                     t          d          | _         | j         S r  )r  r`   r   rH   s    r(   get_newest_idzASTDeclaration.get_newest_id  s*     ($(KK$>$>D!$$r'   rK   r   c                   g }| j         r'| j         dk    r|                    | j         df           | j        r#|                     || j                             |                     || j                             | j        r%|                    d || j                  f           | j        r|                    d           d                    |          S )Npublicr   ;rp   )r  r   r   r   r   r  r  r   r   s      r(   rO   zASTDeclaration._stringify  s    ? 	/t(::JJ-... 	7JJyy!455666

99T-..///& 	FJJYYt'BCCDEEE> 	JJsOOOwws||r'   rg   r   rh   ri   r   optionsdict[str, bool]c           	     b   t          |           | j        sJ d|d<   t          j                    }d|_        | j        j         |d<   | j        r7| j                            |||| j        |                    d                     ||z  }| j	        rC| j	        dk    r8|t          j
        | j	        | j	                  z  }|t          j                    z  }| j        dk    rI| j                                        }|t          j
        ||          z  }|t          j                    z  }n| j        d	k    r0|t          j
        d	d	          z  }|t          j                    z  }n| j        d
v rn| j        dk    rE| j        dv sJ |t          j
        | j        | j                  z  }|t          j                    z  }nQ| j        dk    r0|t          j
        dd          z  }|t          j                    z  }n| j        dk    r|t          j
        dd          z  }|t          j                    z  }| j        dk    r/|t          j
        dd          z  }|t          j                    z  }n| j        dk    r/|t          j
        dd          z  }|t          j                    z  }ni| j        dk    sJ | j                    nN| j        dk    r/|t          j
        dd          z  }|t          j                    z  }nt!          | j                  | j                            |||| j                   |}| j        rSt          j                    }d|_        |                    |           |}| j                            |d|| j                   | j        r|t          j        dd          z  }d S d S )NTis_multiline
declaratoradd_permalinkztparam-line-spec)rl   r  r  r5  r  >   r  r  class>   r  structunionenumz
enum-classzenum-structr  r  r  ro   r  )r   rl   r   r  r  isRedeclarationr   r   r  r  r   r   r[  r   r  r  r4   r  r   r  r   )	r9   rg   rh   ri   r  main_decl_noderj   last_decl_nodetrailing_req_nodes	            r(   r   z!ASTDeclaration.describe_signature&  s    	 %%%{ #'!577*6'.2k.I*I' 	22{ %788 3    	>!? 	8t(::h7  N h5777N?f$$%AACCFh7GGGNh5777NN_	))h7	9MMMNh5777NN_ 666_''%)<<<<<h7"D$6  N h5777NN_''h7IIINh5777NN_&&h7GGGNh5777N!\11(";GW"M"MM("9";";;#}44(";Hh"O"OO("9";";;)V333T5G3333_,,h7lSSSNh5777NN 111++ND#t{SSS'& 	 ( < > >1I.NN,---.N'::!:sDK   > 	Fh;CEEENNN	F 	Fr'   )NNNNNF)r[  r-   r  rH  r  rH  r   r  r   r   r  r  r  r=   r.   r/   r   r   )r.   r  r   r  r  )rU   rD   r_  r=   r.   r-   r   r   )
rg   r   rh   r-   ri   r   r  r   r.   r/   )r#   r$   r%   r:   rB   rI   r  r   r,   r  r`   r  rO   r   r&   r'   r(   r  r    s        %)!%>B;?1 1 1 1 14
 
 
 
   
 
 
 
" % % % X% 0 0 0 X0
- - - - -^% % % %
   LF LF LF LF LF LFr'   r  c                  .    e Zd ZddZddZddZddZdS )ASTNamespacerF  r   r   r  r.   r/   c                "    || _         || _        d S r?   )rF  r   )r9   rF  r   s      r(   r:   zASTNamespace.__init__v  s     %,r'   r;   r<   r=   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r?   )r2   r  r@   rF  r   rA   s     r(   rB   zASTNamespace.__eq__|  s?    %.. 	"!!Ou// <#u';;	
r'   rD   c                8    t          | j        | j        f          S r?   )rG   rF  r   rH   s    r(   rI   zASTNamespace.__hash__  s    T_d&9:;;;r'   rK   r   r-   c                    g }| j         r#|                     || j                              |                     || j                             d                    |          S r  )r   r   rF  r   r   s      r(   rO   zASTNamespace._stringify  s_     	7JJyy!455666

99T_--...wws||r'   N)rF  r   r   r  r.   r/   r   r   r   )r#   r$   r%   r:   rB   rI   rO   r&   r'   r(   r  r  u  sd        - - - -
 
 
 
< < < <     r'   r  )
__future__r   r5   r   typingr   docutilsr   sphinxr   sphinx.domains.cpp._idsr   r   r	   r
   r   r   r   r   r   r   sphinx.util.cfamilyr   r   r   r   r   r   r   r   docutils.nodesr   r   sphinx.addnodesr   sphinx.domains.cpp._symbolr   sphinx.environmentr   r   r   r!   r+   r   r   r   r   r   r  r  r*  r3  rC  rO  rY  rp  r  r  r  r  r  r  r  r  r  r  r  r
  r  r%  r5  r@  rJ  rX  re  rs  r}  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r0  r<  rE  rT  ri  rs  r  r  r  r  r  r  r  r)  rT  ri  r}  r  r  r  r  r  r  r  r  r  r  r&  r3  r<  rF  rO  rY  re  ry  r  r{  r  r  r  r  r  r  r&   r'   r(   <module>r     sY   " " " " " " 



                                                               ----------33333333......111111333333       	 	 	 	 	k 	 	 	q q q q qG q q qh.S .S .S .S .S7 .S .S .SbUC UC UC UC UCG UC UC UCz. . . . .G . . .	 	 	 	 	 	 	 	C C C C C
 C C C&C C C C C
 C C C<J J J J Jz J J J2J J J J Jz J J J2$< $< $< $< $<Z $< $< $<NK K K K KJ K K K<= = = = =] = = =&M; M; M; M; M;- M; M; M;`; ; ; ; ;= ; ; ;4A A A A Am A A A:. . . . .7 . . .; ; ; ; ;l ; ; ;4I I I I I| I I I2I I I I I I I I2: : : : :L : : :&: : : : :L : : :&@ @ @ @ @ @ @ @:= = = = =] = = =B.; .; .; .; .;m .; .; .;b; ; ; ; ; ; ; ;BA A A A A] A A AB; ; ; ; ; ; ; ;<; ; ; ; ;M ; ; ;6A A A A AM A A A4; ; ; ; ;] ; ; ;6; ; ; ; ;m ; ; ;6@I @I @I @I @I @I @I @IF-A -A -A -A -AM -A -A -AhA A A A A- A A AD.I .I .I .I .I= .I .I .Ib5E 5E 5E 5E 5E 5E 5E 5Ep&; &; &; &; &; &; &; &;R6F 6F 6F 6F 6F 6F 6F 6FrI I I I I= I I ID7 7 7 7 7m 7 7 7@A  A  A  A  A ' A  A  A H*B *B *B *B *B *B *B *BZW W W W W W W W@!I !I !I !I !Ik !I !I !IHB B B B BW B B B::; :; :; :; :;g :; :; :;B. . . . .' . . ./< /< /< /< /<%8 /< /< /<d; ; ; ; ;&9 ; ; ;0; ; ; ; ;"5 ; ; ;:5; 5; 5; 5; 5;1 5; 5; 5;p+K +K +K +K +K7 +K +K +K\? ? ? ? ?g ? ? ?6wY wY wY wY wYg wY wY wYt? ? ? ? ?g ? ? ?8Q/ Q/ Q/ Q/ Q/ Q/ Q/ Q/hUI UI UI UI UI7 UI UI UIx&; &; &; &; &;w &; &; &;R*. *. *. *. *.G *. *. *.ZeJ eJ eJ eJ eJ eJ eJ eJP3A 3A 3A 3A 3A 3A 3A 3AlwA wA wA wA wA} wA wA wAtHA HA HA HA HA} HA HA HAVEA EA EA EA EA] EA EA EAPpA pA pA pA pA- pA pA pAfPI PI PI PI PI PI PI PIn? ? ? ? ?= ? ? ?4 ;  ;  ;  ;  ;+  ;  ;  ;FH H H H HW H H HByA yA yA yA yAg yA yA yAx0E 0E 0E 0E 0Eg 0E 0E 0Ef.E .E .E .E .Eg .E .E .Eb&R &R &R &R &R7 &R &R &RZ&L &L &L &L &L &L &L &LR-C -C -C -C -C7 -C -C -C`B B B B Bw B B BJ H  H  H  H  Hw  H  H  HF: : : : :g : : :z*K *K *K *K *KG *K *K *Kj. . . . .w . . .*DN DN DN DN DN'7 DN DN DNN*A *A *A *A *A+ *A *A *AZ0A 0A 0A 0A 0A#3 0A 0A 0Af@C @C @C @C @C. @C @C @CFXV XV XV XV XV XV XV XV~?O ?O ?O ?O ?Ow ?O ?O ?OD?; ?; ?; ?; ?;g ?; ?; ?;J2 2 2 2 27 2 2 2jA A A A A A A A>_F _F _F _F _FW _F _F _FD    7     r'   