o
    N iü ã                   @  s  U d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZmZmZmZ erad dlmZ d d	lmZmZmZ d d
lmZ d dlmZ d dlmZ ed Z de!d< G dd„ deƒZ"G dd„ deƒZ#G dd„ de"ƒZ$G dd„ de"ƒZ%G dd„ de%ƒZ&G dd„ de&ƒZ'G dd„ de&ƒZ(G dd„ de&ƒZ)G d d!„ d!e&ƒZ*G d"d#„ d#e%ƒZ+G d$d%„ d%e%ƒZ,G d&d'„ d'e"ƒZ-G d(d)„ d)e-ƒZ.G d*d+„ d+e-ƒZ/G d,d-„ d-e-ƒZ0G d.d/„ d/e-ƒZ1G d0d1„ d1e-ƒZ2G d2d3„ d3e%ƒZ3G d4d5„ d5e%ƒZ4G d6d7„ d7e%ƒZ5G d8d9„ d9e%ƒZ6G d:d;„ d;e%ƒZ7G d<d=„ d=e%ƒZ8G d>d?„ d?e"ƒZ9G d@dA„ dAe%ƒZ:G dBdC„ dCe%ƒZ;G dDdE„ dEe"ƒZ<G dFdG„ dGe<ƒZ=G dHdI„ dIe<ƒZ>G dJdK„ dKe"ƒZ?G dLdM„ dMe"ƒZ@G dNdO„ dOeƒZAG dPdQ„ dQe"ƒZBG dRdS„ dSe"ƒZCG dTdU„ dUe"ƒZDG dVdW„ dWeDƒZEG dXdY„ dYeDƒZFG dZd[„ d[eDƒZGG d\d]„ d]eDƒZHG d^d_„ d_eƒZIG d`da„ dae"ƒZJG dbdc„ dce"ƒZKG ddde„ dee"ƒZLG dfdg„ dge"ƒZMG dhdi„ die"ƒZNG djdk„ dke"ƒZOG dldm„ dme"ƒZPG dndo„ doe"ƒZQG dpdq„ dqe"ƒZRG drds„ dse"ƒZSG dtdu„ dueƒZTdS )vé    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚUnionÚcast)Únodes)Úaddnodes)Ú
_id_prefixÚ_max_id)ÚASTAttributeListÚASTBaseBaseÚASTBaseParenExprListÚ$UnsupportedMultiCharacterCharLiteralÚverify_description_mode)Ú	TypeAlias)ÚElementÚNodeÚTextElement)ÚSymbol)ÚBuildEnvironment)ÚStringifyTransform)Ú	ASTStructÚASTUnionÚASTEnumÚASTEnumeratorÚASTTypeÚASTTypeWithInitÚASTMacror   ÚDeclarationTypec                   @  s   e Zd Zddd„ZdS )ÚASTBaseÚsignoder   ÚmodeÚstrÚenvr   Úsymbolr   ÚreturnÚNonec                 C  ó   t t| ƒƒ‚©N©ÚNotImplementedErrorÚrepr©Úselfr    r!   r#   r$   © r.   úI/home/ubuntu/.local/lib/python3.10/site-packages/sphinx/domains/c/_ast.pyÚdescribe_signature#   ó   zASTBase.describe_signatureN©
r    r   r!   r"   r#   r   r$   r   r%   r&   )Ú__name__Ú
__module__Ú__qualname__r0   r.   r.   r.   r/   r   "   s    r   c                   @  sV   e Zd Zddd„Zd d
d„Zd!dd„Zd"dd„Zd"dd„Zd#dd„Ze	d"dd„ƒZ
dS )$ÚASTIdentifierÚnamer"   r%   r&   c                 C  s8   t |tƒrt|ƒdkrt‚t |¡| _|d dk| _d S )Nr   ú@)Ú
isinstancer"   ÚlenÚAssertionErrorÚsysÚinternr7   Úis_anonymous©r-   r7   r.   r.   r/   Ú__init__,   s   zASTIdentifier.__init__ÚotherÚobjectÚboolc                 C  ó   t |tƒstS | j|jkS r(   )r9   r6   ÚNotImplementedr7   ©r-   rA   r.   r.   r/   Ú__eq__4   ó   
zASTIdentifier.__eq__c                 C  ó   | j S r(   )r>   ©r-   r.   r.   r/   Úis_anon9   ó   zASTIdentifier.is_anonc                 C  rI   r(   ©r7   rJ   r.   r.   r/   Ú__str__>   rL   zASTIdentifier.__str__c                 C  s   | j rdS | jS )Nú[anonymous])r>   r7   rJ   r.   r.   r/   Úget_display_stringA   ó   z ASTIdentifier.get_display_stringr    r   r!   r#   r   Úprefixr$   r   c           
      C  s¸   t |ƒ | jrtjdd}nt | j| j¡}|dkr:|| j }tjddd|d d d}| ¡ |d< ||7 }||7 }d S |d	krLt ¡ }	|	|7 }	||	7 }d S |d
krV||7 }d S td| ƒ‚)NrO   )ÚtextÚmarkTypeÚ ÚcÚ
identifier)Ú	refdomainÚreftypeÚ	reftargetÚmodnameÚ	classnamezc:parent_keyÚ
lastIsNameÚ
noneIsNameúUnknown description mode: %s)	r   r>   r   Údesc_sig_namer7   Úpending_xrefÚget_lookup_keyÚ	desc_nameÚ	Exception)
r-   r    r!   r#   rR   r$   ÚnodeÚ
targetTextÚpnodeÚnameNoder.   r.   r/   r0   D   s*   
ýz ASTIdentifier.describe_signaturec                 C  s   t jdtdd | jS )NzJ`ASTIdentifier.identifier` is deprecated, use `ASTIdentifier.name` insteadé   )Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr7   rJ   r.   r.   r/   rW   ^   s
   þzASTIdentifier.identifierN)r7   r"   r%   r&   ©rA   rB   r%   rC   ©r%   rC   ©r%   r"   )r    r   r!   r"   r#   r   rR   r"   r$   r   r%   r&   )r3   r4   r5   r@   rG   rK   rN   rP   r0   ÚpropertyrW   r.   r.   r.   r/   r6   +   s    





r6   c                   @  sV   e Zd Zd$dd„Zd%dd„Zd&dd„Zed'dd„ƒZd(dd„Zd)dd„Z	d*d!d"„Z
d#S )+ÚASTNestedNameÚnamesúlist[ASTIdentifier]ÚrootedrC   r%   r&   c                 C  s    t |ƒdksJ ‚|| _|| _d S ©Nr   )r:   rs   ru   )r-   rs   ru   r.   r.   r/   r@   h   s   
zASTNestedName.__init__rA   rB   c                 C  ó&   t |tƒstS | j|jko| j|jkS r(   )r9   rr   rE   rs   ru   rF   r.   r.   r/   rG   m   ó   
zASTNestedName.__eq__Úintc                 C  ó   t | j| jfƒS r(   )Úhashrs   ru   rJ   r.   r.   r/   Ú__hash__r   rQ   zASTNestedName.__hash__c                 C  s   | S r(   r.   rJ   r.   r.   r/   r7   u   s   zASTNestedName.nameÚversionr"   c                 C  s   d  dd„ | jD ƒ¡S )NÚ.c                 s  s    | ]}t |ƒV  qd S r(   )r"   ©Ú.0Únr.   r.   r/   Ú	<genexpr>z   ó   € z'ASTNestedName.get_id.<locals>.<genexpr>©Újoinrs   ©r-   r}   r.   r.   r/   Úget_idy   s   zASTNestedName.get_idÚ	transformr   c                   s,   d  ‡ fdd„| jD ƒ¡}| jrd| S |S )Nr~   c                 3  ó    | ]}ˆ |ƒV  qd S r(   r.   r   ©rˆ   r.   r/   r‚   }   rƒ   z+ASTNestedName._stringify.<locals>.<genexpr>)r…   rs   ru   ©r-   rˆ   Úresr.   rŠ   r/   Ú
_stringify|   s   zASTNestedName._stringifyr    r   r!   r#   r   r$   r   c                 C  sô  t |ƒ |dkr5| jrd}t|ƒ‚tt| jƒƒD ]}|dkr$d}t|ƒ‚| j| }| |||d|¡ qd S |dkrY| jrBJ t	| ƒƒ‚t| jƒdksKJ ‚| jd  |d|d|¡ d S |dv rôd}d	}	|d
krl| jd d… n| j}
|}|d
kryt
 ¡ }| jr›|d7 }|d
kr“t|
ƒdkr“|t
 dd¡7 }n|t
 dd¡7 }tt|
ƒƒD ]+}|
| }|	sµ|t
 dd¡7 }|d7 }d}	t	|ƒ}|dkrÈ| |d|||¡ ||7 }q¡|d
kròt| jƒdkrä|t
 dd¡7 }||7 }| jd  |||d|¡ d S d S td| ƒ‚)Nr^   zCan this happen?r~   r   rU   Úparamé   )rT   r]   ÚmarkNameTr]   éÿÿÿÿFrT   r_   )r   ru   r;   r   ÚTextÚranger:   rs   r0   r"   r   Údesc_addnameÚdesc_sig_punctuationrd   )r-   r    r!   r#   r$   ÚunreachableÚir   rR   Úfirstrs   ÚdestÚidentÚ	txt_identr.   r.   r/   r0   ƒ   sZ   
ú
üz ASTNestedName.describe_signatureN)rs   rt   ru   rC   r%   r&   rn   ©r%   ry   ©r%   rr   ©r}   ry   r%   r"   ©rˆ   r   r%   r"   r2   ©r3   r4   r5   r@   rG   r|   rq   r7   r‡   r   r0   r.   r.   r.   r/   rr   g   s    




rr   c                   @  ó   e Zd ZdS )ÚASTExpressionN©r3   r4   r5   r.   r.   r.   r/   r¢   Â   ó    r¢   c                   @  r¡   )Ú
ASTLiteralNr£   r.   r.   r.   r/   r¥   É   r¤   r¥   c                   @  s>   e Zd Zddd„Zdd	d
„Zddd„Zd dd„Zd!dd„ZdS )"ÚASTBooleanLiteralÚvaluerC   r%   r&   c                 C  ó
   || _ d S r(   ©r§   )r-   r§   r.   r.   r/   r@   Î   ó   
