
    -PhU                   v   U d dl mZ d dlZd dl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mZ d dlmZmZmZmZ er&d dlmZ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mZ ed         Z de!d<    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&          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 d0 d1e-          Z2 G d2 d3e%          Z3 G d4 d5e%          Z4 G d6 d7e%          Z5 G d8 d9e%          Z6 G d: d;e%          Z7 G d< d=e%          Z8 G d> d?e"          Z9 G d@ dAe%          Z: G dB dCe%          Z; G dD dEe"          Z< G dF dGe<          Z= G dH dIe<          Z> G dJ dKe"          Z? G dL dMe"          Z@ G dN dOe          ZA G dP dQe"          ZB G dR dSe"          ZC G dT dUe"          ZD G dV dWeD          ZE G dX dYeD          ZF G dZ d[eD          ZG G d\ d]eD          ZH G d^ d_e          ZI G d` dae"          ZJ G db dce"          ZK G dd dee"          ZL G df dge"          ZM G dh die"          ZN G dj dke"          ZO G dl dme"          ZP G dn doe"          ZQ G dp dqe"          ZR G dr dse"          ZS G dt due          ZTdS )v    )annotationsN)TYPE_CHECKINGUnioncast)nodes)addnodes)
_id_prefix_max_id)ASTBaseBaseASTBaseParenExprList$UnsupportedMultiCharacterCharLiteralverify_description_mode)Any	TypeAlias)ElementNodeTextElement)Symbol)BuildEnvironment)ASTAttributeListStringifyTransform)	ASTStructASTUnionASTEnumASTEnumeratorASTTypeASTTypeWithInitASTMacror   DeclarationTypec                      e Zd ZddZdS )ASTBasesignoder   modestrenvr   symbolr   returnNonec                :    t          t          |                     NNotImplementedErrorreprselfr"   r#   r%   r&   s        U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/c/_ast.pydescribe_signaturezASTBase.describe_signature*   s     "$t**---    N
r"   r   r#   r$   r%   r   r&   r   r'   r(   )__name__
__module____qualname__r1    r2   r0   r!   r!   )   s(        . . . . . .r2   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#dZ
ed!d            ZdS )$ASTIdentifiernamer$   r'   r(   c                    t          |t                    rt          |          dk    rt          t	          j        |          | _        |d         dk    | _        d S )Nr   @)
isinstancer$   lenAssertionErrorsysinternr:   is_anonymousr/   r:   s     r0   __init__zASTIdentifier.__init__5   sO    $$$ 	!D		Q  Jt$$	 GsNr2   otherobjectboolc                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r9   NotImplementedr:   r/   rE   s     r0   __eq__zASTIdentifier.__eq__=   )    %// 	"!!yEJ&&r2   intc                8    t          | j        | j        f          S r*   )hashr:   rB   r/   s    r0   __hash__zASTIdentifier.__hash__B   s    TY 12333r2   c                    | j         S r*   )rB   rP   s    r0   is_anonzASTIdentifier.is_anonE   s      r2   c                    | j         S r*   r:   rP   s    r0   __str__zASTIdentifier.__str__J   
    yr2   c                "    | j         rdn| j        S )N[anonymous])rB   r:   rP   s    r0   get_display_stringz ASTIdentifier.get_display_stringM   s     $ 1@}}ty@r2   	transformr   c                <     ||                                            S r*   )rZ   r/   r[   s     r0   
_stringifyzASTIdentifier._stringifyP   s    y0022333r2   r"   r   r#   r%   r   prefixr&   r   c                   t          |           | j        rt          j        d          }nt          j        | j        | j                  }|dk    rG|| j        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 t          d|z            )NrY   )textmarkType c
identifier)	refdomainreftype	reftargetmodname	classnamezc:parent_key
lastIsName
noneIsNameUnknown description mode: %s)	r   rB   r   desc_sig_namer:   pending_xrefget_lookup_key	desc_name	Exception)
r/   r"   r#   r%   r_   r&   nodetarget_textpnode	name_nodes
             r0   r1   z ASTIdentifier.describe_signatureS   s    	 %%% 	@)}===DD)$)TY??D: 49,K)$%  E %+$9$9$;$;E.!TMEuGGG\!! *,,IIy GGG\!!tOGGG:TABBBr2   c                H    t          j        dt          d           | j        S )NzJ`ASTIdentifier.identifier` is deprecated, use `ASTIdentifier.name` instead   )
stacklevel)warningswarnDeprecationWarningr:   rP   s    r0   re   zASTIdentifier.identifierw   s.    X	
 	
 	
 	

 yr2   N)r:   r$   r'   r(   rE   rF   r'   rG   r'   rM   r'   rG   r'   r$   r[   r   r'   r$   )r"   r   r#   r$   r%   r   r_   r$   r&   r   r'   r(   )r4   r5   r6   rD   rK   rQ   rS   rV   rZ   r^   r1   propertyre   r7   r2   r0   r9   r9   4   s        + + + +' ' ' '
4 4 4 4! ! ! !
   A A A A4 4 4 4"C "C "C "CH    X  r2   r9   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 )$ASTNestedNamenameslist[ASTIdentifier]rootedrG   r'   r(   c                L    t          |          dk    sJ || _        || _        d S Nr   )r>   r   r   )r/   r   r   s      r0   rD   zASTNestedName.__init__   s'    5zzA~~~~