zASTBooleanLiteral.__init__rA   rB   c                 C  rD   r(   )r9   r¦   rE   r§   rF   r.   r.   r/   rG   Ñ   rH   zASTBooleanLiteral.__eq__ry   c                 C  ó
   t | jƒS r(   )r{   r§   rJ   r.   r.   r/   r|   Ö   rª   zASTBooleanLiteral.__hash__rˆ   r   r"   c                 C  s   | j rdS dS )NÚtrueÚfalser©   ©r-   rˆ   r.   r.   r/   r   Ù   s   zASTBooleanLiteral._stringifyr    r   r!   r#   r   r$   r   c                 C  ó   t | ƒ}|t ||¡7 }d S r(   )r"   r   Údesc_sig_keyword©r-   r    r!   r#   r$   Útxtr.   r.   r/   r0   ß   ó   z$ASTBooleanLiteral.describe_signatureN)r§   rC   r%   r&   rn   rœ   rŸ   r2   ©r3   r4   r5   r@   rG   r|   r   r0   r.   r.   r.   r/   r¦   Í   s    



r¦   c                   @  ó>   e Zd Zddd„Zdd
d„Zddd„Zd dd„Zd!dd„ZdS )"ÚASTNumberLiteralÚdatar"   r%   r&   c                 C  r¨   r(   ©r·   ©r-   r·   r.   r.   r/   r@   æ   rª   zASTNumberLiteral.__init__rA   rB   rC   c                 C  rD   r(   )r9   r¶   rE   r·   rF   r.   r.   r/   rG   é   rH   zASTNumberLiteral.__eq__ry   c                 C  r«   r(   ©r{   r·   rJ   r.   r.   r/   r|   î   rª   zASTNumberLiteral.__hash__rˆ   r   c                 C  rI   r(   r¸   r®   r.   r.   r/   r   ñ   rL   zASTNumberLiteral._stringifyr    r   r!   r#   r   r$   r   c                 C  r¯   r(   )r"   r   Údesc_sig_literal_numberr±   r.   r.   r/   r0   ô   r³   z#ASTNumberLiteral.describe_signatureN©r·   r"   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r¶   å   ó    



r¶   c                   @  s>   e Zd Zddd„Zddd„Zd dd„Zd!dd„Zd"dd„ZdS )#ÚASTCharLiteralrR   r"   r·   r%   r&   c                 C  s<   || _ || _| ¡  d¡}t|ƒdkrt|ƒ| _d S t|ƒ‚)Nzunicode-escaper   )rR   r·   ÚencodeÚdecoder:   Úordr§   r   )r-   rR   r·   Údecodedr.   r.   r/   r@   û   s   zASTCharLiteral.__init__rA   rB   rC   c                 C  rw   r(   )r9   r¾   rE   rR   r§   rF   r.   r.   r/   rG     ó
   

þzASTCharLiteral.__eq__ry   c                 C  rz   r(   )r{   rR   r§   rJ   r.   r.   r/   r|     rQ   zASTCharLiteral.__hash__rˆ   r   c                 C  s,   | j d u rd| j d S | j d | j d S )Nú')rR   r·   r®   r.   r.   r/   r     s   
zASTCharLiteral._stringifyr    r   r!   r#   r   r$   r   c                 C  r¯   r(   )r"   r   Údesc_sig_literal_charr±   r.   r.   r/   r0     r³   z!ASTCharLiteral.describe_signatureN)rR   r"   r·   r"   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r¾   ú   s    

	

r¾   c                   @  rµ   )"ÚASTStringLiteralr·   r"   r%   r&   c                 C  r¨   r(   r¸   r¹   r.   r.   r/   r@     rª   zASTStringLiteral.__init__rA   rB   rC   c                 C  rD   r(   )r9   rÆ   rE   r·   rF   r.   r.   r/   rG     rH   zASTStringLiteral.__eq__ry   c                 C  r«   r(   rº   rJ   r.   r.   r/   r|   $  rª   zASTStringLiteral.__hash__rˆ   r   c                 C  rI   r(   r¸   r®   r.   r.   r/   r   '  rL   zASTStringLiteral._stringifyr    r   r!   r#   r   r$   r   c                 C  r¯   r(   )r"   r   Údesc_sig_literal_stringr±   r.   r.   r/   r0   *  r³   z#ASTStringLiteral.describe_signatureNr¼   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rÆ     r½   rÆ   c                   @  óH   e Zd Zd!dd„Zd"d
d„Zd#dd„Zd$dd„Zd%dd„Zd&dd„Zd S )'ÚASTIdExpressionr7   rr   r%   r&   c                 C  r¨   r(   rM   r?   r.   r.   r/   r@   1  s   
zASTIdExpression.__init__rA   rB   rC   c                 C  rD   r(   )r9   rÉ   rE   r7   rF   r.   r.   r/   rG   5  rH   zASTIdExpression.__eq__ry   c                 C  r«   r(   ©r{   r7   rJ   r.   r.   r/   r|   :  rª   zASTIdExpression.__hash__rˆ   r   r"   c                 C  ó
   || j ƒS r(   rM   r®   r.   r.   r/   r   =  rª   zASTIdExpression._stringifyr}   c                 C  ó   | j  |¡S r(   )r7   r‡   r†   r.   r.   r/   r‡   @  ó   zASTIdExpression.get_idr    r   r!   r#   r   r$   r   c                 C  ó   | j  ||||¡ d S r(   )r7   r0   r,   r.   r.   r/   r0   C  ó   z"ASTIdExpression.describe_signatureN©r7   rr   r%   r&   rn   rœ   rŸ   rž   r2   ©	r3   r4   r5   r@   rG   r|   r   r‡   r0   r.   r.   r.   r/   rÉ   0  s    




rÉ   c                   @  rÈ   )'ÚASTParenExprÚexprr¢   r%   r&   c                 C  r¨   r(   ©rÓ   ©r-   rÓ   r.   r.   r/   r@   I  rª   zASTParenExpr.__init__rA   rB   rC   c                 C  rD   r(   )r9   rÒ   rE   rÓ   rF   r.   r.   r/   rG   L  rH   zASTParenExpr.__eq__ry   c                 C  r«   r(   ©r{   rÓ   rJ   r.   r.   r/   r|   Q  rª   zASTParenExpr.__hash__rˆ   r   r"   c                 C  ó   d|| j ƒ d S ©Nú(ú)rÔ   r®   r.   r.   r/   r   T  ó   zASTParenExpr._stringifyr}   c                 C  rÌ   r(   )rÓ   r‡   r†   r.   r.   r/   r‡   W  rÍ   zASTParenExpr.get_idr    r   r!   r#   r   r$   r   c                 C  ó6   |t  dd¡7 }| j ||||¡ |t  dd¡7 }d S rØ   ©r   r•   rÓ   r0   r,   r.   r.   r/   r0   Z  ó   zASTParenExpr.describe_signatureN©rÓ   r¢   r%   r&   rn   rœ   rŸ   rž   r2   rÑ   r.   r.   r.   r/   rÒ   H  ó    




rÒ   c                   @  r¡   )ÚASTPostfixOpNr£   r.   r.   r.   r/   rá   d  r¤   rá   c                   @  ó>   e Zd Zddd„Zdd
d„Zd dd„Zd!dd„Zd"dd„ZdS )#ÚASTPostfixCallExprÚlstú$ASTParenExprList | ASTBracedInitListr%   r&   c                 C  r¨   r(   ©rä   )r-   rä   r.   r.   r/   r@   i  rª   zASTPostfixCallExpr.__init__rA   rB   rC   c                 C  rD   r(   )r9   rã   rE   rä   rF   r.   r.   r/   rG   l  rH   zASTPostfixCallExpr.__eq__ry   c                 C  r«   r(   )r{   rä   rJ   r.   r.   r/   r|   q  rª   zASTPostfixCallExpr.__hash__rˆ   r   r"   c                 C  rË   r(   ræ   r®   r.   r.   r/   r   t  rª   zASTPostfixCallExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  rÎ   r(   )rä   r0   r,   r.   r.   r/   r0   w  rÏ   z%ASTPostfixCallExpr.describe_signatureN)rä   rå   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rã   h  r½   rã   c                   @  râ   )#ÚASTPostfixArrayrÓ   r¢   r%   r&   c                 C  r¨   r(   rÔ   rÕ   r.   r.   r/   r@   }  rª   zASTPostfixArray.__init__rA   rB   rC   c                 C  rD   r(   )r9   rç   rE   rÓ   rF   r.   r.   r/   rG   €  rH   zASTPostfixArray.__eq__ry   c                 C  r«   r(   rÖ   rJ   r.   r.   r/   r|   …  rª   zASTPostfixArray.__hash__rˆ   r   r"   c                 C  r×   ©Nú[ú]rÔ   r®   r.   r.   r/   r   ˆ  rÛ   zASTPostfixArray._stringifyr    r   r!   r#   r   r$   r   c                 C  rÜ   rè   rÝ   r,   r.   r.   r/   r0   ‹  rÞ   z"ASTPostfixArray.describe_signatureNrß   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rç   |  r½   rç   c                   @  ó    e Zd Zddd„Zddd„ZdS )ÚASTPostfixIncrˆ   r   r%   r"   c                 C  ó   dS ©Nz++r.   r®   r.   r.   r/   r   “  ó   zASTPostfixInc._stringifyr    r   r!   r#   r   r$   r   r&   c                 C  ó   |t  dd¡7 }d S rî   ©r   Údesc_sig_operatorr,   r.   r.   r/   r0   –  ó   z ASTPostfixInc.describe_signatureNrŸ   r2   ©r3   r4   r5   r   r0   r.   r.   r.   r/   rì   ’  ó    
rì   c                   @  rë   )ÚASTPostfixDecrˆ   r   r%   r"   c                 C  rí   ©Nz--r.   r®   r.   r.   r/   r   œ  rï   zASTPostfixDec._stringifyr    r   r!   r#   r   r$   r   r&   c                 C  rð   r÷   rñ   r,   r.   r.   r/   r0   Ÿ  ró   z ASTPostfixDec.describe_signatureNrŸ   r2   rô   r.   r.   r.   r/   rö   ›  rõ   rö   c                   @  râ   )#ÚASTPostfixMemberOfPointerr7   rr   r%   r&   c                 C  r¨   r(   rM   r?   r.   r.   r/   r@   ¥  rª   z"ASTPostfixMemberOfPointer.__init__rA   rB   rC   c                 C  rD   r(   )r9   rø   rE   r7   rF   r.   r.   r/   rG   ¨  rH   z ASTPostfixMemberOfPointer.__eq__ry   c                 C  r«   r(   rÊ   rJ   r.   r.   r/   r|   ­  rª   z"ASTPostfixMemberOfPointer.__hash__rˆ   r   r"   c                 C  ó   d|| j ƒ S )Nú->rM   r®   r.   r.   r/   r   °  ó   z$ASTPostfixMemberOfPointer._stringifyr    r   r!   r#   r   r$   r   c                 C  s&   |t  dd¡7 }| j |d||¡ d S )Nrú   r^   )r   rò   r7   r0   r,   r.   r.   r/   r0   ³  s   z,ASTPostfixMemberOfPointer.describe_signatureNrÐ   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rø   ¤  r½   rø   c                   @  ó>   e Zd Zd dd„Zd!dd„Zd"dd„Zd#dd„Zd$dd„ZdS )%ÚASTPostfixExprrR   r¢   Ú	postFixesúlist[ASTPostfixOp]r%   r&   c                 C  ó   || _ || _d S r(   )rR   rþ   )r-   rR   rþ   r.   r.   r/   r@   º  ó   
zASTPostfixExpr.__init__rA   rB   rC   c                 C  rw   r(   )r9   rý   rE   rR   rþ   rF   r.   r.   r/   rG   ¾  rx   zASTPostfixExpr.__eq__ry   c                 C  rz   r(   )r{   rR   rþ   rJ   r.   r.   r/   r|   Ã  rQ   zASTPostfixExpr.__hash__rˆ   r   r"   c                   s&   d  ˆ | jƒg‡ fdd„| jD ƒ¢¡S )NrU   c                 3  r‰   r(   r.   )r€   ÚprŠ   r.   r/   r‚   Ç  rƒ   z,ASTPostfixExpr._stringify.<locals>.<genexpr>)r…   rR   rþ   r®   r.   rŠ   r/   r   Æ  s   &zASTPostfixExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  s2   | j  ||||¡ | jD ]
}| ||||¡ qd S r(   )rR   r0   rþ   )r-   r    r!   r#   r$   r  r.   r.   r/   r0   É  s   
ÿz!ASTPostfixExpr.describe_signatureN)rR   r¢   rþ   rÿ   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rý   ¹  ó    