r2   rE   rF   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r   r   rJ   s     r0   rK   zASTNestedName.__eq__   s7    %// 	"!!zU[(HT[EL-HHr2   rM   c                8    t          | j        | j        f          S r*   )rO   r   r   rP   s    r0   rQ   zASTNestedName.__hash__   s    TZ-...r2   c                    | S r*   r7   rP   s    r0   r:   zASTNestedName.name   s    r2   versionr$   c                J    d                     d | j        D                       S )N.c              3  4   K   | ]}t          |          V  d S r*   )r$   ).0ns     r0   	<genexpr>z'ASTNestedName.get_id.<locals>.<genexpr>   s(      331A333333r2   joinr   r/   r   s     r0   get_idzASTNestedName.get_id   s%    xx33
333333r2   r[   r   c                l    d                     fd| j        D                       }| j        rd|z   S |S )Nr   c              3  .   K   | ]} |          V  d S r*   r7   )r   r   r[   s     r0   r   z+ASTNestedName._stringify.<locals>.<genexpr>   s+      88yy||888888r2   )r   r   r   r/   r[   ress    ` r0   r^   zASTNestedName._stringify   sD    hh8888TZ88888; 	9Jr2   r"   r   r#   r%   r   r&   r   c                   t          |           |dk    r{| j        rd}t          |          t          t          | j                            D ]?}|dk    rd}t          |          | j        |         }|                    |||d|           @d S |dk    r^| j        rJ t          |                       t          | j                  dk    sJ | j        d                             |d|d|           d S |dv rkd}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 ]Z}|
|         }|	s|t          j        dd          z  }|dz  }d}	t          |          }|r|                    |d|||           ||z  }[|d
k    r[t          | j                  dk    r|t          j        dd          z  }||z  }| j        d                             |||d|           d S d S t          d|z            )Nrl   zCan this happen?r   r   rc   param   >   markNamerb   rk   Trk   Frb   rm   )r   r   r?   r   Textranger>   r   r1   r$   r   desc_addnamedesc_sig_punctuationrr   )r/   r"   r#   r%   r&   unreachableir   r_   firstr   destident	txt_idents                 r0   r1   z ASTNestedName.describe_signature   s    	 %%%<{ +0$[1113tz??++ E E66"4K(555JqM$$WdCVDDDDE E W__{--CII---tz??a''''JqM,,WlCVTTTTT;;; FE'+|';';DJssOOE D|##,..{ D#<''CJJ!OOx<S#FFFGGH9#sCCCD3u::&& 	$ 	$a "H9#sCCCDcMFJJ	 T,,T:sFFSSS)#|##tz??Q&&H9#sCCCDtOG
211'4b&QQQQQ	 $# :TABBBr2   N)r   r   r   rG   r'   r(   r}   r~   r'   r   r   rM   r'   r$   r   r3   r4   r5   r6   rD   rK   rQ   r   r:   r   r^   r1   r7   r2   r0   r   r      s           
I I I I
/ / / /    X4 4 4 4   9C 9C 9C 9C 9C 9Cr2   r   c                      e Zd ZdS )ASTExpressionNr4   r5   r6   r7   r2   r0   r   r              Dr2   r   c                      e Zd ZdS )
ASTLiteralNr   r7   r2   r0   r   r      r   r2   r   c                  6    e Zd ZddZddZdd
ZddZddZdS )ASTBooleanLiteralvaluerG   r'   r(   c                    || _         d S r*   r   )r/   r   s     r0   rD   zASTBooleanLiteral.__init__       


r2   rE   rF   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r   rJ   s     r0   rK   zASTBooleanLiteral.__eq__   s*    %!233 	"!!zU[((r2   rM   c                *    t          | j                  S r*   )rO   r   rP   s    r0   rQ   zASTBooleanLiteral.__hash__       DJr2   r[   r   r$   c                    | j         rdS dS )Ntruefalser   r]   s     r0   r^   zASTBooleanLiteral._stringify   s    : 	67r2   r"   r   r#   r%   r   r&   r   c                T    t          |           }|t          j        ||          z  }d S r*   )r$   r   desc_sig_keywordr/   r"   r#   r%   r&   txts         r0   r1   z$ASTBooleanLiteral.describe_signature   s*     $ii8,S#666r2   N)r   rG   r'   r(   r}   r~   r   r3   r4   r5   r6   rD   rK   rQ   r^   r1   r7   r2   r0   r   r      sx           ) ) ) )
          7 7 7 7 7 7r2   r   c                  6    e Z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   r/   r   s     r0   rD   zASTNumberLiteral.__init__      			r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r   rJ   s     r0   rK   zASTNumberLiteral.__eq__  *    %!122 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   rO   r   rP   s    r0   rQ   zASTNumberLiteral.__hash__      DIr2   r[   r   c                    | j         S r*   r   r]   s     r0   r^   zASTNumberLiteral._stringify  rW   r2   r"   r   r#   r%   r   r&   r   c                T    t          |           }|t          j        ||          z  }d S r*   )r$   r   desc_sig_literal_numberr   s         r0   r1   z#ASTNumberLiteral.describe_signature  *     $ii83C===r2   Nr   r$   r'   r(   r}   r~   r   r3   r   r7   r2   r0   r   r     x           ' ' ' '
      > > > > > >r2   r   c                  6    e Zd ZddZdd
ZddZddZddZdS )ASTCharLiteralr_   r$   r   r'   r(   c                    || _         || _        |                                                    d          }t	          |          dk    rt          |          | _        d S t          |          )Nzunicode-escaper   )r_   r   encodedecoder>   ordr   r   )r/   r_   r   decodeds       r0   rD   zASTCharLiteral.__init__  s\    	++--&&'788w<<1WDJJJ6w???r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r_   r   rJ   s     r0   rK   zASTCharLiteral.__eq__#  s7    %00 	"!!{el*HtzU[/HHr2   rM   c                8    t          | j        | j        f          S r*   )rO   r_   r   rP   s    r0   rQ   zASTCharLiteral.__hash__(  s    T[$*-...r2   r[   r   c                T    | j         d| j        z   dz   S | j         dz   | j        z   dz   S )N')r_   r   r]   s     r0   r^   zASTCharLiteral._stringify+  s4    ;?S((;$ty0366r2   r"   r   r#   r%   r   r&   r   c                T    t          |           }|t          j        ||          z  }d S r*   )r$   r   desc_sig_literal_charr   s         r0   r1   z!ASTCharLiteral.describe_signature1  s*     $ii81#s;;;r2   N)r_   r$   r   r$   r'   r(   r}   r~   r   r3   r   r7   r2   r0   r   r     s        @ @ @ @I I I I
/ / / /7 7 7 7< < < < < <r2   r   c                  6    e Z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     r0   rD   zASTStringLiteral.__init__9  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r   rJ   s     r0   rK   zASTStringLiteral.__eq__<  r   r2   rM   c                *    t          | j                  S r*   r   rP   s    r0   rQ   zASTStringLiteral.__hash__A  r   r2   r[   r   c                    | j         S r*   r   r]   s     r0   r^   zASTStringLiteral._stringifyD  rW   r2   r"   r   r#   r%   r   r&   r   c                T    t          |           }|t          j        ||          z  }d S r*   )r$   r   desc_sig_literal_stringr   s         r0   r1   z#ASTStringLiteral.describe_signatureG  r   r2   Nr   r}   r~   r   r3   r   r7   r2   r0   r   r   8  r   r2   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 )!ASTIdExpressionr:   r   r'   r(   c                    || _         d S r*   rU   rC   s     r0   rD   zASTIdExpression.__init__O  s    			r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r:   rJ   s     r0   rK   zASTIdExpression.__eq__S  )    %11 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   rO   r:   rP   s    r0   rQ   zASTIdExpression.__hash__X  r   r2   r[   r   r$   c                "     || j                   S r*   rU   r]   s     r0   r^   zASTIdExpression._stringify[      y###r2   r   c                6    | j                             |          S r*   )r:   r   r   s     r0   r   zASTIdExpression.get_id^      y(((r2   r"   r   r#   r%   r   r&   r   c                @    | j                             ||||           d S r*   )r:   r1   r.   s        r0   r1   z"ASTIdExpression.describe_signaturea  s&     		$$WdC@@@@@r2   Nr:   r   r'   r(   r}   r~   r   r   r3   	r4   r5   r6   rD   rK   rQ   r^   r   r1   r7   r2   r0   r   r   N  s           ' ' ' '
   $ $ $ $) ) ) )A A A A A Ar2   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 )!ASTParenExprexprr   r'   r(   c                    || _         d S r*   r   r/   r   s     r0   rD   zASTParenExpr.__init__h  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r   rJ   s     r0   rK   zASTParenExpr.__eq__k  s)    %.. 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   rO   r   rP   s    r0   rQ   zASTParenExpr.__hash__p  r   r2   r[   r   r$   c                .    d || j                   z   dz   S N()r   r]   s     r0   r^   zASTParenExpr._stringifys      YYty)))C//r2   r   c                6    | j                             |          S r*   )r   r   r   s     r0   r   zASTParenExpr.get_idv  r   r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S r  r   r   r   r1   r.   s        r0   r1   zASTParenExpr.describe_signaturey  R     	80c:::	$$WdC@@@80c:::r2   Nr   r   r'   r(   r}   r~   r   r   r3   r   r7   r2   r0   r   r   g  s           ' ' ' '
   0 0 0 0) ) ) ); ; ; ; ; ;r2   r   c                      e Zd ZdS )ASTPostfixOpNr   r7   r2   r0   r  r    r   r2   r  c                  6    e Z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  )r/   r  s     r0   rD   zASTPostfixCallExpr.__init__      r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r  rI   r  rJ   s     r0   rK   zASTPostfixCallExpr.__eq__  s*    %!344 	"!!x59$$r2   rM   c                *    t          | j                  S r*   )rO   r  rP   s    r0   rQ   zASTPostfixCallExpr.__hash__      DH~~r2   r[   r   r$   c                "     || j                   S r*   r  r]   s     r0   r^   zASTPostfixCallExpr._stringify  s    y"""r2   r"   r   r#   r%   r   r&   r   c                @    | j                             ||||           d S r*   )r  r1   r.   s        r0   r1   z%ASTPostfixCallExpr.describe_signature  s&     	##GT3?????r2   N)r  r  r'   r(   r}   r~   r   r3   r   r7   r2   r0   r  r    s~           % % % %
   # # # #@ @ @ @ @ @r2   r  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTPostfixArrayr   r   r'   r(   c                    || _         d S r*   r   r   s     r0   rD   zASTPostfixArray.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r  rI   r   rJ   s     r0   rK   zASTPostfixArray.__eq__  r   r2   rM   c                *    t          | j                  S r*   r  rP   s    r0   rQ   zASTPostfixArray.__hash__  r   r2   r[   r   r$   c                .    d || j                   z   dz   S N[]r   r]   s     r0   r^   zASTPostfixArray._stringify  r  r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S r!  r
  r.   s        r0   r1   z"ASTPostfixArray.describe_signature  r  r2   Nr  r}   r~   r   r3   r   r7   r2   r0   r  r    sx           ' ' ' '
   0 0 0 0; ; ; ; ; ;r2   r  c                      e Zd ZddZddZdS )ASTPostfixIncr[   r   r'   r$   c                    dS Nz++r7   r]   s     r0   r^   zASTPostfixInc._stringify      tr2   r"   r   r#   r%   r   r&   r   r(   c                6    |t          j        dd          z  }d S r(  r   desc_sig_operatorr.   s        r0   r1   z ASTPostfixInc.describe_signature       	8-dD999r2   Nr   r3   r4   r5   r6   r^   r1   r7   r2   r0   r&  r&    <           : : : : : :r2   r&  c                      e Zd ZddZddZdS )ASTPostfixDecr[   r   r'   r$   c                    dS Nz--r7   r]   s     r0   r^   zASTPostfixDec._stringify  r)  r2   r"   r   r#   r%   r   r&   r   r(   c                6    |t          j        dd          z  }d S r3  r+  r.   s        r0   r1   z ASTPostfixDec.describe_signature  r-  r2   Nr   r3   r.  r7   r2   r0   r1  r1    r/  r2   r1  c                  6    e Z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*   rU   rC   s     r0   rD   z"ASTPostfixMemberOfPointer.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r6  rI   r:   rJ   s     r0   rK   z ASTPostfixMemberOfPointer.__eq__  s*    %!:;; 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   r   rP   s    r0   rQ   z"ASTPostfixMemberOfPointer.__hash__  r   r2   r[   r   r$   c                (    d || j                   z   S )N->rU   r]   s     r0   r^   z$ASTPostfixMemberOfPointer._stringify  s    ii	****r2   r"   r   r#   r%   r   r&   r   c                p    |t          j        dd          z  }| j                            |d||           d S )Nr;  rl   )r   r,  r:   r1   r.   s        r0   r1   z,ASTPostfixMemberOfPointer.describe_signature  s=     	8-dD999	$$WlCHHHHHr2   Nr   r}   r~   r   r3   r   r7   r2   r0   r6  r6    s~           ' ' ' '
   + + + +I I I I I Ir2   r6  c                  6    e Zd ZddZddZddZddZddZdS ) ASTPostfixExprr_   r   	postFixeslist[ASTPostfixOp]r'   r(   c                "    || _         || _        d S r*   )r_   r?  )r/   r_   r?  s      r0   rD   zASTPostfixExpr.__init__  s    "r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r>  rI   r_   r?  rJ   s     r0   rK   zASTPostfixExpr.__eq__  s7    %00 	"!!{el*Pt~/PPr2   rM   c                8    t          | j        | j        f          S r*   )rO   r_   r?  rP   s    r0   rQ   zASTPostfixExpr.__hash__  s    T[$.1222r2   r[   r   r$   c                r    d                      | j                  gfd| j        D                       S )Nrc   c              3  .   K   | ]} |          V  d S r*   r7   )r   pr[   s     r0   r   z,ASTPostfixExpr._stringify.<locals>.<genexpr>  s+      33qiill333333r2   )r   r_   r?  r]   s    `r0   r^   zASTPostfixExpr._stringify  sK    wwIdk""
3333DN333
   	r2   r"   r   r#   r%   r   r&   r   c                    | j                             ||||           | j        D ]}|                    ||||           d S r*   )r_   r1   r?  )r/   r"   r#   r%   r&   rF  s         r0   r1   z!ASTPostfixExpr.describe_signature  sX     	&&wc6BBB 	= 	=A  $V<<<<	= 	=r2   N)r_   r   r?  r@  r'   r(   r}   r~   r   r3   r   r7   r2   r0   r>  r>    s|        # # # #Q Q Q Q
3 3 3 3   = = = = = =r2   r>  c                  6    e Zd ZddZddZddZddZddZdS )ASTUnaryOpExpropr$   r   r   r'   r(   c                "    || _         || _        d S r*   rJ  r   )r/   rJ  r   s      r0   rD   zASTUnaryOpExpr.__init__  s    			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   rI  rI   rJ  r   rJ   s     r0   rK   zASTUnaryOpExpr.__eq__  s7    %00 	"!!w%(">tyEJ'>>r2   rM   c                8    t          | j        | j        f          S r*   )rO   rJ  r   rP   s    r0   rQ   zASTUnaryOpExpr.__hash__  s    TWdi()))r2   r[   r   c                    | j         d         dv r| j         dz    || j                  z   S | j          || j                  z   S )Nr   cn rL  r]   s     r0   r^   zASTUnaryOpExpr._stringify  sI    71:7S=99TY#7#7777YYty1111r2   r"   r   r#   r%   r   r&   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   rP  )rJ  r   r   desc_sig_spacer,  r   r1   r.   s        r0   r1   z!ASTUnaryOpExpr.describe_signature  s     71:x0$'BBBGx.000GGx1$'47CCCG	$$WdC@@@@@r2   N)rJ  r$   r   r   r'   r(   r}   r~   r   r3   r   r7   r2   r0   rI  rI    s~           ? ? ? ?
* * * *2 2 2 2A A A A A Ar2   rI  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTSizeofTypetypr   r'   r(   c                    || _         d S r*   rV  r/   rV  s     r0   rD   zASTSizeofType.__init__  r  r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   rU  rI   rV  rJ   s     r0   rK   zASTSizeofType.__eq__   s)    %// 	"!!x59$$r2   rM   c                *    t          | j                  S r*   rO   rV  rP   s    r0   rQ   zASTSizeofType.__hash__%  r  r2   r[   r   r$   c                .    d || j                   z   dz   S )Nzsizeof(r  rX  r]   s     r0   r^   zASTSizeofType._stringify(  s    99TX...44r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nsizeofr  r  r   r   r   rV  r1   r.   s        r0   r1   z ASTSizeofType.describe_signature+  si     	8,Xx@@@80c:::##GT3???80c:::r2   NrV  r   r'   r(   r}   r~   r   r3   r   r7   r2   r0   rU  rU    sx           % % % %
   5 5 5 5; ; ; ; ; ;r2   rU  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTSizeofExprr   r   r'   r(   c                    || _         d S r*   r   r   s     r0   rD   zASTSizeofExpr.__init__5  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   rc  rI   r   rJ   s     r0   rK   zASTSizeofExpr.__eq__8  rL   r2   rM   c                *    t          | j                  S r*   r  rP   s    r0   rQ   zASTSizeofExpr.__hash__=  r   r2   r[   r   r$   c                (    d || j                   z   S )Nzsizeof r   r]   s     r0   r^   zASTSizeofExpr._stringify@  s    99TY////r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr_  )r   r   rS  r   r1   r.   s        r0   r1   z ASTSizeofExpr.describe_signatureC  sP     	8,Xx@@@8*,,,	$$WdC@@@@@r2   Nr  r}   r~   r   r3   r   r7   r2   r0   rc  rc  4  s~           ' ' ' '
   0 0 0 0A A A A A Ar2   rc  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTAlignofExprrV  r   r'   r(   c                    || _         d S r*   rX  rY  s     r0   rD   zASTAlignofExpr.__init__L  r  r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   rj  rI   rV  rJ   s     r0   rK   zASTAlignofExpr.__eq__O  s)    %00 	"!!x59$$r2   rM   c                *    t          | j                  S r*   r\  rP   s    r0   rQ   zASTAlignofExpr.__hash__T  r  r2   r[   r   r$   c                .    d || j                   z   dz   S )Nzalignof(r  rX  r]   s     r0   r^   zASTAlignofExpr._stringifyW  s    IIdh///#55r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nalignofr  r  r`  r.   s        r0   r1   z!ASTAlignofExpr.describe_signatureZ  si     	8,Y	BBB80c:::##GT3???80c:::r2   Nra  r}   r~   r   r3   r   r7   r2   r0   rj  rj  K  sx           % % % %
   6 6 6 6; ; ; ; ; ;r2   rj  c                  6    e Zd ZddZddZddZddZddZdS ) ASTCastExprrV  r   r   r   r'   r(   c                "    || _         || _        d S r*   )rV  r   )r/   rV  r   s      r0   rD   zASTCastExpr.__init__h  s    			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   rr  rI   rV  r   rJ   s     r0   rK   zASTCastExpr.__eq__l  s7    %-- 	"!!x59$@ej)@@r2   rM   c                8    t          | j        | j        f          S r*   )rO   rV  r   rP   s    r0   rQ   zASTCastExpr.__hash__q  s    TXty)***r2   r[   r   r$   c                    dg}|                      || j                  d || j                  f           d                    |          S Nr  r  rc   )extendrV  r   r   r   s      r0   r^   zASTCastExpr._stringifyt  sW    e

IdhIdi  
 	 	 	
 wws||r2   r"   r   r#   r%   r   r&   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            ||||           d S r  )r   r   rV  r1   r   r.   s        r0   r1   zASTCastExpr.describe_signature}  sp     	80c:::##GT3???80c:::	$$WdC@@@@@r2   N)rV  r   r   r   r'   r(   r}   r~   r   r3   r   r7   r2   r0   rr  rr  g  s           A A A A
+ + + +   A A A A A Ar2   rr  c                  6    e Zd ZddZddZddZddZddZdS ) ASTBinOpExprexprslist[ASTExpression]ops	list[str]r'   r(   c                    t          |          dk    sJ t          |          t          |          dz   k    sJ || _        || _        d S Nr   r   r>   r|  r~  r/   r|  r~  s      r0   rD   zASTBinOpExpr.__init__  H    5zzA~~~~5zzSXX\))))
r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r{  rI   r|  r~  rJ   s     r0   rK   zASTBinOpExpr.__eq__  s7    %.. 	"!!zU[(BTX-BBr2   rM   c                8    t          | j        | j        f          S r*   rO   r|  r~  rP   s    r0   rQ   zASTBinOpExpr.__hash__      TZ*+++r2   r[   r   r$   c           
         || j         d                   g}t          dt          | j                             D ]=}|                    d| j        |dz
           d || j         |                   f           >d                    |          S Nr   r   rQ  rc   r|  r   r>   rx  r~  r   r/   r[   r   r   s       r0   r^   zASTBinOpExpr._stringify      yA''(q#dj//** 	 	AJJQ	$*Q-((	     wws||r2   r"   r   r#   r%   r   r&   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   r   az
r|  r1   r   r>   r   rS  r~  r   r   r,  r/   r"   r#   r%   r&   r   rJ  s          r0   r1   zASTBinOpExpr.describe_signature      	
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r2   Nr|  r}  r~  r  r'   r(   r}   r~   r   r3   r   r7   r2   r0   r{  r{               C C C C
, , , ,	 	 	 	I I I I I Ir2   r{  c                  6    e Zd ZddZddZddZddZddZdS ) ASTAssignmentExprr|  r}  r~  r  r'   r(   c                    t          |          dk    sJ t          |          t          |          dz   k    sJ || _        || _        d S r  r  r  s      r0   rD   zASTAssignmentExpr.__init__  r  r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r|  r~  rJ   s     r0   rK   zASTAssignmentExpr.__eq__  s8    %!233 	"!!zU[(BTX-BBr2   rM   c                8    t          | j        | j        f          S r*   r  rP   s    r0   rQ   zASTAssignmentExpr.__hash__  r  r2   r[   r   r$   c           
         || j         d                   g}t          dt          | j                             D ]=}|                    d| j        |dz
           d || j         |                   f           >d                    |          S r  r  r  s       r0   r^   zASTAssignmentExpr._stringify  r  r2   r"   r   r#   r%   r   r&   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 r  r  r  s          r0   r1   z$ASTAssignmentExpr.describe_signature  r  r2   Nr  r}   r~   r   r3   r   r7   r2   r0   r  r    r  r2   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 ) ASTFallbackExprr   r$   r'   r(   c                    || _         d S r*   r   r   s     r0   rD   zASTFallbackExpr.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r  rI   r   rJ   s     r0   rK   zASTFallbackExpr.__eq__  r   r2   rM   c                *    t          | j                  S r*   r  rP   s    r0   rQ   zASTFallbackExpr.__hash__  r   r2   r[   r   c                    | j         S r*   r   r]   s     r0   r^   zASTFallbackExpr._stringify  rW   r2   r   c                *    t          | j                  S r*   )r$   r   r   s     r0   r   zASTFallbackExpr.get_id  s    49~~r2   r"   r   r#   r%   r   r&   r   c                J    |t          j        | j        | j                  z  }d S r*   )r   literalr   r.   s        r0   r1   z"ASTFallbackExpr.describe_signature  s"     	5=DI666r2   N)r   r$   r'   r(   r}   r~   r   r   r3   r   r7   r2   r0   r  r    s           ' ' ' '
         7 7 7 7 7 7r2   r  c                      e Zd ZdS )ASTTrailingTypeSpecNr   r7   r2   r0   r  r    r   r2   r  c                  6    e Zd ZddZdd	ZddZddZddZdS )ASTTrailingTypeSpecFundamentalr   r  r'   r(   c                >    t          |          dk    sJ || _        d S r   )r>   r   )r/   r   s     r0   rD   z'ASTTrailingTypeSpecFundamental.__init__  s     5zzQ