rý   c                   @  s>   e Zd Zddd„Zd dd„Zd!dd„Zd"dd„Zd#dd„ZdS )$ÚASTUnaryOpExprÚopr"   rÓ   r¢   r%   r&   c                 C  r   r(   ©r  rÓ   )r-   r  rÓ   r.   r.   r/   r@   Ô  r  zASTUnaryOpExpr.__init__rA   rB   rC   c                 C  rw   r(   )r9   r  rE   r  rÓ   rF   r.   r.   r/   rG   Ø  rx   zASTUnaryOpExpr.__eq__ry   c                 C  rz   r(   )r{   r  rÓ   rJ   r.   r.   r/   r|   Ý  rQ   zASTUnaryOpExpr.__hash__rˆ   r   c                 C  s2   | j d dv r| j d || jƒ S | j || jƒ S )Nr   Úcnú r  r®   r.   r.   r/   r   à  s   zASTUnaryOpExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  sZ   | j d dv r|t | j | j ¡7 }|t ¡ 7 }n
|t | j | j ¡7 }| j ||||¡ d S )Nr   r  )r  r   r°   Údesc_sig_spacerò   rÓ   r0   r,   r.   r.   r/   r0   æ  s
   z!ASTUnaryOpExpr.describe_signatureN)r  r"   rÓ   r¢   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r  Ó  s    



r  c                   @  râ   )#ÚASTSizeofTypeÚtypr   r%   r&   c                 C  r¨   r(   ©r  ©r-   r  r.   r.   r/   r@   ñ  rª   zASTSizeofType.__init__rA   rB   rC   c                 C  rD   r(   )r9   r
  rE   r  rF   r.   r.   r/   rG   ô  rH   zASTSizeofType.__eq__ry   c                 C  r«   r(   ©r{   r  rJ   r.   r.   r/   r|   ù  rª   zASTSizeofType.__hash__rˆ   r   r"   c                 C  r×   )Nzsizeof(rÚ   r  r®   r.   r.   r/   r   ü  rÛ   zASTSizeofType._stringifyr    r   r!   r#   r   r$   r   c                 C  óF   |t  dd¡7 }|t  dd¡7 }| j ||||¡ |t  dd¡7 }d S )NÚsizeofrÙ   rÚ   ©r   r°   r•   r  r0   r,   r.   r.   r/   r0   ÿ  ó   z ASTSizeofType.describe_signatureN©r  r   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r
  ð  r½   r
  c                   @  râ   )#ÚASTSizeofExprrÓ   r¢   r%   r&   c                 C  r¨   r(   rÔ   rÕ   r.   r.   r/   r@     rª   zASTSizeofExpr.__init__rA   rB   rC   c                 C  rD   r(   )r9   r  rE   rÓ   rF   r.   r.   r/   rG     rH   zASTSizeofExpr.__eq__ry   c                 C  r«   r(   rÖ   rJ   r.   r.   r/   r|     rª   zASTSizeofExpr.__hash__rˆ   r   r"   c                 C  rù   )Nzsizeof rÔ   r®   r.   r.   r/   r     rû   zASTSizeofExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  s2   |t  dd¡7 }|t  ¡ 7 }| j ||||¡ d S )Nr  )r   r°   r	  rÓ   r0   r,   r.   r.   r/   r0     s   z ASTSizeofExpr.describe_signatureNrß   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r    r½   r  c                   @  râ   )#ÚASTAlignofExprr  r   r%   r&   c                 C  r¨   r(   r  r  r.   r.   r/   r@     rª   zASTAlignofExpr.__init__rA   rB   rC   c                 C  rD   r(   )r9   r  rE   r  rF   r.   r.   r/   rG   !  rH   zASTAlignofExpr.__eq__ry   c                 C  r«   r(   r  rJ   r.   r.   r/   r|   &  rª   zASTAlignofExpr.__hash__rˆ   r   r"   c                 C  r×   )Nzalignof(rÚ   r  r®   r.   r.   r/   r   )  rÛ   zASTAlignofExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  r  )NÚalignofrÙ   rÚ   r  r,   r.   r.   r/   r0   ,  r  z!ASTAlignofExpr.describe_signatureNr  rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r    r½   r  c                   @  rü   )%ÚASTCastExprr  r   rÓ   r¢   r%   r&   c                 C  r   r(   )r  rÓ   )r-   r  rÓ   r.   r.   r/   r@   8  r  zASTCastExpr.__init__rA   rB   rC   c                 C  rw   r(   )r9   r  rE   r  rÓ   rF   r.   r.   r/   rG   <  rÃ   zASTCastExpr.__eq__ry   c                 C  rz   r(   )r{   r  rÓ   rJ   r.   r.   r/   r|   D  rQ   zASTCastExpr.__hash__rˆ   r   r"   c                 C  ó:   dg}|  || jƒ¡ |  d¡ |  || jƒ¡ d |¡S ©NrÙ   rÚ   rU   )Úappendr  rÓ   r…   r‹   r.   r.   r/   r   G  ó
   

zASTCastExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  sH   |t  dd¡7 }| j ||||¡ |t  dd¡7 }| j ||||¡ d S rØ   )r   r•   r  r0   rÓ   r,   r.   r.   r/   r0   N  s   zASTCastExpr.describe_signatureN)r  r   rÓ   r¢   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r  7  s    



r  c                   @  rü   )%ÚASTBinOpExprÚexprsúlist[ASTExpression]Úopsú	list[str]r%   r&   c                 C  ó8   t |ƒdksJ ‚t |ƒt |ƒd ksJ ‚|| _|| _d S ©Nr   r   ©r:   r  r  ©r-   r  r  r.   r.   r/   r@   W  ó   
zASTBinOpExpr.__init__rA   rB   rC   c                 C  rw   r(   )r9   r  rE   r  r  rF   r.   r.   r/   rG   ]  rÃ   zASTBinOpExpr.__eq__ry   c                 C  rz   r(   ©r{   r  r  rJ   r.   r.   r/   r|   e  rQ   zASTBinOpExpr.__hash__rˆ   r   r"   c                 C  ót   g }|  || jd ƒ¡ tdt| jƒƒD ] }|  d¡ |  | j|d  ¡ |  d¡ |  || j| ƒ¡ qd |¡S ©Nr   r   r  rU   ©r  r  r“   r:   r  r…   ©r-   rˆ   rŒ   r—   r.   r.   r/   r   h  ó   


zASTBinOpExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  ó¶   | j d  ||||¡ tdt| j ƒƒD ]E}|t ¡ 7 }| j|d  }t|d ƒtdƒkr?t|d ƒtdƒkr?|t ||¡7 }n|t 	||¡7 }|t ¡ 7 }| j |  ||||¡ qd S ©Nr   r   ÚaÚz©
r  r0   r“   r:   r   r	  r  rÁ   r°   rò   ©r-   r    r!   r#   r$   r—   r  r.   r.   r/   r0   r  ó   (øzASTBinOpExpr.describe_signatureN©r  r  r  r   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r  V  ó    




r  c                   @  rü   )%ÚASTAssignmentExprr  r  r  r   r%   r&   c                 C  r!  r"  r#  r$  r.   r.   r/   r@     r%  zASTAssignmentExpr.__init__rA   rB   rC   c                 C  rw   r(   )r9   r5  rE   r  r  rF   r.   r.   r/   rG   ‡  rÃ   zASTAssignmentExpr.__eq__ry   c                 C  rz   r(   r&  rJ   r.   r.   r/   r|     rQ   zASTAssignmentExpr.__hash__rˆ   r   r"   c                 C  r'  r(  r)  r*  r.   r.   r/   r   ’  r+  zASTAssignmentExpr._stringifyr    r   r!   r#   r   r$   r   c                 C  r,  r-  r0  r1  r.   r.   r/   r0   œ  r2  z$ASTAssignmentExpr.describe_signatureNr3  rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r5  €  r4  r5  c                   @  sH   e Zd Zd dd„Zd!d
d„Zd"dd„Zd#dd„Zd$dd„Zd%dd„ZdS )&ÚASTFallbackExprrÓ   r"   r%   r&   c                 C  r¨   r(   rÔ   rÕ   r.   r.   r/   r@   «  rª   zASTFallbackExpr.__init__rA   rB   rC   c                 C  rD   r(   )r9   r6  rE   rÓ   rF   r.   r.   r/   rG   ®  rH   zASTFallbackExpr.__eq__ry   c                 C  r«   r(   rÖ   rJ   r.   r.   r/   r|   ³  rª   zASTFallbackExpr.__hash__rˆ   r   c                 C  rI   r(   rÔ   r®   r.   r.   r/   r   ¶  rL   zASTFallbackExpr._stringifyr}   c                 C  r«   r(   )r"   rÓ   r†   r.   r.   r/   r‡   ¹  rª   zASTFallbackExpr.get_idr    r   r!   r#   r   r$   r   c                 C  s   |t  | j| j¡7 }d S r(   )r   ÚliteralrÓ   r,   r.   r.   r/   r0   ¼  s   z"ASTFallbackExpr.describe_signatureN)rÓ   r"   r%   r&   rn   rœ   rŸ   rž   r2   rÑ   r.   r.   r.   r/   r6  ª  rà   r6  c                   @  r¡   )ÚASTTrailingTypeSpecNr£   r.   r.   r.   r/   r8  Å  r¤   r8  c                   @  râ   )#ÚASTTrailingTypeSpecFundamentalrs   r   r%   r&   c                 C  s   t |ƒdksJ ‚|| _d S rv   )r:   rs   )r-   rs   r.   r.   r/   r@   Ê  s   
z'ASTTrailingTypeSpecFundamental.__init__rA   rB   rC   c                 C  rD   r(   )r9   r9  rE   rs   rF   r.   r.   r/   rG   Î  rH   z%ASTTrailingTypeSpecFundamental.__eq__ry   c                 C  r«   r(   )r{   rs   rJ   r.   r.   r/   r|   Ó  rª   z'ASTTrailingTypeSpecFundamental.__hash__rˆ   r   r"   c                 C  s   d  | j¡S )Nr  r„   r®   r.   r.   r/   r   Ö  rÍ   z)ASTTrailingTypeSpecFundamental._stringifyr    r   r!   r#   r   r$   r   c                 C  s:   d}| j D ]}|s|t ¡ 7 }nd}|t ||¡7 }qd S )NTF)rs   r   r	  Údesc_sig_keyword_type)r-   r    r!   r#   r$   r˜   r   r.   r.   r/   r0   Ù  s   
ûz1ASTTrailingTypeSpecFundamental.describe_signatureN)rs   r   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r9  É  r  r9  c                   @  sL   e Zd Zd!dd„Zd"dd„Zd#dd„Zed$dd„ƒZd%dd„Zd&dd„Z	d S )'ÚASTTrailingTypeSpecNamerR   r"   Ú
nestedNamerr   r%   r&   c                 C  r   r(   )rR   r<  )r-   rR   r<  r.   r.   r/   r@   å  r  z ASTTrailingTypeSpecName.__init__rA   rB   rC   c                 C  rw   r(   )r9   r;  rE   rR   r<  rF   r.   r.   r/   rG   é  rÃ   zASTTrailingTypeSpecName.__eq__ry   c                 C  rz   r(   )r{   rR   r<  rJ   r.   r.   r/   r|   ñ  rQ   z ASTTrailingTypeSpecName.__hash__c                 C  rI   r(   )r<  rJ   r.   r.   r/   r7   ô  ó   zASTTrailingTypeSpecName.namerˆ   r   c                 C  s:   g }| j r| | j ¡ | d¡ | || jƒ¡ d |¡S )Nr  rU   )rR   r  r<  r…   r‹   r.   r.   r/   r   ø  s   

z"ASTTrailingTypeSpecName._stringifyr    r   r!   r#   r   r$   r   c                 C  s>   | j r|t | j | j ¡7 }|t ¡ 7 }| jj||||d d S ©N©r$   )rR   r   r°   r	  r<  r0   r,   r.   r.   r/   r0      s   z*ASTTrailingTypeSpecName.describe_signatureN)rR   r"   r<  rr   r%   r&   rn   rœ   r   rŸ   r2   )
r3   r4   r5   r@   rG   r|   rq   r7   r   r0   r.   r.   r.   r/   r;  ä  s    



r;  c                   @  sJ   e Zd Zd$d%dd	„Zd&dd„Zd'dd„Zd(dd„Zd)dd„Zd*d!d"„Zd#S )+ÚASTFunctionParameterFÚargúASTTypeWithInit | NoneÚellipsisrC   r%   r&   c                 C  r   r(   )rA  rC  )r-   rA  rC  r.   r.   r/   r@   	  r  zASTFunctionParameter.__init__rA   rB   c                 C  rw   r(   )r9   r@  rE   rA  rC  rF   r.   r.   r/   rG     rx   zASTFunctionParameter.__eq__ry   c                 C  rz   r(   )r{   rA  rC  rJ   r.   r.   r/   r|     rQ   zASTFunctionParameter.__hash__r}   Ú
objectTyper"   r$   r   c                 C  s   |j jj|ddS )NF)Úprefixed)ÚparentÚdeclarationr‡   ©r-   r}   rD  r$   r.   r.   r/   r‡     s   zASTFunctionParameter.get_idrˆ   r   c                 C  s   | j rdS || jƒS ©Nú...)rC  rA  r®   r.   r.   r/   r     s   
zASTFunctionParameter._stringifyr    r   r!   r#   r   c                 C  s:   t |ƒ | jr|t dd¡7 }d S | jj||||d d S ©NrJ  r?  )r   rC  r   r•   rA  r0   r,   r.   r.   r/   r0     s   z'ASTFunctionParameter.describe_signatureN©F)rA  rB  rC  rC   r%   r&   rn   rœ   ©r}   ry   rD  r"   r$   r   r%   r"   rŸ   ©
r    r   r!   r"   r#   r   r$   r   r%   r&   ©	r3   r4   r5   r@   rG   r|   r‡   r   r0   r.   r.   r.   r/   r@    s    



r@  c                   @  sL   e Zd Zd"dd„Zd#dd„Zd$dd„Zed%dd„ƒZd&dd„Zd'dd „Z	d!S )(ÚASTParametersÚargsúlist[ASTFunctionParameter]Úattrsr   r%   r&   c                 C  r   r(   )rQ  rS  )r-   rQ  rS  r.   r.   r/   r@   )  r  zASTParameters.__init__rA   rB   rC   c                 C  rw   r(   )r9   rP  rE   rQ  rS  rF   r.   r.   r/   rG   -  rx   zASTParameters.__eq__ry   c                 C  rz   r(   )r{   rQ  rS  rJ   r.   r.   r/   r|   2  rQ   zASTParameters.__hash__c                 C  rI   r(   )rQ  rJ   r.   r.   r/   Úfunction_params5  r=  zASTParameters.function_paramsrˆ   r   r"   c                 C  sz   g }|  d¡ d}| jD ]}|s|  d¡ d}|  t|ƒ¡ q|  d¡ t| jƒdkr8|  d¡ |  || jƒ¡ d |¡S )	NrÙ   Tú, FrÚ   r   r  rU   )r  rQ  r"   r:   rS  r…   )r-   rˆ   rŒ   r˜   r.  r.   r.   r/   r   9  s   





zASTParameters._stringifyr    r   r!   r#   r   r$   r   c                 C  s$  t |ƒ d}|}|jrt|tjƒs|j}q| dd¡}	 |dkrHt ¡ }||d< | jD ]}tjdddd}	|j	|	d||d ||	7 }q+||7 }n3|t 
d	d	¡7 }d}
| jD ]}|
sg|t 
d
d
¡7 }|t ¡ 7 }d}
|j	|d||d qU|t 
dd¡7 }t| jƒdkr|t ¡ 7 }| j 	|¡ d S d S )NFÚmulti_line_parameter_listr]   rU   T©ÚnoemphrŽ   r?  rÙ   ú,rT   rÚ   r   )r   rF  r9   r   Údesc_signatureÚgetÚdesc_parameterlistrQ  Údesc_parameterr0   r•   r	  r:   rS  )r-   r    r!   r#   r$   rV  Ú	test_nodeÚ	paramlistrA  rŽ   r˜   r.   r.   r/   r0   H  s<   



þz ASTParameters.describe_signatureN)rQ  rR  rS  r   r%   r&   rn   rœ   ©r%   rR  rŸ   r2   )
r3   r4   r5   r@   rG   r|   rq   rT  r   r0   r.   r.   r.   r/   rP  (  s    



rP  c                   @  sH   e Zd Zd!dd„Zd"dd„Zd#dd„Zd$dd„Zd%dd„Zd&dd„Zd S )'ÚASTDeclSpecsSimpleÚstorager"   ÚthreadLocalÚinlinerC   ÚrestrictÚvolatileÚconstrS  r   r%   r&   c                 C  s.   || _ || _|| _|| _|| _|| _|| _d S r(   )rb  rc  rd  re  rf  rg  rS  )r-   rb  rc  rd  re  rf  rg  rS  r.   r.   r/   r@   n  s   
zASTDeclSpecsSimple.__init__rA   rB   c                 C  sb   t |tƒstS | j|jko0| j|jko0| j|jko0| j|jko0| j|jko0| j|jko0| j	|j	kS r(   )
r9   ra  rE   rb  rc  rd  re  rf  rg  rS  rF   r.   r.   r/   rG   x  s   