r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r  rI   r   rJ   s     r0   rK   z%ASTTrailingTypeSpecFundamental.__eq__  s*    %!?@@ 	"!!zU[((r2   rM   c                *    t          | j                  S r*   )rO   r   rP   s    r0   rQ   z'ASTTrailingTypeSpecFundamental.__hash__  r   r2   r[   r   r$   c                6    d                     | j                  S )NrQ  r   r]   s     r0   r^   z)ASTTrailingTypeSpecFundamental._stringify  s    xx
###r2   r"   r   r#   r%   r   r&   r   c                    d}| j         D ]5}|s|t          j                    z  }nd}|t          j        ||          z  }6d S )NTF)r   r   rS  desc_sig_keyword_type)r/   r"   r#   r%   r&   r   r   s          r0   r1   z1ASTTrailingTypeSpecFundamental.describe_signature	  s_      	< 	<A 82444x5a;;;GG	< 	<r2   N)r   r  r'   r(   r}   r~   r   r3   r   r7   r2   r0   r  r    sx           ) ) ) )
       $ $ $ $	< 	< 	< 	< 	< 	<r2   r  c                  N    e Zd ZddZddZddZedd            ZddZd dZ	dS )!ASTTrailingTypeSpecNamer_   r$   
nestedNamer   r'   r(   c                "    || _         || _        d S r*   )r_   r  )r/   r_   r  s      r0   rD   z ASTTrailingTypeSpecName.__init__  s    $r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r_   r  rJ   s     r0   rK   zASTTrailingTypeSpecName.__eq__  s9    %!899 	"!!{el*Rt%BR/RRr2   rM   c                8    t          | j        | j        f          S r*   )rO   r_   r  rP   s    r0   rQ   z ASTTrailingTypeSpecName.__hash__  s    T[$/2333r2   c                    | j         S r*   )r  rP   s    r0   r:   zASTTrailingTypeSpecName.name"  s
    r2   r[   r   c                    g }| j         r|                    | j         df           |                     || j                             d                    |          S )NrQ  rc   )r_   rx  appendr  r   r   s      r0   r^   z"ASTTrailingTypeSpecName._stringify&  sX    ; 	+JJS)***

99T_--...wws||r2   r"   r   r#   r%   r   r&   r   c                    | j         r8|t          j        | j         | j                   z  }|t          j                    z  }| j                            ||||           d S Nr&   )r_   r   r   rS  r  r1   r.   s        r0   r1   z*ASTTrailingTypeSpecName.describe_signature-  sa     ; 	1x0dkJJJGx.000G**7D#f*MMMMMr2   N)r_   r$   r  r   r'   r(   r}   r~   r   r   r3   )
r4   r5   r6   rD   rK   rQ   r   r:   r^   r1   r7   r2   r0   r  r    s        % % % %S S S S
4 4 4 4    X   N N N N N Nr2   r  c                  @    e Zd ZdddZd dZd!dZd"dZd#dZd$dZdS )%ASTFunctionParameterFargASTTypeWithInit | NoneellipsisrG   r'   r(   c                "    || _         || _        d S r*   )r  r  )r/   r  r  s      r0   rD   zASTFunctionParameter.__init__7  s     r2   rE   rF   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r  r  rJ   s     r0   rK   zASTFunctionParameter.__eq__;  s8    %!566 	"!!x59$H%.)HHr2   rM   c                8    t          | j        | j        f          S r*   )rO   r  r  rP   s    r0   rQ   zASTFunctionParameter.__hash__@  s    TXt}-...r2   r   
objectTyper$   r&   r   c                D    |j         j                            |d          S )NF)prefixed)parentdeclarationr   r/   r   r  r&   s       r0   r   zASTFunctionParameter.get_idC  s     }(//%/HHHr2   r[   r   c                4    | j         rdS  || j                  S N...)r  r  r]   s     r0   r^   zASTFunctionParameter._stringifyG  s#    = 	'59TX&&&r2   r"   r   r#   r%   r   c                    t          |           | j        r|t          j        dd          z  }d S | j                            ||||           d S Nr  r  )r   r  r   r   r  r1   r.   s        r0   r1   z'ASTFunctionParameter.describe_signatureM  s]     	 %%%= 	Kx4UEBBBGGGH''s6'JJJJJr2   NF)r  r  r  rG   r'   r(   r}   r~   r   rM   r  r$   r&   r   r'   r$   r   
r"   r   r#   r$   r%   r   r&   r   r'   r(   	r4   r5   r6   rD   rK   rQ   r   r^   r1   r7   r2   r0   r  r  6  s        ! ! ! ! !I I I I
/ / / /I I I I' ' ' 'K K K K K Kr2   r  c                  N    e Zd ZddZddZddZedd            Zd dZd!dZ	dS )"ASTParametersargslist[ASTFunctionParameter]attrsr   r'   r(   c                "    || _         || _        d S r*   )r  r  )r/   r  r  s      r0   rD   zASTParameters.__init__X  s     	


r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r  r  rJ   s     r0   rK   zASTParameters.__eq__^  s7    %// 	"!!yEJ&D4:+DDr2   rM   c                8    t          | j        | j        f          S r*   )rO   r  r  rP   s    r0   rQ   zASTParameters.__hash__c  s    TY
+,,,r2   c                    | j         S r*   )r  rP   s    r0   function_paramszASTParameters.function_paramsf  s
    yr2   r[   r   r$   c                d   dg}d}| j         D ]=}|s|                    d           d}|                    t          |                     >|                    d           t          | j                  dk    r%|                    d || j                  f           d                    |          S )	Nr  T, Fr  r   rQ  rc   )r  r  r$   r>   r  rx  r   )r/   r[   r   r   r  s        r0   r^   zASTParameters._stringifyj  s    e 	 	A !

4   EJJs1vv

3tz??aJJYYtz223444wws||r2   r"   r   r#   r%   r   r&   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  }t          | j                  dk    r2|t          j                    z  }| j        	                    |           d S d S )NFmulti_line_parameter_listrk   rc   Tnoemphr   r  r  ,rb   r  r   )r   r  r=   r   desc_signaturegetdesc_parameterlistr  desc_parameterr1   r   rS  r>   r  )r/   r"   r#   r%   r&   r  	test_node	paramlistr  r   r   s              r0   r1   z ASTParameters.describe_signaturew  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tz??ax.000GJ))'22222  r2   N)r  r  r  r   r'   r(   r}   r~   r'   r  r   r3   )
r4   r5   r6   rD   rK   rQ   r   r  r^   r1   r7   r2   r0   r  r  W  s           E E E E
- - - -    X   %3 %3 %3 %3 %3 %3r2   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$   threadLocalinlinerG   restrictvolatileconstr  r   r'   r(   c                h    || _         || _        || _        || _        || _        || _        || _        d S r*   )r  r  r  r  r  r  r  )r/   r  r  r  r  r  r  r  s           r0   rD   zASTDeclSpecsSimple.__init__  s:     &  



r2   rE   rF   c                   t          |t                    st          S | 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*   )
r=   r  rI   r  r  r  r  r  r  r  rJ   s     r0   rK   zASTDeclSpecsSimple.__eq__  s    %!344 	"!!LEM) * E$55*u|+* /* /	*
 
ek)* 
ek)	
r2   rM   c           	     t    t          | j        | j        | j        | j        | j        | j        | j        f          S r*   )rO   r  r  r  r  r  r  r  rP   s    r0   rQ   zASTDeclSpecsSimple.__hash__  s=    LKMMJJ
   	r2   c           
         |s| S t          | 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  rJ   s     r0   	mergeWithzASTDeclSpecsSimple.mergeWith  sw     	K!L)EM1 1K'5<M+U^J%%+M+U^J$
 
 	
r2   r[   r   c                
   g }t          | j                  dk    r#|                     || j                             | j        r|                    | j                   | j        r|                    | j                   | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d           d	                    |          S )Nr   r  r  r  r  rQ  )
r>   r  r  r  r  r  r  r  r  r   r   s      r0   r^   zASTDeclSpecsSimple._stringify  s    tz??aJJyy,,---< 	%JJt|$$$ 	)JJt'(((; 	!JJx   = 	#JJz"""= 	#JJz""": 	 JJwxx}}r2   	modifiers
list[Node]c                :   dd}t          |          dk    r>t          | j                  dk    r&|                    t          j                               t          j                    }| j                            |           |                    |j	                   | j
        r ||| j
                   | j        r ||| j                   | j        r ||d	           | j        r ||d
           | j        r ||d           | j        r ||d           d S d S )Nr  r  ra   r$   r'   r(   c                    t          |           dk    r&|                     t          j                               |                     t          j        ||                     d S r   )r>   r  r   rS  r   )r  ra   s     r0   _addz3ASTDeclSpecsSimple.describe_signature.<locals>._add  sW    9~~""  !8!:!:;;;X6tTBBCCCCCr2   r   r  r  r  r  )r  r  ra   r$   r'   r(   )r>   r  r  r   rS  r   r   r1   rx  childrenr  r  r  r  r  r  )r/   r  r  	temp_nodes       r0   r1   z%ASTDeclSpecsSimple.describe_signature  sU   	D 	D 	D 	D
 y>>Q3tz??a#7#7X466777%''	