ÿ
þ
ý
ü
û
ùzASTDeclSpecsSimple.__eq__ry   c                 C  s$   t | j| j| j| j| j| j| jfƒS r(   )r{   rb  rc  rd  re  rf  rg  rS  rJ   r.   r.   r/   r|   …  s   ùzASTDeclSpecsSimple.__hash__c              	   C  sT   |s| S t | jp
|j| jp|j| jp|j| jp|j| jp|j| jp#|j| j|j ƒS r(   )ra  rb  rc  rd  rf  rg  re  rS  rF   r.   r.   r/   Ú	mergeWith  s   





úzASTDeclSpecsSimple.mergeWithrˆ   r   c                 C  s   g }t | jƒdkr| || jƒ¡ | jr| | j¡ | jr#| | j¡ | jr+| d¡ | jr3| d¡ | jr;| d¡ | jrC| d¡ d 	|¡S )Nr   rd  re  rf  rg  r  )
r:   rS  r  rb  rc  rd  re  rf  rg  r…   r‹   r.   r.   r/   r   ›  s    




zASTDeclSpecsSimple._stringifyÚ	modifiersú
list[Node]c                 C  s¾   ddd„}t |ƒd	krt | jƒd	kr| t ¡ ¡ t ¡ }| j |¡ | |j	¡ | j
r2||| j
ƒ | jr;||| jƒ | jrC||d
ƒ | jrK||dƒ | jrS||dƒ | jr]||dƒ d S d S )Nri  rj  rS   r"   r%   r&   c                 S  s0   t | ƒdkr|  t ¡ ¡ |  t ||¡¡ d S rv   )r:   r  r   r	  r°   )ri  rS   r.   r.   r/   Ú_add®  s   z3ASTDeclSpecsSimple.describe_signature.<locals>._addr   rd  re  rf  rg  )ri  rj  rS   r"   r%   r&   )r:   rS  r  r   r	  r   r   r0   ÚextendÚchildrenrb  rc  rd  re  rf  rg  )r-   ri  rk  ÚtempNoder.   r.   r/   r0   ­  s&   



ÿz%ASTDeclSpecsSimple.describe_signatureN)rb  r"   rc  r"   rd  rC   re  rC   rf  rC   rg  rC   rS  r   r%   r&   rn   rœ   )rA   ra  r%   ra  rŸ   )ri  rj  r%   r&   )	r3   r4   r5   r@   rG   r|   rh  r   r0   r.   r.   r.   r/   ra  m  s    





ra  c                   @  s>   e Zd Zd"d
d„Zd#dd„Zd$dd„Zd%dd„Zd&dd „Zd!S )'ÚASTDeclSpecsÚouterr"   Ú	leftSpecsra  Ú
rightSpecsÚtrailingr8  r%   r&   c                 C  s,   || _ || _|| _| j | j¡| _|| _d S r(   )rp  rq  rr  rh  ÚallSpecsÚtrailingTypeSpec)r-   rp  rq  rr  rs  r.   r.   r/   r@   Ç  s
   
zASTDeclSpecs.__init__rA   rB   rC   c                 C  s>   t |tƒstS | j|jko| j|jko| j|jko| j|jkS r(   )r9   ro  rE   rp  rq  rr  ru  rF   r.   r.   r/   rG   Ó  s   

ÿ
þ
üzASTDeclSpecs.__eq__ry   c                 C  s   t | j| j| j| jfƒS r(   )r{   rp  rq  rr  ru  rJ   r.   r.   r/   r|   Ý  s   üzASTDeclSpecs.__hash__rˆ   r   c                 C  s   g }|| j ƒ}t|ƒdkr| |¡ | jrCt|ƒdkr | d¡ | || jƒ¡ t| jƒ}t|ƒdkrCt|ƒdkr>| d¡ | |¡ d |¡S ©Nr   r  rU   )rq  r:   r  ru  r"   rr  r…   )r-   rˆ   rŒ   ÚlÚrr.   r.   r/   r   å  s   






zASTDeclSpecs._stringifyr    r   r!   r#   r   r$   r   c                 C  sž   t |ƒ g }| j |¡ |D ]}||7 }q| jrKt|ƒdkr$|t ¡ 7 }| jj||||d g }| j |¡ t|ƒdkrB|t ¡ 7 }|D ]}||7 }qDd S d S )Nr   r?  )r   rq  r0   ru  r:   r   r	  rr  )r-   r    r!   r#   r$   ri  Úmr.   r.   r/   r0   õ  s&   
ÿ
ö	zASTDeclSpecs.describe_signatureN)
rp  r"   rq  ra  rr  ra  rs  r8  r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   ro  Æ  s    




ro  c                   @  s>   e Zd Zd#dd„Zd$dd„Zd%dd„Zd&dd„Zd'd d!„Zd"S )(ÚASTArrayÚstaticrC   rg  rf  re  ÚvlaÚsizer¢   r%   r&   c                 C  sL   || _ || _|| _|| _|| _|| _|r|d u sJ ‚|d ur"|r$J ‚d S d S r(   )r{  rg  rf  re  r|  r}  )r-   r{  rg  rf  re  r|  r}  r.   r.   r/   r@     s   ÿzASTArray.__init__rA   rB   c                 C  óV   t |tƒstS | j|jko*| j|jko*| j|jko*| j|jko*| j|jko*| j|jkS r(   )	r9   rz  rE   r{  rg  rf  re  r|  r}  rF   r.   r.   r/   rG     ó   

ÿ
þ
ý
ü
úzASTArray.__eq__ry   c                 C  s    t | j| j| j| j| j| jfƒS r(   )r{   r{  rg  rf  re  r|  r}  rJ   r.   r.   r/   r|   (  s   úzASTArray.__hash__rˆ   r   r"   c                 C  s„   g }| j r
| d¡ | jr| d¡ | jr| d¡ | jr"| d¡ | jr.dd |¡ d S | jr9| || jƒ¡ dd |¡ d S )	Nr{  re  rf  rg  ré   r  z*]rê   )r{  r  re  rf  rg  r|  r…   r}  )r-   rˆ   Úelr.   r.   r/   r   2  s   



zASTArray._stringifyr    r   r!   r#   r   r$   r   c                   s¾   t |ƒ |t dd¡7 }d‰ d‡ fd	d
„}| jr||dƒ‰ | jr%||dƒ‰ | jr-||dƒ‰ | jr5||dƒ‰ | jrA|t dd¡7 }n| jrUˆ rL|t 	¡ 7 }| j 
|d||¡ |t dd¡7 }d S )Nré   Fr    r   rS   r"   r%   rC   c                   s$   ˆ r| t  ¡ 7 } | t  ||¡7 } dS ©NT)r   r	  r°   ©r    rS   ©ÚaddSpacer.   r/   rk  H  s   z)ASTArray.describe_signature.<locals>._addr{  re  rf  rg  Ú*rT   rê   )r    r   rS   r"   r%   rC   )r   r   r•   r{  re  rf  rg  r|  r}  r	  r0   )r-   r    r!   r#   r$   rk  r.   rƒ  r/   r0   B  s&   



zASTArray.describe_signatureN)r{  rC   rg  rC   rf  rC   re  rC   r|  rC   r}  r¢   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   rz    s    




rz  c                   @  s2   e Zd Zeddd„ƒZeddd„ƒZdd	d
„ZdS )ÚASTDeclaratorr%   rr   c                 C  r'   r(   r)   rJ   r.   r.   r/   r7   `  r1   zASTDeclarator.namerR  c                 C  r'   r(   r)   rJ   r.   r.   r/   rT  d  r1   zASTDeclarator.function_paramsrC   c                 C  r'   r(   r)   rJ   r.   r.   r/   Úrequire_space_after_declSpecsh  rÍ   z+ASTDeclarator.require_space_after_declSpecsNr   r`  ro   )r3   r4   r5   rq   r7   rT  r‡  r.   r.   r.   r/   r†  _  s    r†  c                   @  sd   e Zd Zd)d	d
„Zd*dd„Zd+dd„Zed,dd„ƒZed-dd„ƒZd.dd„Z	d/dd„Z
d0d&d'„Zd(S )1ÚASTDeclaratorNameParamÚdeclIdrr   ÚarrayOpsúlist[ASTArray]rŽ   rP  r%   r&   c                 C  ó   || _ || _|| _d S r(   )r‰  rŠ  rŽ   )r-   r‰  rŠ  rŽ   r.   r.   r/   r@   m  ó   
zASTDeclaratorNameParam.__init__rA   rB   rC   c                 C  ó2   t |tƒstS | j|jko| j|jko| j|jkS r(   )r9   rˆ  rE   r‰  rŠ  rŽ   rF   r.   r.   r/   rG   s  ó   

ÿ
ýzASTDeclaratorNameParam.__eq__ry   c                 C  ó   t | j| j| jfƒS r(   )r{   r‰  rŠ  rŽ   rJ   r.   r.   r/   r|   |  ó   zASTDeclaratorNameParam.__hash__c                 C  rI   r(   ©r‰  rJ   r.   r.   r/   r7     r=  zASTDeclaratorNameParam.namerR  c                 C  ó   | j jS r(   )rŽ   rT  rJ   r.   r.   r/   rT  ƒ  ó   z&ASTDeclaratorNameParam.function_paramsc                 C  ó
   | j d uS r(   r’  rJ   r.   r.   r/   r‡  ‰  rª   z4ASTDeclaratorNameParam.require_space_after_declSpecsrˆ   r   r"   c                   sT   g }| j r| ˆ | j ƒ¡ | ‡ fdd„| jD ƒ¡ | jr%| ˆ | jƒ¡ d |¡S )Nc                 3  r‰   r(   r.   )r€   r  rŠ   r.   r/   r‚     rƒ   z4ASTDeclaratorNameParam._stringify.<locals>.<genexpr>rU   )r‰  r  rl  rŠ  rŽ   r…   r‹   r.   rŠ   r/   r   Œ  s   
z!ASTDeclaratorNameParam._stringifyr    r   r!   r#   r   r$   r   c                 C  s\   t |ƒ | jr| j ||||¡ | jD ]
}| ||||¡ q| jr,| j ||||¡ d S d S r(   )r   r‰  r0   rŠ  rŽ   )r-   r    r!   r#   r$   r  r.   r.   r/   r0   •  s   
ÿz)ASTDeclaratorNameParam.describe_signatureN)r‰  rr   rŠ  r‹  rŽ   rP  r%   r&   rn   rœ   r   r`  ro   rŸ   r2   ©r3   r4   r5   r@   rG   r|   rq   r7   rT  r‡  r   r0   r.   r.   r.   r/   rˆ  l  s    


	

	rˆ  c                   @  sV   e Zd Zd$dd„Zd%dd„Zd&dd„Zed'dd„ƒZd(dd„Zd)dd„Z	d*d!d"„Z
d#S )+ÚASTDeclaratorNameBitFieldr‰  rr   r}  r¢   r%   r&   c                 C  r   r(   )r‰  r}  )r-   r‰  r}  r.   r.   r/   r@   ¡  r  z"ASTDeclaratorNameBitField.__init__rA   rB   rC   c                 C  rw   r(   )r9   r—  rE   r‰  r}  rF   r.   r.   r/   rG   ¥  rx   z ASTDeclaratorNameBitField.__eq__ry   c                 C  rz   r(   )r{   r‰  r}  rJ   r.   r.   r/   r|   ª  rQ   z"ASTDeclaratorNameBitField.__hash__c                 C  rI   r(   r’  rJ   r.   r.   r/   r7   ­  r=  zASTDeclaratorNameBitField.namec                 C  r•  r(   r’  rJ   r.   r.   r/   r‡  ³  rª   z7ASTDeclaratorNameBitField.require_space_after_declSpecsrˆ   r   r"   c                 C  s>   g }| j r| || j ƒ¡ | d¡ | || jƒ¡ d |¡S )Nz : rU   )r‰  r  r}  r…   r‹   r.   r.   r/   r   ¶  s   

z$ASTDeclaratorNameBitField._stringifyr    r   r!   r#   r   r$   r   c                 C  s^   t |ƒ | jr| j ||||¡ |t ¡ 7 }|t dd¡7 }|t ¡ 7 }| j ||||¡ d S )Nú:)r   r‰  r0   r   r	  r•   r}  r,   r.   r.   r/   r0   ¾  s   z,ASTDeclaratorNameBitField.describe_signatureN)r‰  rr   r}  r¢   r%   r&   rn   rœ   r   ro   rŸ   r2   )r3   r4   r5   r@   rG   r|   rq   r7   r‡  r   r0   r.   r.   r.   r/   r—     s    




r—  c                   @  sd   e Zd Zd+dd„Zd,dd„Zd-dd„Zed.dd„ƒZed/dd„ƒZd0dd„Z	d1dd „Z
d2d(d)„Zd*S )3ÚASTDeclaratorPtrÚnextr†  re  rC   rf  rg  rS  r   r%   r&   c                 C  s*   |sJ ‚|| _ || _|| _|| _|| _d S r(   )rš  re  rf  rg  rS  )r-   rš  re  rf  rg  rS  r.   r.   r/   r@   Ê  s   
zASTDeclaratorPtr.__init__rA   rB   c                 C  sJ   t |tƒstS | j|jko$| j|jko$| j|jko$| j|jko$| j|jkS r(   )r9   r™  rE   rš  re  rf  rg  rS  rF   r.   r.   r/   rG   Ó  s   

ÿ
þ
ý
ûzASTDeclaratorPtr.__eq__ry   c                 C  s   t | j| j| j| j| jfƒS r(   )r{   rš  re  rf  rg  rS  rJ   r.   r.   r/   r|   Þ  s   zASTDeclaratorPtr.__hash__rr   c                 C  r“  r(   )rš  r7   rJ   r.   r.   r/   r7   á  r”  zASTDeclaratorPtr.namerR  c                 C  r“  r(   )rš  rT  rJ   r.   r.   r/   rT  å  r”  z ASTDeclaratorPtr.function_paramsc                 C  s*   | j p| jp| jpt| jƒdkp| j ¡ S rv   )rg  rf  re  r:   rS  rš  r‡  rJ   r.   r.   r/   r‡  é  s
   ÿþz.ASTDeclaratorPtr.require_space_after_declSpecsrˆ   r   r"   c                 C  sä   dg}|  || jƒ¡ t| jƒdkr | js| js| jr |  d¡ | jr(|  d¡ | jr8| jr3|  d¡ |  d¡ | jrK| jsA| jrF|  d¡ |  d¡ | js[| js[| js[t| jƒdkre| j ¡ re|  d¡ |  || jƒ¡ d |¡S )Nr…  r   r  re  rf  rg  rU   )	r  rS  r:   re  rf  rg  rš  r‡  r…   r‹   r.   r.   r/   r   î  s&    





 


zASTDeclaratorPtr._stringifyr    r   r!   r#   r   r$   r   c                 C  s   t |ƒ |t dd¡7 }| j |¡ t| jƒdkr(| js"| js"| jr(|t 	¡ 7 }dd	d
„}| jr5||dƒ | jrF| jrA|t 	¡ 7 }||dƒ | jrZ| jsO| jrU|t 	¡ 7 }||dƒ | jsj| jsj| jsjt| jƒdkru| j
 ¡ ru|t 	¡ 7 }| j
 ||||¡ d S )Nr…  r   r    r   rS   r"   r%   r&   c                 S  s   | t  ||¡7 } d S r(   )r   r°   r‚  r.   r.   r/   Ú	_add_anno  r‘  z6ASTDeclaratorPtr.describe_signature.<locals>._add_annore  rf  rg  )r    r   rS   r"   r%   r&   )r   r   r•   rS  r0   r:   re  rf  rg  r	  rš  r‡  )r-   r    r!   r#   r$   r›  r.   r.   r/   r0     s(    



 
z#ASTDeclaratorPtr.describe_signatureN)rš  r†  re  rC   rf  rC   rg  rC   rS  r   r%   r&   rn   rœ   r   r`  ro   rŸ   r2   r–  r.   r.   r.   r/   r™  É  s    

	