%%i000+,,,< 	*DDL))) 	.DD,---; 	&DH%%%= 	(DJ'''= 	(DJ''': 	%DG$$$$$	% 	%r2   N)r  r$   r  r$   r  rG   r  rG   r  rG   r  rG   r  r   r'   r(   r}   r~   )rE   r  r'   r  r   )r  r  r'   r(   )	r4   r5   r6   rD   rK   rQ   r  r^   r1   r7   r2   r0   r  r    s           $
 
 
 
	 	 	 	
 
 
 
   $% % % % % %r2   r  c                  6    e Z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)r/   r  r  r  r  s        r0   rD   zASTDeclSpecs.__init__  s@     
"$00AA (r2   rE   rF   rG   c                    t          |t                    st          S | j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r  r  r  r	  rJ   s     r0   rK   zASTDeclSpecs.__eq__  sf    %.. 	"!!J%+% @%/1@5#33@ %)??		
r2   rM   c                P    t          | j        | j        | j        | j        f          S r*   )rO   r  r  r  r	  rP   s    r0   rQ   zASTDeclSpecs.__hash__  s.    JNO!	
   	r2   r[   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   rQ  rc   )r  r>   r  r	  r$   r  r   )r/   r[   r   lrs        r0   r^   zASTDeclSpecs._stringify$  s    Idn%%q66A::JJqMMM  	3xx!||

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

1wws||r2   r"   r   r#   r%   r   r&   r   c                   t          |           g }| j                            |           |D ]}||z  }| j        rt	          |          dk    r|t          j                    z  }| j                            ||||           g }| j                            |           t	          |          dk    r|t          j                    z  }|D ]	}||z  }d S d S )Nr   r  )r   r  r1   r	  r>   r   rS  r  )r/   r"   r#   r%   r&   r  ms          r0   r1   zASTDeclSpecs.describe_signature4  s    	 %%% "	)))444 	 	AqLGG  		9~~!!82444!44WdCPV4WWWIO..y9999~~!!82444  1		 		 r2   N)
r  r$   r  r  r  r  r  r  r'   r(   r}   r~   r   r3   r   r7   r2   r0   r  r    sx        ) ) ) )
 
 
 
            r2   r  c                  6    e Zd ZddZddZd dZd!dZd"dZdS )#ASTArraystaticrG   r  r  r  vlasizer   r'   r(   c                v    || _         || _        || _        || _        || _        || _        |r|J ||rJ d S d S r*   )r  r  r  r  r  r  )r/   r  r  r  r  r  r  s          r0   rD   zASTArray.__init__O  s[     
  	 	 <<<NNN Nr2   rE   rF   c                    t          |t                    st          S | 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*   )	r=   r  rI   r  r  r  r  r  r  rJ   s     r0   rK   zASTArray.__eq__c  s    %** 	"!!K5<' (
ek)(/( /( EI%	(
 	UZ'	
r2   rM   c                h    t          | j        | j        | j        | j        | j        | j        f          S r*   )rO   r  r  r  r  r  r  rP   s    r0   rQ   zASTArray.__hash__o  s7    KJMMHI
   	r2   r[   r   r$   c                   g }| j         r|                    d           | j        r|                    d           | j        r|                    d           | j        r|                    d           | j        rdd                    |          z   dz   S | j        r#|                     || j                             dd                    |          z   dz   S )	Nr  r  r  r  r"  rQ  z*]r#  )r  r  r  r  r  r  r   r  )r/   r[   els      r0   r^   zASTArray._stringifyy  s    ; 	 IIh= 	"IIj!!!= 	"IIj!!!: 	IIg8 	,"%,,Y 	,IIii	**+++SXXb\\!C''r2   r"   r   r#   r%   r   r&   r   c                   t          |           |t          j        dd          z  }ddfd	}| j        r ||d
          | j        r ||d          | j        r ||d          | j        r ||d          | j        r|t          j        dd          z  }n<| j        r5r|t          j	                    z  }| j        
                    |d||           |t          j        dd          z  }d S )Nr"  Fr"   r   ra   r$   r'   rG   c                h    r| t          j                    z  } | t          j        ||          z  } dS NT)r   rS  r   )r"   ra   	add_spaces     r0   r  z)ASTArray.describe_signature.<locals>._add  s:     582444x0t<<<G4r2   r  r  r  r  *rb   r#  )r"   r   ra   r$   r'   rG   )r   r   r   r  r  r  r  r  r  rS  r1   )r/   r"   r#   r%   r&   r  r  s         @r0   r1   zASTArray.describe_signature  s<    	 %%%80c:::		 	 	 	 	 	 ; 	0Wh//I= 	2Wj11I= 	2Wj11I: 	/Wg..I8 	Kx4S#>>>GGY 	K 582444I((*c6JJJ80c:::r2   N)r  rG   r  rG   r  rG   r  rG   r  rG   r  r   r'   r(   r}   r~   r   r3   r   r7   r2   r0   r  r  N  sx           (

 

 

 

   ( ( ( ( ; ; ; ; ; ;r2   r  c                  F    e Zd Zed	d            Zed
d            ZddZdS )ASTDeclaratorr'   r   c                :    t          t          |                     r*   r+   rP   s    r0   r:   zASTDeclarator.name      !$t**---r2   r  c                :    t          t          |                     r*   r+   rP   s    r0   r  zASTDeclarator.function_params  r$  r2   rG   c                :    t          t          |                     r*   r+   rP   s    r0   require_space_after_declSpecsz+ASTDeclarator.require_space_after_declSpecs  s    !$t**---r2   Nr   r  r   )r4   r5   r6   r   r:   r  r'  r7   r2   r0   r"  r"    sf        . . . X. . . . X.. . . . . .r2   r"  c                  n    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Z
d(dZd S ))ASTDeclaratorNameParamdeclIdr   arrayOpslist[ASTArray]r   r  r'   r(   c                0    || _         || _        || _        d S r*   )r*  r+  r   )r/   r*  r+  r   s       r0   rD   zASTDeclaratorNameParam.__init__  s      


r2   rE   rF   rG   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r*   )r=   r)  rI   r*  r+  r   rJ   s     r0   rK   zASTDeclaratorNameParam.__eq__  sN    %!788 	"!!K5<' */*
ek)	
r2   rM   c                D    t          | j        | j        | j        f          S r*   )rO   r*  r+  r   rP   s    r0   rQ   zASTDeclaratorNameParam.__hash__  s    T[$-<===r2   c                    | j         S r*   r*  rP   s    r0   r:   zASTDeclaratorNameParam.name  
    {r2   r  c                    | j         j        S r*   )r   r  rP   s    r0   r  z&ASTDeclaratorNameParam.function_params      z))r2   c                    | j         d uS r*   r1  rP   s    r0   r'  z4ASTDeclaratorNameParam.require_space_after_declSpecs      {$&&r2   r[   r   r$   c                &   g }| j         r#|                     | j                              |                    fd| j        D                        | j        r#|                     | j                             d                    |          S )Nc              3  .   K   | ]} |          V  d S r*   r7   )r   rJ  r[   s     r0   r   z4ASTDeclaratorNameParam._stringify.<locals>.<genexpr>  s+      99R99R==999999r2   rc   )r*  r  rx  r+  r   r   r   s    ` r0   r^   z!ASTDeclaratorNameParam._stringify  s    ; 	/JJyy--...

99994=999999: 	.JJyy,,---wws||r2   r"   r   r#   r%   r   r&   r   c                    t          |           | j        r| j                            ||||           | j        D ]}|                    ||||           | j        r| j                            ||||           d S d S r*   )r   r*  r1   r+  r   )r/   r"   r#   r%   r&   rJ  s         r0   r1   z)ASTDeclaratorNameParam.describe_signature  s     	 %%%; 	GK**7D#vFFF- 	> 	>B!!'4f====: 	FJ))'4fEEEEE	F 	Fr2   N)r*  r   r+  r,  r   r  r'   r(   r}   r~   r   r  r   r   r3   r4   r5   r6   rD   rK   rQ   r   r:   r  r'  r^   r1   r7   r2   r0   r)  r)    s           
 
 
 
> > > >    X * * * X*
' ' ' '   	F 	F 	F 	F 	F 	Fr2   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 )$ASTDeclaratorNameBitFieldr*  r   r  r   r'   r(   c                "    || _         || _        d S r*   )r*  r  )r/   r*  r  s      r0   rD   z"ASTDeclaratorNameBitField.__init__  s    			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r<  rI   r*  r  rJ   s     r0   rK   z ASTDeclaratorNameBitField.__eq__  s8    %!:;; 	"!!{el*FtyEJ/FFr2   rM   c                8    t          | j        | j        f          S r*   )rO   r*  r  rP   s    r0   rQ   z"ASTDeclaratorNameBitField.__hash__  s    T[$),---r2   c                    | j         S r*   r1  rP   s    r0   r:   zASTDeclaratorNameBitField.name  r2  r2   c                    | j         d uS r*   r1  rP   s    r0   r'  z7ASTDeclaratorNameBitField.require_space_after_declSpecs  r6  r2   r[   r   r$   c                    g }| j         r#|                     || j                              |                    d || j                  f           d                    |          S )Nz : rc   )r*  r  rx  r  r   r   s      r0   r^   z$ASTDeclaratorNameBitField._stringify   sb    ; 	/JJyy--...