r™  c                   @  sd   e Zd Zd'dd„Zd(dd„Zd)dd„Zed*dd„ƒZed+dd„ƒZd,dd„Z	d-dd„Z
d.d$d%„Zd&S )/ÚASTDeclaratorParenÚinnerr†  rš  r%   r&   c                 C  ó    |sJ ‚|sJ ‚|| _ || _d S r(   )r  rš  )r-   r  rš  r.   r.   r/   r@     ó   
zASTDeclaratorParen.__init__rA   rB   rC   c                 C  rw   r(   )r9   rœ  rE   r  rš  rF   r.   r.   r/   rG   &  rx   zASTDeclaratorParen.__eq__ry   c                 C  rz   r(   )r{   r  rš  rJ   r.   r.   r/   r|   +  rQ   zASTDeclaratorParen.__hash__rr   c                 C  r“  r(   )r  r7   rJ   r.   r.   r/   r7   .  r”  zASTDeclaratorParen.namerR  c                 C  r“  r(   )r  rT  rJ   r.   r.   r/   rT  2  r”  z"ASTDeclaratorParen.function_paramsc                 C  rí   r  r.   rJ   r.   r.   r/   r‡  6  rï   z0ASTDeclaratorParen.require_space_after_declSpecsrˆ   r   r"   c                 C  r  r  )r  r  rš  r…   r‹   r.   r.   r/   r   9  r  zASTDeclaratorParen._stringifyr    r   r!   r#   r   r$   r   c                 C  sP   t |ƒ |t dd¡7 }| j ||||¡ |t dd¡7 }| j |d||¡ d S )NrÙ   rÚ   r^   )r   r   r•   r  r0   rš  r,   r.   r.   r/   r0   @  s
   z%ASTDeclaratorParen.describe_signatureN)r  r†  rš  r†  r%   r&   rn   rœ   r   r`  ro   rŸ   r2   r–  r.   r.   r.   r/   rœ    s    




rœ  c                   @  râ   )#ÚASTParenExprListr  r  r%   r&   c                 C  r¨   r(   )r  )r-   r  r.   r.   r/   r@   M  rª   zASTParenExprList.__init__rA   rB   rC   c                 C  rD   r(   )r9   r   rE   r  rF   r.   r.   r/   rG   P  rH   zASTParenExprList.__eq__ry   c                 C  r«   r(   )r{   r  rJ   r.   r.   r/   r|   U  rª   zASTParenExprList.__hash__rˆ   r   r"   c                   s"   ‡ fdd„| j D ƒ}dd |¡ S )Nc                   s   g | ]}ˆ |ƒ‘qS r.   r.   ©r€   ÚerŠ   r.   r/   Ú
<listcomp>Y  s    z/ASTParenExprList._stringify.<locals>.<listcomp>z(%s)rU  )r  r…   )r-   rˆ   r  r.   rŠ   r/   r   X  s   zASTParenExprList._stringifyr    r   r!   r#   r   r$   r   c                 C  sr   t |ƒ |t dd¡7 }d}| jD ]}|s$|t dd¡7 }|t ¡ 7 }nd}| ||||¡ q|t dd¡7 }d S )NrÙ   TrY  FrÚ   )r   r   r•   r  r	  r0   ©r-   r    r!   r#   r$   r˜   r¢  r.   r.   r/   r0   \  s   
z#ASTParenExprList.describe_signatureN)r  r  r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r   L  s    



r   c                   @  s>   e Zd Zddd„Zd dd„Zd!dd„Zd"dd„Zd#dd„ZdS )$ÚASTBracedInitListr  r  ÚtrailingCommarC   r%   r&   c                 C  r   r(   )r  r¦  )r-   r  r¦  r.   r.   r/   r@   l  r  zASTBracedInitList.__init__rA   rB   c                 C  rw   r(   )r9   r¥  rE   r  r¦  rF   r.   r.   r/   rG   p  rx   zASTBracedInitList.__eq__ry   c                 C  rz   r(   )r{   r  r¦  rJ   r.   r.   r/   r|   u  rQ   zASTBracedInitList.__hash__rˆ   r   r"   c                   s8   d  ‡ fdd„| jD ƒ¡}| jrdnd}d|› |› dS )NrU  c                 3  r‰   r(   r.   r¡  rŠ   r.   r/   r‚   y  rƒ   z/ASTBracedInitList._stringify.<locals>.<genexpr>rY  rU   Ú{Ú})r…   r  r¦  )r-   rˆ   r  r¦  r.   rŠ   r/   r   x  s   zASTBracedInitList._stringifyr    r   r!   r#   r   r$   r   c                 C  sˆ   t |ƒ |t dd¡7 }d}| jD ]}|s$|t dd¡7 }|t ¡ 7 }nd}| ||||¡ q| jr:|t dd¡7 }|t dd¡7 }d S )Nr§  TrY  Fr¨  )r   r   r•   r  r	  r0   r¦  r¤  r.   r.   r/   r0   }  s   
z$ASTBracedInitList.describe_signatureN)r  r  r¦  rC   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r¥  k  s    



r¥  c                   @  sB   e Zd Z	d d!dd	„Zd"dd„Zd#dd„Zd$dd„Zd%dd„ZdS )&ÚASTInitializerTr§   ú!ASTBracedInitList | ASTExpressionÚ	hasAssignrC   r%   r&   c                 C  r   r(   ©r§   r«  )r-   r§   r«  r.   r.   r/   r@     s   
zASTInitializer.__init__rA   rB   c                 C  rw   r(   )r9   r©  rE   r§   r«  rF   r.   r.   r/   rG   ”  rx   zASTInitializer.__eq__ry   c                 C  rz   r(   )r{   r§   r«  rJ   r.   r.   r/   r|   ™  rQ   zASTInitializer.__hash__rˆ   r   r"   c                 C  s   || j ƒ}| jrd| S |S )Nz = r¬  )r-   rˆ   Úvalr.   r.   r/   r   œ  s   
zASTInitializer._stringifyr    r   r!   r#   r   r$   r   c                 C  sL   t |ƒ | jr|t ¡ 7 }|t dd¡7 }|t ¡ 7 }| j |d||¡ d S )Nú=rT   )r   r«  r   r	  r•   r§   r0   r,   r.   r.   r/   r0   £  s   z!ASTInitializer.describe_signatureN©T)r§   rª  r«  rC   r%   r&   rn   rœ   rŸ   r2   r´   r.   r.   r.   r/   r©  Ž  s    ÿ


r©  c                   @  sn   e Zd Zd,dd„Zd-dd„Zd.dd„Zed/dd„ƒZd0dd„Zed1dd„ƒZ	d2d d!„Z
d3d"d#„Zd4d)d*„Zd+S )5r   Ú	declSpecsro  Údeclr†  r%   r&   c                 C  rž  r(   )r°  r±  )r-   r°  r±  r.   r.   r/   r@   ®  rŸ  zASTType.__init__rA   rB   rC   c                 C  rw   r(   )r9   r   rE   r°  r±  rF   r.   r.   r/   rG   ´  rx   zASTType.__eq__ry   c                 C  rz   r(   )r{   r°  r±  rJ   r.   r.   r/   r|   ¹  rQ   zASTType.__hash__rr   c                 C  r“  r(   )r±  r7   rJ   r.   r.   r/   r7   ¼  r”  zASTType.namer}   rD  r"   r$   r   c                 C  ó   |  ¡  |¡S r(   ©Úget_full_nested_namer‡   rH  r.   r.   r/   r‡   À  rû   zASTType.get_idrR  c                 C  r“  r(   )r±  rT  rJ   r.   r.   r/   rT  Ã  r”  zASTType.function_paramsrˆ   r   c                 C  sR   g }|| j ƒ}| |¡ | j ¡ rt|ƒdkr| d¡ | || jƒ¡ d |¡S rv  )r°  r  r±  r‡  r:   r…   )r-   rˆ   rŒ   r°  r.   r.   r/   r   Ç  s   



zASTType._stringifyc                 C  s   | j jrdS dS )NÚtypedefÚtype)r°  ru  rJ   r.   r.   r/   Úget_type_declaration_prefixÐ  s   z#ASTType.get_type_declaration_prefixr    r   r!   r#   r   c                 C  sd   t |ƒ | j |d||¡ | j ¡ r!tt| jƒƒdkr!|t ¡ 7 }|dkr'd}| j ||||¡ d S )NrT   r   r^   )	r   r°  r0   r±  r‡  r:   r"   r   r	  r,   r.   r.   r/   r0   Ö  s   
zASTType.describe_signatureN)r°  ro  r±  r†  r%   r&   rn   rœ   r   rM  r`  rŸ   rp   r2   )r3   r4   r5   r@   rG   r|   rq   r7   r‡   rT  r   r·  r0   r.   r.   r.   r/   r   ­  s    





	r   c                   @  sV   e Zd Zd'dd„Zd(dd„Zd)dd„Zed*dd„ƒZd+dd„Zd,dd„Z	d-d$d%„Z
d&S ).r   r¶  r   Úinitr©  r%   r&   c                 C  r   r(   )r¶  r¸  )r-   r¶  r¸  r.   r.   r/   r@   å  r  zASTTypeWithInit.__init__rA   rB   rC   c                 C  rw   r(   )r9   r   rE   r¶  r¸  rF   r.   r.   r/   rG   é  rx   zASTTypeWithInit.__eq__ry   c                 C  rz   r(   )r{   r¶  r¸  rJ   r.   r.   r/   r|   î  rQ   zASTTypeWithInit.__hash__rr   c                 C  r“  r(   )r¶  r7   rJ   r.   r.   r/   r7   ñ  r”  zASTTypeWithInit.namer}   rD  r"   r$   r   c                 C  s   | j  |||¡S r(   )r¶  r‡   rH  r.   r.   r/   r‡   õ  rQ   zASTTypeWithInit.get_idrˆ   r   c                 C  s4   g }|  || jƒ¡ | jr|  || jƒ¡ d |¡S )NrU   )r  r¶  r¸  r…   r‹   r.   r.   r/   r   ø  s
   
zASTTypeWithInit._stringifyr    r   r!   r#   r   c                 C  s:   t |ƒ | j ||||¡ | jr| j ||||¡ d S d S r(   )r   r¶  r0   r¸  r,   r.   r.   r/   r0   ÿ  s
   ÿz"ASTTypeWithInit.describe_signatureN)r¶  r   r¸  r©  r%   r&   rn   rœ   r   rM  rŸ   r2   r    r.   r.   r.   r/   r   ä  s    




r   c                   @  sD   e Zd Z		d!d"d	d
„Zd#dd„Zd$dd„Zd%dd„Zd&dd„Zd S )'ÚASTMacroParameterFrA  úASTNestedName | NonerC  rC   Úvariadicr%   r&   c                 C  rŒ  r(   )rA  rC  r»  )r-   rA  rC  r»  r.   r.   r/   r@     r  zASTMacroParameter.__init__rA   rB   c                 C  rŽ  r(   )r9   r¹  rE   rA  rC  r»  rF   r.   r.   r/   rG     r  zASTMacroParameter.__eq__ry   c                 C  r  r(   )r{   rA  rC  r»  rJ   r.   r.   r/   r|     r‘  zASTMacroParameter.__hash__rˆ   r   r"   c                 C  s(   | j rdS | jr|| jƒd S || jƒS rI  )rC  r»  rA  r®   r.   r.   r/   r     s
   
zASTMacroParameter._stringifyr    r   r!   r#   r   r$   r   c                 C  s\   t |ƒ | jr|t dd¡7 }d S | jr"t| ƒ}|t ||¡7 }d S | jj||||d d S rK  )	r   rC  r   r•   r»  r"   r`   rA  r0   )r-   r    r!   r#   r$   r7   r.   r.   r/   r0   "  s   z$ASTMacroParameter.describe_signatureN)FF)rA  rº  rC  rC   r»  rC   r%   r&   rn   rœ   rŸ   rN  r´   r.   r.   r.   r/   r¹    s    ÿ

	
r¹  c                   @  sV   e Zd Zd&dd„Zd'dd„Zd(dd„Zed)dd„ƒZd*dd„Zd+dd„Z	d,d#d$„Z
d%S )-r   rš   rr   rQ  úlist[ASTMacroParameter] | Noner%   r&   c                 C  r   r(   )rš   rQ  )r-   rš   rQ  r.   r.   r/   r@   /  r  zASTMacro.__init__rA   rB   rC   c                 C  rw   r(   )r9   r   rE   rš   rQ  rF   r.   r.   r/   rG   3  rx   zASTMacro.__eq__ry   c                 C  rz   r(   )r{   rš   rQ  rJ   r.   r.   r/   r|   8  rQ   zASTMacro.__hash__c                 C  rI   r(   )rš   rJ   r.   r.   r/   r7   ;  r=  zASTMacro.namer}   rD  r"   r$   r   c                 C  r²  r(   r³  rH  r.   r.   r/   r‡   ?  rû   zASTMacro.get_idrˆ   r   c                 C  sl   g }|  || jƒ¡ | jd ur1|  d¡ d}| jD ]}|s"|  d¡ d}|  ||ƒ¡ q|  d¡ d |¡S )NrÙ   TrU  FrÚ   rU   )r  rš   rQ  r…   )r-   rˆ   rŒ   r˜   rA  r.   r.   r/   r   B  s   





zASTMacro._stringifyr    r   r!   r#   r   c                 C  sr   t |ƒ | j ||||¡ | jd u rd S t ¡ }| jD ]}tjdddd}|j|d||d ||7 }q||7 }d S )NrU   TrW  rŽ   r?  )r   rš   r0   rQ  r   r\  r]  )r-   r    r!   r#   r$   r_  rA  rŽ   r.   r.   r/   r0   P  s   


zASTMacro.describe_signatureN)rš   rr   rQ  r¼  r%   r&   rn   rœ   r   rM  rŸ   r2   r    r.   r.   r.   r/   r   .  s    




r   c                   @  óH   e Zd Zd"dd„Zd#d
d„Zd$dd„Zd%dd„Zd&dd„Zd'dd „Zd!S )(r   r7   rr   r%   r&   c                 C  r¨   r(   rM   r?   r.   r.   r/   r@   _  rª   zASTStruct.__init__rA   rB   rC   c                 C  rD   r(   )r9   r   rE   r7   rF   r.   r.   r/   rG   b  rH   zASTStruct.__eq__ry   c                 C  r«   r(   rÊ   rJ   r.   r.   r/   r|   g  rª   zASTStruct.__hash__r}   rD  r"   r$   r   c                 C  r²  r(   r³  rH  r.   r.   r/   r‡   j  rû   zASTStruct.get_idrˆ   r   c                 C  rË   r(   rM   r®   r.   r.   r/   r   m  rª   zASTStruct._stringifyr    r   r!   r#   r   c                 C  ó    t |ƒ | jj||||d d S r>  ©r   r7   r0   r,   r.   r.   r/   r0   p  ó   zASTStruct.describe_signatureNrÐ   rn   rœ   rM  rŸ   r2   rO  r.   r.   r.   r/   r   ^  rà   r   c                   @  r½  )(r   r7   rr   r%   r&   c                 C  r¨   r(   rM   r?   r.   r.   r/   r@   w  rª   zASTUnion.__init__rA   rB   rC   c                 C  rD   r(   )r9   r   rE   r7   rF   r.   r.   r/   rG   z  rH   zASTUnion.__eq__ry   c                 C  r«   r(   rÊ   rJ   r.   r.   r/   r|     rª   zASTUnion.__hash__r}   rD  r"   r$   r   c                 C  r²  r(   r³  rH  r.   r.   r/   r‡   ‚  rû   zASTUnion.get_idrˆ   r   c                 C  rË   r(   rM   r®   r.   r.   r/   r   …  rª   zASTUnion._stringifyr    r   r!   r#   r   c                 C  r¾  r>  r¿  r,   r.   r.   r/   r0   ˆ  rÀ  zASTUnion.describe_signatureNrÐ   rn   rœ   rM  rŸ   r2   rO  r.   r.   r.   r/   r   v  rà   r   c                   @  r½  )(r   r7   rr   r%   r&   c                 C  r¨   r(   rM   r?   r.   r.   r/   r@     rª   zASTEnum.__init__rA   rB   rC   c                 C  rD   r(   )r9   r   rE   r7   rF   r.   r.   r/   rG   ’  rH   zASTEnum.__eq__ry   c                 C  r«   r(   rÊ   rJ   r.   r.   r/   r|   —  rª   zASTEnum.__hash__r}   rD  r"   r$   r   c                 C  r²  r(   r³  rH  r.   r.   r/   r‡   š  rû   zASTEnum.get_idrˆ   r   c                 C  rË   r(   rM   r®   r.   r.   r/   r     rª   zASTEnum._stringifyr    r   r!   r#   r   c                 C  r¾  r>  r¿  r,   r.   r.   r/   r0      rÀ  zASTEnum.describe_signatureNrÐ   rn   rœ   rM  rŸ   r2   rO  r.   r.   r.   r/   r   Ž  rà   r   c                   @  sH   e Zd Zd&d	d
„Zd'dd„Zd(dd„Zd)dd„Zd*dd„Zd+d#d$„Zd%S ),r   r7   rr   r¸  úASTInitializer | NonerS  r   r%   r&   c                 C  rŒ  r(   )r7   r¸  rS  )r-   r7   r¸  rS  r.   r.   r/   r@   §  r  zASTEnumerator.__init__rA   rB   rC   c                 C  rŽ  r(   )r9   r   rE   r7   r¸  rS  rF   r.   r.   r/   rG   ­  r  zASTEnumerator.__eq__ry   c                 C  r  r(   )r{   r7   r¸  rS  rJ   r.   r.   r/   r|   ¶  r‘  zASTEnumerator.__hash__r}   rD  r"   r$   r   c                 C  r²  r(   r³  rH  r.   r.   r/   r‡   ¹  rû   zASTEnumerator.get_idrˆ   r   c                 C  s\   g }|  || jƒ¡ t| jƒdkr|  d¡ |  || jƒ¡ | jr)|  || jƒ¡ d |¡S rv  )r  r7   r:   rS  r¸  r…   r‹   r.   r.   r/   r   ¼  s   

zASTEnumerator._stringifyr    r   r!   r#   r   c                 C  s`   t |ƒ | j ||||¡ t| jƒdkr |t ¡ 7 }| j |¡ | jr.| j |d||¡ d S d S )Nr   rT   )r   r7   r0   r:   rS  r   r	  r¸  r,   r.   r.   r/   r0   Æ  s   ÿz ASTEnumerator.describe_signatureN)r7   rr   r¸  rÁ  rS  r   r%   r&   rn   rœ   rM  rŸ   r2   rO  r.   r.   r.   r/   r   ¦  s    


	


r   c                   @  st   e Zd Z	d0d1dd„Zd2dd„Zd3dd„Zed4dd„ƒZed5dd„ƒZd6d7dd„Z	d8d d!„Z
d9d$d%„Zd:d-d.„Zd/S );ÚASTDeclarationFrD  r"   ÚdirectiveTypeú
str | NonerG  ú&DeclarationType | ASTFunctionParameterÚ	semicolonrC   r%   r&   c                 C  s.   || _ || _|| _|| _d | _d | _d | _d S r(   )rD  rÃ  rG  rÆ  r$   ÚenumeratorScopedSymbolÚ_newest_id_cache)r-   rD  rÃ  rG  rÆ  r.   r.   r/   r@   Ò  s   
zASTDeclaration.__init__rA   rB   c                 C  r~  r(   )	r9   rÂ  rE   rD  rÃ  rG  rÆ  r$   rÇ  rF   r.   r.   r/   rG   â  r  zASTDeclaration.__eq__c                 C  s   t | j| j| j ¡ | jƒS r(   )rÂ  rD  rÃ  rG  ÚclonerÆ  rJ   r.   r.   r/   rÉ  î  s   
ÿzASTDeclaration.clonerr   c                 C  s   t t| jƒ}|jS r(   )r   r   rG  r7   ©r-   r±  r.   r.   r/   r7   ò  s   zASTDeclaration.nameú!list[ASTFunctionParameter] | Nonec                 C  s    | j dkrd S tt| jƒ}|jS )NÚfunction)rD  r   r   rG  rT  rÊ  r.   r.   r/   rT  ÷  s   
zASTDeclaration.function_paramsTr}   ry   rE  c                 C  sH   | j dkr| jr| jj ||¡S | j || j | j¡}|r"t| | S |S )NÚ
enumerator)rD  rÇ  rG  r‡   r$   r	   )r-   r}   rE  Úid_r.   r.   r/   r‡   þ  s   zASTDeclaration.get_idc                 C  s   | j d u r|  td¡| _ | j S r  )rÈ  r‡   r
   rJ   r.   r.   r/   Úget_newest_id  s   
zASTDeclaration.get_newest_idrˆ   r   c                 C  s   || j ƒ}| jr|d7 }|S )Nú;)rG  rÆ  r‹   r.   r.   r/   r     s   
zASTDeclaration._stringifyr    r   r!   r#   r   Úoptionsúdict[str, bool]c                 C  s\  t |ƒ | js	J ‚d|d< t ¡ }d|_| jj |d< ||7 }| jdv r%np| jdkr9|t dd¡7 }|t ¡ 7 }n\| jdkrM|t dd¡7 }|t ¡ 7 }nH| jdkra|t dd¡7 }|t ¡ 7 }n4| jd	kru|t d	d	¡7 }|t ¡ 7 }n | jd
kr“t	t
| jƒ}| ¡ }|t ||¡7 }|t ¡ 7 }nt‚| j |||| j¡ | jr¬|t dd¡7 }d S d S )NTÚis_multilineÚ
declaratorÚadd_permalink>   ÚmacroÚmemberrÌ  ÚstructÚunionÚenumrÍ  r¶  rÐ  )r   r$   r   Údesc_signature_lineÚsphinx_line_typeÚisRedeclarationrD  r°   r	  r   r   rG  r·  r;   r0   rÆ  r•   )r-   r    r!   r#   rÑ  ÚmainDeclNoder±  rR   r.   r.   r/   r0     s>   






ÿz!ASTDeclaration.describe_signatureNrL  )
rD  r"   rÃ  rÄ  rG  rÅ  rÆ  rC   r%   r&   rn   )r%   rÂ  r   )r%   rË  r¯  )r}   ry   rE  rC   r%   r"   rp   rŸ   )
r    r   r!   r"   r#   r   rÑ  rÒ  r%   r&   )r3   r4   r5   r@   rG   rÉ  rq   r7   rT  r‡   rÏ  r   r0   r.   r.   r.   r/   rÂ  Ñ  s    þ


	
rÂ  )UÚ
__future__r   r<   rk   Útypingr   r   r   r   Údocutilsr   Úsphinxr   Úsphinx.domains.c._idsr	   r
   Úsphinx.util.cfamilyr   r   r   r   r   r   Údocutils.nodesr   r   r   Úsphinx.domains.c._symbolr   Úsphinx.environmentr   r   r   Ú__annotations__r   r6   rr   r¢   r¥   r¦   r¶   r¾   rÆ   rÉ   rÒ   rá   rã   rç   rì   rö   rø   rý   r  r
  r  r  r  r  r5  r6  r8  r9  r;  r@  rP  ra  ro  rz  r†  rˆ  r—  r™  rœ  r   r¥  r©  r   r   r¹  r   r   r   r   r   rÂ  r.   r.   r.   r/   Ú<module>   sˆ    ÿ	<[!		**$ EYHQ4)U.#7#'0+