E99TY//0111wws||r2   r"   r   r#   r%   r   r&   r   c                .   t          |           | j        r| j                            ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )N:)r   r*  r1   r   rS  r   r  r.   s        r0   r1   z,ASTDeclaratorNameBitField.describe_signature  s     	 %%%; 	GK**7D#vFFF8*,,,80c:::8*,,,	$$WdC@@@@@r2   N)r*  r   r  r   r'   r(   r}   r~   r   r   r   r3   )r4   r5   r6   rD   rK   rQ   r   r:   r'  r^   r1   r7   r2   r0   r<  r<    s           G G G G
. . . .    X
' ' ' '   	A 	A 	A 	A 	A 	Ar2   r<  c                  n    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Z
d*d!Zd"S )+ASTDeclaratorPtrnextr"  r  rG   r  r  r  r   r'   r(   c                T    |sJ || _         || _        || _        || _        || _        d S r*   )rG  r  r  r  r  )r/   rG  r  r  r  r  s         r0   rD   zASTDeclaratorPtr.__init__  s4     	  



r2   rE   rF   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    S r*   )r=   rF  rI   rG  r  r  r  r  rJ   s     r0   rK   zASTDeclaratorPtr.__eq__#  st    %!122 	"!!I# */*/* 
ek)* 
ek)	
r2   rM   c                \    t          | j        | j        | j        | j        | j        f          S r*   )rO   rG  r  r  r  r  rP   s    r0   rQ   zASTDeclaratorPtr.__hash__.  s%    TYt}dj$*UVVVr2   r   c                    | j         j        S r*   )rG  r:   rP   s    r0   r:   zASTDeclaratorPtr.name1      y~r2   r  c                    | j         j        S r*   )rG  r  rP   s    r0   r  z ASTDeclaratorPtr.function_params5      y((r2   c                    | j         p>| j        p7| j        p0t          | j                  dk    p| j                                        S r   )r  r  r  r>   r  rG  r'  rP   s    r0   r'  z.ASTDeclaratorPtr.require_space_after_declSpecs9  sO    J 9}9}9 4:"9 y6688	
r2   r[   r   r$   c                   d || j                   g}t          | j                   dk    r*| j        s| j        s| j        r|                    d           | j        r|                    d           | j        r1| j        r|                    d           |                    d           | j        r8| j        s| j        r|                    d           |                    d           | j        s&| j        s| j        st          | j                   dk    r.| j                                        r|                    d           |                     || j                             d                    |          S )Nr   r   rQ  r  r  r  rc   )	r  r>   r  r  r  r  rG  r'  r   r   s      r0   r^   zASTDeclaratorPtr._stringifyB  s_   IIdj))*tz??aT]dmtzJJsOOO= 	#JJz"""= 	#}  

3JJz""": 	 }    

3JJw: 	  	 $- 	 3tz??Q;N;Ny6688  

3

99TY''(((wws||r2   r"   r   r#   r%   r   r&   r   c                   t          |           |t          j        dd          z  }| j                            |           t          | j                  dk    r+| j        s| j        s| j        r|t          j	                    z  }dd	}| j        r ||d
           | j        r)| j        r|t          j	                    z  } ||d           | j        r0| j        s| j        r|t          j	                    z  } ||d           | j        s&| j        s| j        st          | j                  dk    r/| j
                                        r|t          j	                    z  }| j
                            ||||           d S )Nr   r   r"   r   ra   r$   r'   r(   c                6    | t          j        ||          z  } d S r*   )r   r   )r"   ra   s     r0   	_add_annoz6ASTDeclaratorPtr.describe_signature.<locals>._add_anno_  s    x0t<<<GGGr2   r  r  r  )r"   r   ra   r$   r'   r(   )r   r   r   r  r1   r>   r  r  r  rS  rG  r'  )r/   r"   r#   r%   r&   rS  s         r0   r1   z#ASTDeclaratorPtr.describe_signatureV  s    	 %%%80c:::
%%g...tz??aT]dmtzx.000G	= 	= 	= 	= = 	+Igz***= 	+} 582444Igz***: 	(} 5 582444Igw''': 	5 	5$- 	53tz??Q;N;Ny6688 582444	$$WdC@@@@@r2   N)rG  r"  r  rG   r  rG   r  rG   r  r   r'   r(   r}   r~   r   r  r   r   r3   r:  r7   r2   r0   rF  rF    s           	
 	
 	
 	
W W W W    X ) ) ) X)
 
 
 
   (A A A A A Ar2   rF  c                  n    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Z
d&dZdS )'ASTDeclaratorPareninnerr"  rG  r'   r(   c                2    |sJ |sJ || _         || _        d S r*   )rV  rG  )r/   rV  rG  s      r0   rD   zASTDeclaratorParen.__init__s  s&    
			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   rU  rI   rV  rG  rJ   s     r0   rK   zASTDeclaratorParen.__eq__z  s8    %!344 	"!!zU[(DTY%*-DDr2   rM   c                8    t          | j        | j        f          S r*   )rO   rV  rG  rP   s    r0   rQ   zASTDeclaratorParen.__hash__      TZ+,,,r2   r   c                    | j         j        S r*   )rV  r:   rP   s    r0   r:   zASTDeclaratorParen.name  s    zr2   r  c                    | j         j        S r*   )rV  r  rP   s    r0   r  z"ASTDeclaratorParen.function_params  r4  r2   c                    dS r  r7   rP   s    r0   r'  z0ASTDeclaratorParen.require_space_after_declSpecs  r)  r2   r[   r   r$   c                    dg}|                      || j                  d || j                  f           d                    |          S rw  )rx  rV  rG  r   r   s      r0   r^   zASTDeclaratorParen._stringify  sW    e

Idj!!Idi  
 	 	 	
 wws||r2   r"   r   r#   r%   r   r&   r   c                    t          |           |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            |d||           d S )Nr  r  rl   )r   r   r   rV  r1   rG  r.   s        r0   r1   z%ASTDeclaratorParen.describe_signature  s~     	 %%%80c:::
%%gtS&AAA80c:::	$$WlCHHHHHr2   N)rV  r"  rG  r"  r'   r(   r}   r~   r   r  r   r   r3   r:  r7   r2   r0   rU  rU  r  s           E E E E
- - - -    X * * * X*      I I I I I Ir2   rU  c                  6    e Z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/   r|  s     r0   rD   zASTParenExprList.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   ra  rI   r|  rJ   s     r0   rK   zASTParenExprList.__eq__  s*    %!122 	"!!zU[((r2   rM   c                *    t          | j                  S r*   )rO   r|  rP   s    r0   rQ   zASTParenExprList.__hash__  r   r2   r[   r   r$   c                Z    fd| j         D             }dd                    |          z  S )Nc                &    g | ]} |          S r7   r7   r   er[   s     r0   
<listcomp>z/ASTParenExprList._stringify.<locals>.<listcomp>  s!    222!1222r2   z(%s)r  )r|  r   )r/   r[   r|  s    ` r0   r^   zASTParenExprList._stringify  s5    2222tz222		%((((r2   r"   r   r#   r%   r   r&   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 )Nr  Tr  Fr  )r   r   r   r|  rS  r1   r/   r"   r#   r%   r&   r   rh  s          r0   r1   z#ASTParenExprList.describe_signature  s     	 %%%80c::: 	= 	=A 88cBBB82444  $V<<<<80c:::r2   N)r|  r}  r'   r(   r}   r~   r   r3   r   r7   r2   r0   ra  ra    sx           ) ) ) )
       ) ) ) ); ; ; ; ; ;r2   ra  c                  6    e Zd ZddZdd
ZddZddZddZdS )ASTBracedInitListr|  r}  trailingCommarG   r'   r(   c                "    || _         || _        d S r*   )r|  rn  )r/   r|  rn  s      r0   rD   zASTBracedInitList.__init__  s    
*r2   rE   rF   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   rm  rI   r|  rn  rJ   s     r0   rK   zASTBracedInitList.__eq__  s:    %!233 	"!!zU[(VT-?5CV-VVr2   rM   c                8    t          | j        | j        f          S r*   )rO   r|  rn  rP   s    r0   rQ   zASTBracedInitList.__hash__  s    TZ!34555r2   r[   r   r$   c                v    d                     fd| j        D                       }| j        rdnd}d| | dS )Nr  c              3  .   K   | ]} |          V  d S r*   r7   rg  s     r0   r   z/ASTBracedInitList._stringify.<locals>.<genexpr>  s+      ;;1))A,,;;;;;;r2   r  rc   {})r   r|  rn  )r/   r[   r|  trailing_commas    `  r0   r^   zASTBracedInitList._stringify  sR    		;;;;
;;;;; $ 2:-E->----r2   r"   r   r#   r%   r   r&   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 )Nrt  Tr  Fru  )r   r   r   r|  rS  r1   rn  rk  s          r0   r1   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:::r2   N)r|  r}  rn  rG   r'   r(   r}   r~   r   r3   r   r7   r2   r0   rm  rm    s|        + + + +W W W W
6 6 6 6. . . .
; ; ; ; ; ;r2   rm  c                  :    e Zd Z	 dddZddZddZddZd dZdS )!ASTInitializerTr   !ASTBracedInitList | ASTExpression	hasAssignrG   r'   r(   c                "    || _         || _        d S r*   r   r{  )r/   r   r{  s      r0   rD   zASTInitializer.__init__  s     
"r2   rE   rF   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   ry  rI   r   r{  rJ   s     r0   rK   zASTInitializer.__eq__  s7    %00 	"!!zU[(NT^u-NNr2   rM   c                8    t          | j        | j        f          S r*   )rO   r   r{  rP   s    r0   rQ   zASTInitializer.__hash__  s    TZ0111r2   r[   r   r$   c                >     || j                   }| j        rd|z   S |S )Nz = r}  )r/   r[   vals      r0   r^   zASTInitializer._stringify  s,    i
##> 	3;Jr2   r"   r   r#   r%   r   r&   r   c                    t          |           | j        rD|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            |d||           d S )N=rb   )r   r{  r   rS  r   r   r1   r.   s        r0   r1   z!ASTInitializer.describe_signature  s{     	 %%%> 	1x.000Gx4S#>>>Gx.000G
%%gz3GGGGGr2   NT)r   rz  r{  rG   r'   r(   r}   r~   r   r3   r   r7   r2   r0   ry  ry    s        JN# # # # #O O O O
2 2 2 2   H H H H H Hr2   ry  c                  v    e Zd Zd#dZd$dZd%dZed&d            Zd'dZed(d            Z	d)dZ
d*dZd+d!Zd"S ),r   	declSpecsr  declr"  r'   r(   c                2    |sJ |sJ || _         || _        d S r*   )r  r  )r/   r  r  s      r0   rD   zASTType.__init__
  s)    "			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r  r  rJ   s     r0   rK   zASTType.__eq__  s7    %)) 	"!!~0LTY%*5LLr2   rM   c                8    t          | j        | j        f          S r*   )rO   r  r  rP   s    r0   rQ   zASTType.__hash__  s    T^TY/000r2   r   c                    | j         j        S r*   )r  r:   rP   s    r0   r:   zASTType.name  rL  r2   r   r  r$   r&   r   c                P    |                                                     |          S r*   get_full_nested_namer   r  s       r0   r   zASTType.get_id  "    **,,33G<<<r2   r  c                    | j         j        S r*   )r  r  rP   s    r0   r  zASTType.function_params  rN  r2   r[   r   c                B   g } || j                   }|                    |           | j                                        r(t	          |          dk    r|                    d           |                     || j                             d                    |          S r  )r  r  r  r'  r>   r   )r/   r[   r   
decl_specss       r0   r^   zASTType._stringify#  s    Yt~..


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

99TY''(((wws||r2   c                "    | j         j        rdS dS )Ntypedeftype)r  r	  rP   s    r0   get_type_declaration_prefixz#ASTType.get_type_declaration_prefix,  s    >* 	96r2   r"   r   r#   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 )Nrb   r   rl   )	r   r  r1   r  r'  r>   r$   r   rS  r.   s        r0   r1   zASTType.describe_signature2  s     	 %%%))':sFKKK92244 	1S=P=P9Q9QTU9U9Ux.000G :D	$$WdC@@@@@r2   N)r  r  r  r"  r'   r(   r}   r~   r   r  r  r   r   r3   )r4   r5   r6   rD   rK   rQ   r   r:   r   r  r^   r  r1   r7   r2   r0   r   r   	  s           M M M M
1 1 1 1    X= = = = ) ) ) X)      A A A A A Ar2   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 )'r   r  r   initry  r'   r(   c                "    || _         || _        d S r*   )r  r  )r/   r  r  s      r0   rD   zASTTypeWithInit.__init__A  s    				r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r  r  rJ   s     r0   rK   zASTTypeWithInit.__eq__E  s7    %11 	"!!yEJ&B49
+BBr2   rM   c                8    t          | j        | j        f          S r*   )rO   r  r  rP   s    r0   rQ   zASTTypeWithInit.__hash__J  s    TY	*+++r2   r   c                    | j         j        S r*   )r  r:   rP   s    r0   r:   zASTTypeWithInit.nameM  rL  r2   r   r  r$   r&   r   c                :    | j                             |||          S r*   )r  r   r  s       r0   r   zASTTypeWithInit.get_idQ  s    yV<<<r2   r[   r   c                     || j                   g}| j        r#|                     || j                             d                    |          S )Nrc   )r  r  r  r   r   s      r0   r^   zASTTypeWithInit._stringifyT  sN    y##$9 	-JJyy++,,,wws||r2   r"   r   r#   r%   r   c                    t          |           | j                            ||||           | j        r| j                            ||||           d S d S r*   )r   r  r1   r  r.   s        r0   r1   z"ASTTypeWithInit.describe_signatureZ  sg     	 %%%	$$WdC@@@9 	EI(($VDDDDD	E 	Er2   N)r  r   r  ry  r'   r(   r}   r~   r   r  r   r3   r   r7   r2   r0   r   r   @  s           C C C C
, , , ,    X= = = =   E E E E E Er2   r   c                  :    e Zd Z	 ddd	ZddZddZd dZd!dZdS )"ASTMacroParameterFr  ASTNestedName | Noner  rG   variadicr'   r(   c                0    || _         || _        || _        d S r*   )r  r  r  )r/   r  r  r  s       r0   rD   zASTMacroParameter.__init__d  s       r2   rE   rF   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r*   )r=   r  rI   r  r  r  rJ   s     r0   rK   zASTMacroParameter.__eq__k  sN    %!233 	"!!H	! 0/0/	
r2   rM   c                D    t          | j        | j        | j        f          S r*   )rO   r  r  r  rP   s    r0   rQ   zASTMacroParameter.__hash__t  s    TXt}dm<===r2   r[   r   r$   c                h    | j         rdS | j        r || j                  dz   S  || j                  S r  )r  r  r  r]   s     r0   r^   zASTMacroParameter._stringifyw  sD    = 	'5] 	'9TX&&..9TX&&&r2   r"   r   r#   r%   r   r&   r   c                   t          |           | j        r|t          j        dd          z  }d S | j        r)t          |           }|t          j        ||          z  }d S | j                            ||||           d S r  )	r   r  r   r   r  r$   rn   r  r1   )r/   r"   r#   r%   r&   r:   s         r0   r1   z$ASTMacroParameter.describe_signature  s     	 %%%= 	Kx4UEBBBGGG] 	Kt99Dx-dD999GGGH''s6'JJJJJr2   N)FF)r  r  r  rG   r  rG   r'   r(   r}   r~   r   r  r   r7   r2   r0   r  r  c  s        RW! ! ! ! !
 
 
 
> > > >' ' ' '
K 
K 
K 
K 
K 
Kr2   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 )&r   r   r   r  list[ASTMacroParameter] | Noner'   r(   c                "    || _         || _        d S r*   )r   r  )r/   r   r  s      r0   rD   zASTMacro.__init__  s     
			r2   rE   rF   rG   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r   r  rJ   s     r0   rK   zASTMacro.__eq__  s7    %** 	"!!zU[(DTY%*-DDr2   rM   c                8    t          | j        | j        f          S r*   )rO   r   r  rP   s    r0   rQ   zASTMacro.__hash__  rZ  r2   c                    | j         S r*   )r   rP   s    r0   r:   zASTMacro.name  s
    zr2   r   r  r$   r&   r   c                P    |                                                     |          S r*   r  r  s       r0   r   zASTMacro.get_id  r  r2   r[   r   c                6    || j                   g}| j        m|                    d           d}| j        D ]9}|s|                    d           d}|                     ||                     :|                    d           d                    |          S )Nr  Tr  Fr  rc   )r   r  r  r   )r/   r[   r   r   r  s        r0   r^   zASTMacro._stringify  s    y$$%9 JJsOOOEy + + %JJt$$$

99S>>****JJsOOOwws||r2   r"   r   r#   r%   r   c                   t          |           | j                            ||||           | j        d S t	          j                    }| j        D ]7}t	          j        ddd          }|                    |d||           ||z  }8||z  }d S )Nrc   Tr  r   r  )r   r   r1   r  r   r  r  )r/   r"   r#   r%   r&   r  r  r   s           r0   r1   zASTMacro.describe_signature  s     	 %%%
%%gtS&AAA9F/11	9 	 	C+B4@@@E""5'3v"FFFII9r2   N)r   r   r  r  r'   r(   r}   r~   r   r  r   r3   r   r7   r2   r0   r   r     s           E E E E
- - - -    X= = = =        r2   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 )"r   r:   r   r'   r(   c                    || _         d S r*   rU   rC   s     r0   rD   zASTStruct.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r:   rJ   s     r0   rK   zASTStruct.__eq__  s)    %++ 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   r   rP   s    r0   rQ   zASTStruct.__hash__  r   r2   r   r  r$   r&   r   c                P    |                                                     |          S r*   r  r  s       r0   r   zASTStruct.get_id  r  r2   r[   r   c                "     || j                   S r*   rU   r]   s     r0   r^   zASTStruct._stringify  r   r2   r"   r   r#   r%   r   c                `    t          |           | j                            ||||           d S r  r   r:   r1   r.   s        r0   r1   zASTStruct.describe_signature  7     	 %%%	$$WdC$GGGGGr2   Nr   r}   r~   r  r   r3   r  r7   r2   r0   r   r                ' ' ' '
   = = = =$ $ $ $H H H H H Hr2   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 )"r   r:   r   r'   r(   c                    || _         d S r*   rU   rC   s     r0   rD   zASTUnion.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r:   rJ   s     r0   rK   zASTUnion.__eq__  s)    %** 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   r   rP   s    r0   rQ   zASTUnion.__hash__  r   r2   r   r  r$   r&   r   c                P    |                                                     |          S r*   r  r  s       r0   r   zASTUnion.get_id  r  r2   r[   r   c                "     || j                   S r*   rU   r]   s     r0   r^   zASTUnion._stringify  r   r2   r"   r   r#   r%   r   c                `    t          |           | j                            ||||           d S r  r  r.   s        r0   r1   zASTUnion.describe_signature  r  r2   Nr   r}   r~   r  r   r3   r  r7   r2   r0   r   r     r  r2   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 )"r   r:   r   r'   r(   c                    || _         d S r*   rU   rC   s     r0   rD   zASTEnum.__init__  r   r2   rE   rF   rG   c                Z    t          |t                    st          S | j        |j        k    S r*   )r=   r   rI   r:   rJ   s     r0   rK   zASTEnum.__eq__  s)    %)) 	"!!yEJ&&r2   rM   c                *    t          | j                  S r*   r   rP   s    r0   rQ   zASTEnum.__hash__  r   r2   r   r  r$   r&   r   c                P    |                                                     |          S r*   r  r  s       r0   r   zASTEnum.get_id  r  r2   r[   r   c                "     || j                   S r*   rU   r]   s     r0   r^   zASTEnum._stringify  r   r2   r"   r   r#   r%   r   c                `    t          |           | j                            ||||           d S r  r  r.   s        r0   r1   zASTEnum.describe_signature  r  r2   Nr   r}   r~   r  r   r3   r  r7   r2   r0   r   r     r  r2   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 )&r   r:   r   r  ASTInitializer | Noner  r   r'   r(   c                0    || _         || _        || _        d S r*   )r:   r  r  )r/   r:   r  r  s       r0   rD   zASTEnumerator.__init__
  s     		


r2   rE   rF   rG   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r*   )r=   r   rI   r:   r  r  rJ   s     r0   rK   zASTEnumerator.__eq__  sM    %// 	"!!I# *	UZ'*
ek)	
r2   rM   c                D    t          | j        | j        | j        f          S r*   )rO   r:   r  r  rP   s    r0   rQ   zASTEnumerator.__hash__  s    TY	4:6777r2   r   r  r$   r&   r   c                P    |                                                     |          S r*   r  r  s       r0   r   zASTEnumerator.get_id  r  r2   r[   r   c                    || j                   g}t          | j                  dk    r%|                    d || j                  f           | j        r#|                     || j                             d                    |          S r  )r:   r>   r  rx  r  r  r   r   s      r0   r^   zASTEnumerator._stringify   s    y##$tz??aJJYYtz2234449 	-JJyy++,,,wws||r2   r"   r   r#   r%   r   c                :   t          |           | j                            ||||           t          | j                  dk    r0|t          j                    z  }| j                            |           | j        r| j                            |d||           d S d S )Nr   rb   )r   r:   r1   r>   r  r   rS  r  r.   s        r0   r1   z ASTEnumerator.describe_signature(  s     	 %%%	$$WdC@@@tz??ax.000GJ))'2229 	KI((*c6JJJJJ	K 	Kr2   N)r:   r   r  r  r  r   r'   r(   r}   r~   r  r   r3   r  r7   r2   r0   r   r   	  s           
 
 
 
8 8 8 8= = = =   	K 	K 	K 	K 	K 	Kr2   r   c                      e Zd Z	 d(d)dZd*dZd+dZd,dZed-d            Zed.d            Z	d/d0dZ
d1dZd2dZd3d&Zd'S )4ASTDeclarationFr  r$   directiveType
str | Noner  &DeclarationType | ASTFunctionParameter	semicolonrG   r'   r(   c                h    || _         || _        || _        || _        d | _        d | _        d | _        d S r*   )r  r  r  r  r&   enumeratorScopedSymbol_newest_id_cache)r/   r  r  r  r  s        r0   rD   zASTDeclaration.__init__5  sA     %*&"%)59# -1r2   rE   rF   c                    t          |t                    st          S | 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*   )	r=   r  rI   r  r  r  r  r&   r  rJ   s     r0   rK   zASTDeclaration.__eq__I  s    %00 	"!!Ou// L"e&99L E$55L %/1L u|+	L
 +u/KK	
r2   rM   c                h    t          | j        | j        | j        | j        | j        | j        f          S r*   )rO   r  r  r  r  r&   r  rP   s    r0   rQ   zASTDeclaration.__hash__U  s:    ONK'
   	r2   c                r    t          | j        | j        | j                                        | j                  S r*   )r  r  r  r  cloner  rP   s    r0   r  zASTDeclaration.clone_  s6    O""$$N	
 
 	
r2   r   c                :    t          d| j                  }|j        S )Nr   )r   r  r:   r/   r  s     r0   r:   zASTDeclaration.nameg  s    %t'788yr2   !list[ASTFunctionParameter] | Nonec                T    | j         dk    rd S t          d| j                  }|j        S )Nfunctionr   )r  r   r  r  r  s     r0   r  zASTDeclaration.function_paramsl  s/    ?j((4It/00##r2   Tr   r  c                    | j         dk    r'| j        r | j        j                            ||          S | j                            || j         | j                  }|rt
          |         |z   S |S )N
enumerator)r  r  r  r   r&   r	   )r/   r   r  id_s       r0   r   zASTDeclaration.get_ids  sn    ?l**t/J*.:AA'8TTT%%gtLL 	g&,,Jr2   c                ^    | j          |                     t          d          | _         | j         S r  )r  r   r
   rP   s    r0   get_newest_idzASTDeclaration.get_newest_id|  s*     ($(KK$>$>D!$$r2   r[   r   c                >     || j                   }| j        r|dz  }|S )N;)r  r  r   s      r0   r^   zASTDeclaration._stringify  s,    i())> 	3JC
r2   r"   r   r#   r%   r   optionsdict[str, bool]c                   t          |           | j        sJ d|d<   t          j                    }d|_        | j        j         |d<   ||z  }| j        dv rnS| 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  }n| 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  }nj| j        d
k    rXt          d| j
                  }|                                }|t          j        ||          z  }|t          j                    z  }nt          | j
                            |||| j                   | j        r|t          j        dd          z  }d S d S )NTis_multiline
declaratoradd_permalink>   macromemberr  structunionenumr  r  r   r  )r   r&   r   desc_signature_linesphinx_line_typeisRedeclarationr  r   rS  r   r  r  r?   r1   r  r   )r/   r"   r#   r%   r  main_decl_noder  r_   s           r0   r1   z!ASTDeclaration.describe_signature  s    	 %%%{ #'!577*6'.2k.I*I'>!?===_((h7(KKKNh5777NN_''h7IIINh5777NN_&&h7GGGNh5777NN_,,h7lSSSNh5777NN_&&	4#344D5577Fh7GGGNh5777NN  ++ND#t{SSS> 	Fh;CEEENNN	F 	Fr2   Nr  )
r  r$   r  r  r  r  r  rG   r'   r(   r}   r~   )r'   r  r   )r'   r  r  )r   rM   r  rG   r'   r$   r   r   )
r"   r   r#   r$   r%   r   r  r  r'   r(   )r4   r5   r6   rD   rK   rQ   r  r   r:   r  r   r  r^   r1   r7   r2   r0   r  r  4  s	         1 1 1 1 1(

 

 

 

   
 
 
 
    X $ $ $ X$    % % % %
   )F )F )F )F )F )Fr2   r  )U
__future__r   r@   rz   typingr   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   r   __annotations__r!   r9   r   r   r   r   r   r   r   r   r   r  r  r  r&  r1  r6  r>  rI  rU  rc  rj  rr  r{  r  r  r  r  r  r  r  r  r  r  r"  r)  r<  rF  rU  ra  rm  ry  r   r   r  r   r   r   r   r   r  r7   r2   r0   <module>r     s
   " " " " " " " 



  - - - - - - - - - -             5 5 5 5 5 5 5 5             
%%%%%%%%9999999999//////333333       
 #    . . . . .k . . .J J J J JK J J JZUC UC UC UC UCG UC UC UCz	 	 	 	 	G 	 	 		 	 	 	 	 	 	 	7 7 7 7 7
 7 7 72> > > > >z > > >,< < < < <Z < < <>> > > > >z > > >,A A A A Am A A A2; ; ; ; ;= ; ; ;<	 	 	 	 	7 	 	 	@ @ @ @ @ @ @ @*; ; ; ; ;l ; ; ;.: : : : :L : : :: : : : :L : : :I I I I I I I I,= = = = =] = = =>A A A A A] A A A<; ; ; ; ;M ; ; ;0A A A A AM A A A.; ; ; ; ;] ; ; ;8A A A A A- A A A>&I &I &I &I &I7 &I &I &IR&I &I &I &I &I &I &I &IR7 7 7 7 7m 7 7 7:	 	 	 	 	' 	 	 	< < < < <%8 < < <8N N N N N1 N N NBK K K K K7 K K KBE3 E3 E3 E3 E3G E3 E3 E3P`% `% `% `% `% `% `% `%FE E E E E7 E E EXV; V; V; V; V;w V; V; V;r
. 
. 
. 
. 
.G 
. 
. 
.3F 3F 3F 3F 3F] 3F 3F 3Fl&A &A &A &A &A &A &A &AR\A \A \A \A \A} \A \A \A~+I +I +I +I +I +I +I +Id; ; ; ; ;+ ; ; ;@!; !; !; !; !; !; !; !;HH H H H HW H H HB4A 4A 4A 4A 4Ag 4A 4A 4An E  E  E  E  Eg  E  E  EF&K &K &K &K &K &K &K &KR/ / / / /w / / /dH H H H H H H H2H H H H Hw H H H2H H H H Hg H H H2(K (K (K (K (KG (K (K (KV|F |F |F |F |F[ |F |F |F |F |Fr2   