
    ziR                      d Z ddlmZ ddlZddlmZmZmZmZm	Z	m
Z
 ddlmZ ddl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 ddlmZmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= er2ddl>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZE ddlFmGZG ddlHmIZI ddlJmKZK ddlLmMZM ddlNmOZO  e!jP        eQ          ZR ed          ZSe	d         ZTg dZUg dZVddgd d!gd"d#gd$d%gd&d'gg d(g d)d*d+gd,d-gg d.d/d0ggZWg d1ZXg d2ZYd3ZZg d4Z[ ej\        d5ej]                  Z^ ej\        d6ej_                  Z` G d7 d8ea          Zb G d9 d:e$          Zc G d; d<e$          Zd G d= d>ec          Ze G d? d@ec          Zf G dA dBef          Zg G dC dDeg          Zh G dE dFeg          Zi G dG dHeg          Zj G dI dJeg          Zk G dK dLef          Zl G dM dNef          Zm G dO dPec          Zn G dQ dRen          Zo G dS dTen          Zp G dU dVen          Zq G dW dXen          Zr G dY dZen          Zs G d[ d\ef          Zt G d] d^ef          Zu G d_ d`ef          Zv G da dbef          Zw G dc ddef          Zx G de dfef          Zy G dg dhec          Zz G di djef          Z{ G dk dlef          Z| G dm dnec          Z} G do dpe}          Z~ G dq dre}          Z G ds dtec          Z G du dvec          Z G dw dxe$          Z G dy dzec          Z G d{ d|ec          Z G d} d~ec          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de%          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d dec          Z G d de$          Z G d d          Z G d d          Z G d d          Z G d de&          ZddZ G d dee                   Z G d de          Z e9d ed          ddd           e8d ed          dd           e7d ed          dd           e7d ed          dd          gZ G d de          Z G d de          Z G dĄ de          Z G dƄ de          Z G dȄ de          Z G dʄ de          Z G d̄ de          Z G d΄ de;          Z G dЄ de;          Z G d҄ de;          Z G dԄ dejB                  Z G dք de          Z G d؄ de          Z G dڄ de          Z G d܄ de          Z G dބ de          ZddZdS )zThe C language domain.    )annotationsN)TYPE_CHECKINGAnyCallableTypeVarUnioncast)nodes)
directives)addnodes)ObjectDescription)DomainObjType)___)
SphinxRoleXRefRole)SphinxTransform)ReferencesResolver)logging)ASTAttributeListASTBaseBaseASTBaseParenExprList
BaseParserDefinitionErrorNoOldIdErrorStringifyTransform$UnsupportedMultiCharacterCharLiteralanon_identifier_rebinary_literal_rechar_literal_refloat_literal_refloat_literal_suffix_rehex_literal_reidentifier_reinteger_literal_reintegers_literal_suffix_reoctal_literal_reverify_description_mode)FieldGroupedField
TypedField)SphinxDirective)make_refnode)	GeneratorIterator)ElementNodeTextElementsystem_message)pending_xref)Sphinx)Builder)BuildEnvironment)
OptionSpecT)	ASTStructASTUnionASTEnumASTEnumeratorASTTypeASTTypeWithInitASTMacro)/autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifinlineintlongregisterrestrictreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile_Alignas_Alignof_Atomic_Bool_Complex
_Decimal32
_Decimal64_Decimal128_Generic
_Imaginary	_Noreturn_Static_assert_Thread_local)alignasalignofboolcomplex	imaginarynoreturnstatic_assertthread_localz||orz&&and|bitor^xor&bitand)z==z!=not_eq)z<=z>=<>z<<z>>+-)*/%z.*z->*)
++--r   r   r   r   !not~compl)=z*=z/=z%=z+=z-=z>>=z<<=z&=and_eqz^=xor_eqz|=or_eq   )Nzc.zCv2.z>[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")aj  
    \b(
    void|_Bool
    |signed|unsigned
    |short|long
    |char
    |int
    |__uint128|__int128
    |__int(8|16|32|64|128)  # extension
    |float|double
    |_Decimal(32|64|128)
    |_Complex|_Imaginary
    |__float80|_Float64x|__float128|_Float128|__ibm128  # extension
    |__fp16  # extension
    |_Sat|_Fract|fract|_Accum|accum  # extension
    )\b
c                      e Zd ZddZdd	Zd
S )_DuplicateSymbolErrorsymbolSymboldeclarationASTDeclarationrW   Nonec                2    |sJ |sJ || _         || _        d S N)r   r   )selfr   r   s      [/var/www/tmov.alphamb/tmov_inventario/venv/lib/python3.11/site-packages/sphinx/domains/c.py__init__z_DuplicateSymbolError.__init__   s,    &    strc                <    d| j                             d          z  S )Nz%Internal C duplicate symbol error:
%sr   )r   dumpr   s    r   __str__z_DuplicateSymbolError.__str__   s    7$+:J:J1:M:MMMr   N)r   r   r   r   rW   r   rW   r   __name__
__module____qualname__r   r    r   r   r   r   ~   sB        ' ' ' 'N N N N N Nr   r   c                      e Zd ZddZdS )ASTBasesignoder3   moder   envr8   r   r   rW   r   c                :    t          t          |                     r   NotImplementedErrorreprr   r   r   r   r   s        r   describe_signaturezASTBase.describe_signature       !$t**---r   N
r   r3   r   r   r   r8   r   r   rW   r   )r   r   r   r   r   r   r   r   r      s(        . . . . . .r   r   c                  >    e Zd ZddZdd	Zdd
ZddZddZddZdS )ASTIdentifier
identifierr   rW   r   c                F    |J t          |          dk    sJ || _        d S Nr   )lenr   )r   r   s     r   r   zASTIdentifier.__init__   s0    %%%:!####$r   otherr   rs   c                N    t          |          t          u o| j        |j        k    S r   )typer   r   r   r   s     r   __eq__zASTIdentifier.__eq__   s"    E{{m+S5CS0SSr   c                $    | j         d         dk    S )Nr   @r   r   s    r   is_anonzASTIdentifier.is_anon   s    q!S((r   c                    | j         S r   r   r   s    r   r   zASTIdentifier.__str__   s
    r   c                <    |                                  rdn| j        S )N[anonymous])r   r   r   s    r   get_display_stringz ASTIdentifier.get_display_string   s     $C}}DOCr   r   r3   r   r   r8   prefixr   r   c                   t          |           |                                 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            )Nr   )textmarkType cr   )	refdomainreftype	reftargetmodname	classnamec:parent_key
lastIsName
noneIsNameUnknown description mode: %s)	r)   r   r   desc_sig_namer   r5   get_lookup_key	desc_name	Exception)
r   r   r   r   r   r   node
targetTextpnodenameNodes
             r   r   z ASTIdentifier.describe_signature   s    	 %%%<<>> 	L)}===DD)$/4?KKD:$/1J)"2>4>48: : :E %+$9$9$;$;E.!TMEuGGG\!!)++HHxGGG\!!tOGGG:TABBBr   N)r   r   rW   r   )r   r   rW   rs   rW   rs   r   )r   r3   r   r   r   r8   r   r   r   r   rW   r   )	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s        % % % %
T T T T) ) ) )
   D D D DC C C C C Cr   r   c                  F    e Zd ZddZedd            ZddZddZddZdS )ASTNestedNamenameslist[ASTIdentifier]rootedrs   rW   r   c                L    t          |          dk    sJ || _        || _        d S r   )r   r   r   )r   r   r   s      r   r   zASTNestedName.__init__   s'    5zzA~~~~
r   c                    | S r   r   r   s    r   namezASTNestedName.name   s    r   versionrS   r   c                J    d                     d | j        D                       S )N.c              3  4   K   | ]}t          |          V  d S r   )r   ).0ns     r   	<genexpr>z'ASTNestedName.get_id.<locals>.<genexpr>   s(      331A333333r   joinr   r   r   s     r   get_idzASTNestedName.get_id   s%    xx33
333333r   	transformr   c                l    d                     fd| j        D                       }| j        rd|z   S |S )Nr   c              3  .   K   | ]} |          V  d S r   r   )r   r   r   s     r   r   z+ASTNestedName._stringify.<locals>.<genexpr>   s+      88yy||888888r   )r   r   r   r   r   ress    ` r   
_stringifyzASTNestedName._stringify   sD    hh8888TZ88888; 	9Jr   r   r3   r   r   r8   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 rod}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 ]^}|
|         }|	s|t          j        dd          z  }|dz  }d}	t          |          }|dk    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            )Nr   zCan this happen?r   r   r   paramr   )r   r   markNameTr   Fr   r   )r)   r   AssertionErrorr
   Textranger   r   r   r   r   desc_addnamedesc_sig_punctuationr   )r   r   r   r   r   unreachableir   r   firstr   destident	txt_idents                 r   r   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: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Br   N)r   r   r   rs   rW   r   rW   r   r   rS   rW   r   r   r   rW   r   r   	r   r   r   r   propertyr   r   r   r   r   r   r   r   r      s           
    X4 4 4 4   8C 8C 8C 8C 8C 8Cr   r   c                      e Zd ZdS )ASTExpressionNr   r   r   r   r   r   r  r            Dr   r  c                      e Zd ZdS )
ASTLiteralNr  r   r   r   r  r    r  r   r  c                  &    e Zd ZddZdd	ZddZdS )ASTBooleanLiteralvaluers   rW   r   c                    || _         d S r   r  )r   r  s     r   r   zASTBooleanLiteral.__init__       


r   r   r   r   c                    | j         rdS dS )Ntruefalser  r   r   s     r   r   zASTBooleanLiteral._stringify#  s    : 	67r   r   r3   r   r   r8   r   r   c                T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_keywordr   r   r   r   r   txts         r   r   z$ASTBooleanLiteral.describe_signature)  s(    $ii8,S#666r   N)r  rs   rW   r   r  r   r   r   r   r   r   r   r   r   r   r  r    sP              7 7 7 7 7 7r   r  c                  &    e Zd ZddZddZddZdS )ASTNumberLiteraldatar   rW   r   c                    || _         d S r   r(  r   r(  s     r   r   zASTNumberLiteral.__init__0      			r   r   r   c                    | j         S r   r*  r   s     r   r   zASTNumberLiteral._stringify3  
    yr   r   r3   r   r   r8   r   r   c                T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_numberr#  s         r   r   z#ASTNumberLiteral.describe_signature6  (    $ii83C===r   Nr(  r   rW   r   r  r   r%  r   r   r   r'  r'  /  P              > > > > > >r   r'  c                  &    e Zd ZddZdd	ZddZdS )ASTCharLiteralr   r   r(  rW   r   c                    || _         || _        |                                                    d          }t	          |          dk    rt          |          | _        d S t          |          )Nzunicode-escaper   )r   r(  encodedecoder   ordr  r   )r   r   r(  decodeds       r   r   zASTCharLiteral.__init__=  s\    	++--&&'788w<<1WDJJJ6w???r   r   r   c                T    | j         d| j        z   dz   S | j         dz   | j        z   dz   S )N')r   r(  r   s     r   r   zASTCharLiteral._stringifyF  s4    ;?S((;$ty0366r   r   r3   r   r   r8   r   r   c                T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_charr#  s         r   r   z!ASTCharLiteral.describe_signatureL  s(    $ii81#s;;;r   N)r   r   r(  r   rW   r   r  r   r%  r   r   r   r5  r5  <  sT        @ @ @ @7 7 7 7< < < < < <r   r5  c                  &    e Zd ZddZddZddZdS )ASTStringLiteralr(  r   rW   r   c                    || _         d S r   r*  r+  s     r   r   zASTStringLiteral.__init__S  r,  r   r   r   c                    | j         S r   r*  r   s     r   r   zASTStringLiteral._stringifyV  r.  r   r   r3   r   r   r8   r   r   c                T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_stringr#  s         r   r   z#ASTStringLiteral.describe_signatureY  r1  r   Nr2  r  r   r%  r   r   r   r@  r@  R  r3  r   r@  c                  .    e Zd ZddZddZddZddZdS )ASTIdExpressionr   r   c                    || _         d S r   r   r   r   s     r   r   zASTIdExpression.__init__`  s    			r   r   r   rW   r   c                "     || j                   S r   rH  r   s     r   r   zASTIdExpression._stringifyd      y###r   r   rS   c                6    | j                             |          S r   )r   r   r   s     r   r   zASTIdExpression.get_idg      y(((r   r   r3   r   r   r8   r   r   r   c                @    | j                             ||||           d S r   )r   r   r   s        r   r   z"ASTIdExpression.describe_signaturej  s$    	$$WdC@@@@@r   N)r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   rF  rF  _  sj           $ $ $ $) ) ) )A A A A A Ar   rF  c                  ,    e Zd Zd ZddZdd	ZddZdS )ASTParenExprc                    || _         d S r   exprr   rT  s     r   r   zASTParenExpr.__init__p  r,  r   r   r   rW   r   c                .    d || j                   z   dz   S N()rS  r   s     r   r   zASTParenExpr._stringifys      YYty)))C//r   r   rS   c                6    | j                             |          S r   )rT  r   r   s     r   r   zASTParenExpr.get_idv  rM  r   r   r3   r   r   r8   r   r   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S rW  r   r  rT  r   r   s        r   r   zASTParenExpr.describe_signaturey  P    80c:::	$$WdC@@@80c:::r   Nr  r  r   rO  r   r   r   rQ  rQ  o  s_          0 0 0 0) ) ) ); ; ; ; ; ;r   rQ  c                      e Zd ZdS )ASTPostfixOpNr  r   r   r   r`  r`    r  r   r`  c                  &    e Zd ZddZdd	ZddZdS )ASTPostfixCallExprlst$ASTParenExprList | ASTBracedInitListrW   r   c                    || _         d S r   rc  )r   rc  s     r   r   zASTPostfixCallExpr.__init__      r   r   r   r   c                "     || j                   S r   rf  r   s     r   r   zASTPostfixCallExpr._stringify  s    y"""r   r   r3   r   r   r8   r   r   c                @    | j                             ||||           d S r   )rc  r   r   s        r   r   z%ASTPostfixCallExpr.describe_signature  s$    ##GT3?????r   N)rc  rd  rW   r   r  r   r%  r   r   r   rb  rb    sV           # # # #@ @ @ @ @ @r   rb  c                  &    e Zd ZddZdd	ZddZdS )ASTPostfixArrayrT  r  rW   r   c                    || _         d S r   rS  rU  s     r   r   zASTPostfixArray.__init__  r,  r   r   r   r   c                .    d || j                   z   dz   S N[]rS  r   s     r   r   zASTPostfixArray._stringify  rZ  r   r   r3   r   r   r8   r   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S rn  r]  r   s        r   r   z"ASTPostfixArray.describe_signature  r^  r   N)rT  r  rW   r   r  r   r%  r   r   r   rk  rk    sP           0 0 0 0; ; ; ; ; ;r   rk  c                      e Zd ZddZddZdS )ASTPostfixIncr   r   rW   r   c                    dS Nr   r   r   s     r   r   zASTPostfixInc._stringify      tr   r   r3   r   r   r8   r   r   r   c                6    |t          j        dd          z  }d S ru  r   desc_sig_operatorr   s        r   r   z ASTPostfixInc.describe_signature      8-dD999r   Nr  r   r   r   r   r   r   r   r   r   rs  rs    <           : : : : : :r   rs  c                      e Zd ZddZddZdS )ASTPostfixDecr   r   rW   r   c                    dS Nr   r   r   s     r   r   zASTPostfixDec._stringify  rv  r   r   r3   r   r   r8   r   r   r   c                6    |t          j        dd          z  }d S r  rx  r   s        r   r   z ASTPostfixDec.describe_signature  rz  r   Nr  r   r{  r   r   r   r~  r~    r|  r   r~  c                  $    e Zd Zd ZddZddZdS )ASTPostfixMemberOfPointerc                    || _         d S r   rH  rI  s     r   r   z"ASTPostfixMemberOfPointer.__init__  r,  r   r   r   rW   r   c                (    d || j                   z   S )N->rH  r   s     r   r   z$ASTPostfixMemberOfPointer._stringify  s    ii	****r   r   r3   r   r   r8   r   r   r   c                p    |t          j        dd          z  }| j                            |d||           d S )Nr  r   )r   ry  r   r   r   s        r   r   z,ASTPostfixMemberOfPointer.describe_signature  s;    8-dD999	$$WlCHHHHHr   Nr  r   r%  r   r   r   r  r    sQ          + + + +I I I I I Ir   r  c                  &    e Zd ZddZdd
ZddZdS )ASTPostfixExprr   r  	postFixeslist[ASTPostfixOp]c                "    || _         || _        d S r   )r   r  )r   r   r  s      r   r   zASTPostfixExpr.__init__  s    "r   r   r   rW   r   c                     || j                   g}| j        D ] }|                     ||                     !d                    |          S Nr   )r   r  appendr   )r   r   r   ps       r   r   zASTPostfixExpr._stringify  sT    y%%& 	% 	%AJJyy||$$$$wws||r   r   r3   r   r   r8   r   r   r   c                    | j                             ||||           | j        D ]}|                    ||||           d S r   )r   r   r  )r   r   r   r   r   r  s         r   r   z!ASTPostfixExpr.describe_signature  sV    &&wc6BBB 	= 	=A  $V<<<<	= 	=r   N)r   r  r  r  r  r   r%  r   r   r   r  r    sP        # # # #   = = = = = =r   r  c                  &    e Zd ZddZdd	ZddZdS )ASTUnaryOpExpropr   rT  r  c                "    || _         || _        d S r   r  rT  )r   r  rT  s      r   r   zASTUnaryOpExpr.__init__  s    			r   r   r   rW   c                    | j         d         dv r| j         dz    || j                  z   S | j          || j                  z   S )Nr   cn r  r   s     r   r   zASTUnaryOpExpr._stringify  sI    71:7S=99TY#7#7777YYty1111r   r   r3   r   r   r8   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   r  )r  r   r"  desc_sig_spacery  rT  r   r   s        r   r   z!ASTUnaryOpExpr.describe_signature  s    71:x0$'BBBGx.000GGx1$'47CCCG	$$WdC@@@@@r   N)r  r   rT  r  r  r   r%  r   r   r   r  r    sV           2 2 2 2A A A A A Ar   r  c                  $    e Zd Zd ZddZddZdS )ASTSizeofTypec                    || _         d S r   typr   r  s     r   r   zASTSizeofType.__init__  rg  r   r   r   rW   r   c                .    d || j                   z   dz   S )Nzsizeof(rY  r  r   s     r   r   zASTSizeofType._stringify  s    99TX...44r   r   r3   r   r   r8   r   r   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )NrZ   rX  rY  r   r"  r  r  r   r   s        r   r   z ASTSizeofType.describe_signature  sg    8,Xx@@@80c:::##GT3???80c:::r   Nr  r   r%  r   r   r   r  r    sK          5 5 5 5; ; ; ; ; ;r   r  c                  &    e Zd ZddZddZddZdS )ASTSizeofExprrT  r  c                    || _         d S r   rS  rU  s     r   r   zASTSizeofExpr.__init__  r,  r   r   r   rW   r   c                (    d || j                   z   S )Nzsizeof rS  r   s     r   r   zASTSizeofExpr._stringify  s    99TY////r   r   r3   r   r   r8   r   r   r   c                    |t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )NrZ   )r   r"  r  rT  r   r   s        r   r   z ASTSizeofExpr.describe_signature   sN    8,Xx@@@8*,,,	$$WdC@@@@@r   N)rT  r  r  r   r%  r   r   r   r  r    sV           0 0 0 0A A A A A Ar   r  c                  &    e Zd ZddZddZddZdS )ASTAlignofExprr  r?   c                    || _         d S r   r  r  s     r   r   zASTAlignofExpr.__init__  rg  r   r   r   rW   r   c                .    d || j                   z   dz   S )Nzalignof(rY  r  r   s     r   r   zASTAlignofExpr._stringify  s    IIdh///#55r   r   r3   r   r   r8   r   r   r   c                    |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nrr   rX  rY  r  r   s        r   r   z!ASTAlignofExpr.describe_signature  sg    8,Y	BBB80c:::##GT3???80c:::r   N)r  r?   r  r   r%  r   r   r   r  r    sP           6 6 6 6; ; ; ; ; ;r   r  c                  &    e Zd ZddZdd
ZddZdS )ASTCastExprr  r?   rT  r  c                "    || _         || _        d S r   )r  rT  )r   r  rT  s      r   r   zASTCastExpr.__init__  s    			r   r   r   rW   r   c                    dg}|                      || j                             |                     d           |                      || j                             d                    |          S NrX  rY  r   )r  r  rT  r   r   s      r   r   zASTCastExpr._stringify  sd    e

99TX&&'''

3

99TY''(((wws||r   r   r3   r   r   r8   r   r   r   c                    |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            ||||           d S rW  )r   r  r  r   rT  r   s        r   r   zASTCastExpr.describe_signature%  sn    80c:::##GT3???80c:::	$$WdC@@@@@r   N)r  r?   rT  r  r  r   r%  r   r   r   r  r    sV              A A A A A Ar   r  c                  &    e Zd ZddZdd
ZddZdS )ASTBinOpExprexprslist[ASTExpression]ops	list[str]c                    t          |          dk    sJ t          |          t          |          dz   k    sJ || _        || _        d S Nr   r   r   r  r  r   r  r  s      r   r   zASTBinOpExpr.__init__.  H    5zzA~~~~5zzSXX\))))
r   r   r   rW   r   c                   g }|                      || j        d                              t          dt          | j                            D ]x}|                     d           |                     | j        |dz
                      |                     d           |                      || j        |                              yd                    |          S Nr   r   r  r   r  r  r  r   r  r   r   r   r   r  s       r   r   zASTBinOpExpr._stringify4      

99TZ]++,,,q#dj//** 	1 	1AJJsOOOJJtxA'''JJsOOOJJyyA//0000wws||r   r   r3   r   r   r8   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  r   r  r   r   r  r  r9  r"  ry  r   r   r   r   r   r  r  s          r   r   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r   Nr  r  r  r  r  r   r%  r   r   r   r  r  -  V              I I I I I Ir   r  c                  &    e Zd ZddZdd
ZddZdS )ASTAssignmentExprr  r  r  r  c                    t          |          dk    sJ t          |          t          |          dz   k    sJ || _        || _        d S r  r  r  s      r   r   zASTAssignmentExpr.__init__M  r  r   r   r   rW   r   c                   g }|                      || j        d                              t          dt          | j                            D ]x}|                     d           |                     | j        |dz
                      |                     d           |                      || j        |                              yd                    |          S r  r  r  s       r   r   zASTAssignmentExpr._stringifyS  r  r   r   r3   r   r   r8   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          r   r   z$ASTAssignmentExpr.describe_signature]  r  r   Nr  r  r   r%  r   r   r   r  r  L  r  r   r  c                  .    e Zd ZddZddZdd
ZddZdS )ASTFallbackExprrT  r   c                    || _         d S r   rS  rU  s     r   r   zASTFallbackExpr.__init__l  r,  r   r   r   rW   c                    | j         S r   rS  r   s     r   r   zASTFallbackExpr._stringifyo  r.  r   r   rS   c                *    t          | j                  S r   )r   rT  r   s     r   r   zASTFallbackExpr.get_idr  s    49~~r   r   r3   r   r   r8   r   r   r   c                J    |t          j        | j        | j                  z  }d S r   )r
   literalrT  r   s        r   r   z"ASTFallbackExpr.describe_signatureu  s     5=DI666r   N)rT  r   r  r  r   rO  r   r   r   r  r  k  sd                 7 7 7 7 7 7r   r  c                      e Zd ZdS )ASTTrailingTypeSpecNr  r   r   r   r  r  ~  r  r   r  c                  &    e Zd ZddZdd	ZddZdS )ASTTrailingTypeSpecFundamentalr   r  rW   r   c                >    t          |          dk    sJ || _        d S r   )r   r   )r   r   s     r   r   z'ASTTrailingTypeSpecFundamental.__init__  s     5zzQ


r   r   r   r   c                6    d                     | j                  S )Nr  r   r   s     r   r   z)ASTTrailingTypeSpecFundamental._stringify  s    xx
###r   r   r3   r   r   r8   r   r   c                    d}| j         D ]5}|s|t          j                    z  }nd}|t          j        ||          z  }6d S )NTF)r   r   r  desc_sig_keyword_type)r   r   r   r   r   r  r   s          r   r   z1ASTTrailingTypeSpecFundamental.describe_signature  s]     	< 	<A 82444x5a;;;GG	< 	<r   N)r   r  rW   r   r  r   r%  r   r   r   r  r    sP           $ $ $ $< < < < < <r   r  c                  >    e Zd ZddZedd            ZddZddZdS )ASTTrailingTypeSpecNamer   r   
nestedNamer   rW   r   c                "    || _         || _        d S r   )r   r  )r   r   r  s      r   r   z ASTTrailingTypeSpecName.__init__  s    $r   c                    | j         S r   )r  r   s    r   r   zASTTrailingTypeSpecName.name  s
    r   r   r   c                    g }| j         r/|                    | j                    |                    d           |                     || j                             d                    |          S )Nr  r   )r   r  r  r   r   s      r   r   z"ASTTrailingTypeSpecName._stringify  sb    ; 	JJt{###JJsOOO

99T_--...wws||r   r   r3   r   r   r8   r   r   c                    | j         r8|t          j        | j         | j                   z  }|t          j                    z  }| j                            ||||           d S Nr   )r   r   r"  r  r  r   r   s        r   r   z*ASTTrailingTypeSpecName.describe_signature  s_    ; 	1x0dkJJJGx.000G**7D#f*MMMMMr   N)r   r   r  r   rW   r   r  r  r   )r   r   r   r   r  r   r   r   r   r   r   r  r    sv        % % % %    X   N N N N N Nr   r  c                  0    e Zd ZdddZddZddZddZdS )ASTFunctionParameterFargASTTypeWithInit | Noneellipsisrs   rW   r   c                "    || _         || _        d S r   )r  r  )r   r  r  s      r   r   zASTFunctionParameter.__init__  s     r   r   rS   
objectTyper   r   r   c                D    |j         j                            |d          S )NF)prefixed)parentr   r   r   r   r  r   s       r   r   zASTFunctionParameter.get_id  s     }(//%/HHHr   r   r   c                4    | j         rdS  || j                  S N...)r  r  r   s     r   r   zASTFunctionParameter._stringify  s#    = 	'59TX&&&r   r   r   r   r   r8   c                    t          |           | j        r|t          j        dd          z  }d S | j                            ||||           d S Nr  r  )r)   r  r   r  r  r   r   s        r   r   z'ASTFunctionParameter.describe_signature  s[    %%%= 	Kx4UEBBBGGGH''s6'JJJJJr   NF)r  r  r  rs   rW   r   r   rS   r  r   r   r   rW   r   r  
r   r   r   r   r   r8   r   r   rW   r   r   r   r   r   r   r   r   r   r   r   r  r    ss        ! ! ! ! !I I I I' ' ' 'K K K K K Kr   r  c                  >    e Zd ZddZedd            ZddZddZdS )ASTParametersargslist[ASTFunctionParameter]attrsr   rW   r   c                "    || _         || _        d S r   )r  r  )r   r  r  s      r   r   zASTParameters.__init__  s    	


r   c                    | j         S r   r  r   s    r   function_paramszASTParameters.function_params  s
    yr   r   r   r   c                   g }|                     d           d}| j        D ]=}|s|                     d           d}|                     t          |                     >|                     d           t          | j                  dk    r8|                     d           |                      || j                             d                    |          S )	NrX  T, FrY  r   r  r   )r  r  r   r   r  r   )r   r   r   r  r  s        r   r   zASTParameters._stringify  s    

3 	 	A !

4   EJJs1vv

3tz??aJJsOOOJJyy,,---wws||r   r   r3   r   r   r8   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_listr   r   Tnoemphr   r  rX  ,r   rY  r   )r)   r  
isinstancer   desc_signaturegetdesc_parameterlistr  desc_parameterr   r  r  r   r  )r   r   r   r   r   r  	test_node	paramlistr  r   r  s              r   r   z ASTParameters.describe_signature  s   %%%$)!$	 	i)@AA %,	(16QSX(Y(Y% < 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  r   N)r  r  r  r   rW   r   rW   r  r  r   )r   r   r   r   r  r  r   r   r   r   r   r   r     sp               X   "3 "3 "3 "3 "3 "3r   r   c                  .    e Zd ZddZddZddZddZdS )ASTDeclSpecsSimplestorager   threadLocalrR   rs   rV   rb   rF   r  r   rW   r   c                h    || _         || _        || _        || _        || _        || _        || _        d S r   )r  r  rR   rV   rb   rF   r  )r   r  r  rR   rV   rb   rF   r  s           r   r   zASTDeclSpecsSimple.__init__  s8    &  



r   r   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  rR   rb   rF   rV   r  r   s     r   	mergeWithzASTDeclSpecsSimple.mergeWith  sv     	K!$,"?%-"&"2"Ge6G"&+"="&-"A5>"&*";"&-"A5>"&*u{":< < 	<r   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   rR   rV   rb   rF   r  )
r   r  r  r  r  rR   rV   rb   rF   r   r   s      r   r   zASTDeclSpecsSimple._stringify  s    tz??aJJyy,,---< 	%JJt|$$$ 	)JJt'(((; 	!JJx   = 	#JJz"""= 	#JJz""": 	 JJwxx}}r   	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   r   r   rW   r   c                    t          |           dk    r&|                     t          j                               |                     t          j        ||                     d S r   )r   r  r   r  r"  )r  r   s     r   _addz3ASTDeclSpecsSimple.describe_signature.<locals>._add,  sW    9~~""  !8!:!:;;;X6tTBBCCCCCr   r   rR   rV   rb   rF   )r  r   r   r   rW   r   )r   r  r  r   r  r
   r3   r   extendchildrenr  r  rR   rV   rb   rF   )r   r  r#  tempNodes       r   r   z%ASTDeclSpecsSimple.describe_signature+  sU   	D 	D 	D 	D
 y>>Q3tz??a#7#7X466777$&&
%%h///*+++< 	*DDL))) 	.DD,---; 	&DH%%%= 	(DJ'''= 	(DJ''': 	%DG$$$$$	% 	%r   N)r  r   r  r   rR   rs   rV   rs   rb   rs   rF   rs   r  r   rW   r   )r   r  rW   r  r  )r  r   rW   r   )r   r   r   r   r  r   r   r   r   r   r  r    sd           	< 	< 	< 	<   $% % % % % %r   r  c                  &    e Zd Zdd
ZddZddZdS )ASTDeclSpecsouterr   	leftSpecsr  
rightSpecstrailingr  rW   r   c                    || _         || _        || _        | j                            | j                  | _        || _        d S r   )r)  r*  r+  r  allSpecstrailingTypeSpec)r   r)  r*  r+  r,  s        r   r   zASTDeclSpecs.__init__E  s@     
"$00AA (r   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   r  r   )r*  r   r  r/  r   r+  r   )r   r   r   lrs        r   r   zASTDeclSpecs._stringifyQ  s    Idn%%q66A::JJqMMM  	3xx!||

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

1wws||r   r   r3   r   r   r8   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*  r   r/  r   r   r  r+  )r   r   r   r   r   r  ms          r   r   zASTDeclSpecs.describe_signaturea  s   %%% "	)))444 	 	AqLGG  
	9~~!!82444!44WdC<B 5 D D DIO..y9999~~!!82444  1
	 
	 r   N)
r)  r   r*  r  r+  r  r,  r  rW   r   r  r   r%  r   r   r   r(  r(  D  sP        
) 
) 
) 
)         r   r(  c                  &    e Zd Zdd	ZddZddZdS )ASTArrayr[   rs   rF   rb   rV   vlasizer  c                v    || _         || _        || _        || _        || _        || _        |r|J ||rJ d S d S r   )r[   rF   rb   rV   r8  r9  )r   r[   rF   rb   rV   r8  r9  s          r   r   zASTArray.__init__{  sY    
  	 	 <<<NNN Nr   r   r   rW   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[   rV   rb   rF   ro  r  z*]rp  )r[   r  rV   rb   rF   r8  r   r9  )r   r   els      r   r   zASTArray._stringify  s    ; 	 IIh= 	"IIj!!!= 	"IIj!!!: 	IIg8 	,"%,,Y 	,IIii	**+++SXXb\\!C''r   r   r3   r   r   r8   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 )Nro  Fr   r3   r   r   rW   rs   c                h    r| t          j                    z  } | t          j        ||          z  } dS NT)r   r  r"  )r   r   addSpaces     r   r#  z)ASTArray.describe_signature.<locals>._add  s:     582444x0t<<<G4r   r[   rV   rb   rF   r   r   rp  )r   r3   r   r   rW   rs   )r)   r   r  r[   rV   rb   rF   r8  r9  r  r   )r   r   r   r   r   r#  r@  s         @r   r   zASTArray.describe_signature  s:   %%%80c:::	 	 	 	 	 	 ; 	/tGX..H= 	1tGZ00H= 	1tGZ00H: 	.tGW--H8 	Kx4S#>>>GGY 	K 582444I((*c6JJJ80c:::r   N)r[   rs   rF   rs   rb   rs   rV   rs   r8  rs   r9  r  r  r   r%  r   r   r   r7  r7  z  sP           ( ( ( ( ; ; ; ; ; ;r   r7  c                  F    e Zd Zed	d            Zed
d            ZddZdS )ASTDeclaratorrW   r   c                :    t          t          |                     r   r   r   s    r   r   zASTDeclarator.name  r   r   r  c                :    t          t          |                     r   r   r   s    r   r  zASTDeclarator.function_params  r   r   rs   c                :    t          t          |                     r   r   r   s    r   require_space_after_declSpecsz+ASTDeclarator.require_space_after_declSpecs  s    !$t**---r   Nr  r  r   )r   r   r   r  r   r  rF  r   r   r   rB  rB    sf        . . . X. . . . X.. . . . . .r   rB  c                  ^    e Z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   rW   r   c                0    || _         || _        || _        d S r   rI  rJ  r   )r   rI  rJ  r   s       r   r   zASTDeclaratorNameParam.__init__  s     


r   c                    | j         S r   rI  r   s    r   r   zASTDeclaratorNameParam.name  
    {r   r  c                    | j         j        S r   )r   r  r   s    r   r  z&ASTDeclaratorNameParam.function_params      z))r   rs   c                    | j         d uS r   rO  r   s    r   rF  z4ASTDeclaratorNameParam.require_space_after_declSpecs      {$&&r   r   r   r   c                (   g }| j         r#|                     || j                              | j        D ] }|                     ||                     !| j        r#|                     || j                             d                    |          S r  )rI  r  rJ  r   r   )r   r   r   r  s       r   r   z!ASTDeclaratorNameParam._stringify  s    ; 	/JJyy--...- 	& 	&BJJyy}}%%%%: 	.JJyy,,---wws||r   r   r3   r   r   r8   r   r   c                    t          |           | j        r| j                            ||||           | j        D ]}|                    ||||           | j        r| j                            ||||           d S d S r   )r)   rI  r   rJ  r   )r   r   r   r   r   r  s         r   r   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r   N)rI  r   rJ  rK  r   r   rW   r   r  r  r   r  r   
r   r   r   r   r  r   r  rF  r   r   r   r   r   rH  rH    s               X * * * X*
' ' ' '   F F F F F Fr   rH  c                  F    e Zd ZddZedd            Zdd	ZddZddZdS )ASTDeclaratorNameBitFieldrI  r   r9  r  c                "    || _         || _        d S r   rI  r9  )r   rI  r9  s      r   r   z"ASTDeclaratorNameBitField.__init__  s    			r   rW   c                    | j         S r   rO  r   s    r   r   zASTDeclaratorNameBitField.name  rP  r   rs   c                    | j         d uS r   rO  r   s    r   rF  z7ASTDeclaratorNameBitField.require_space_after_declSpecs  rT  r   r   r   r   c                    g }| j         r#|                     || j                              |                    d           |                     || j                             d                    |          S )Nz : r   )rI  r  r9  r   r   s      r   r   z$ASTDeclaratorNameBitField._stringify  so    ; 	/JJyy--...

5

99TY''(((wws||r   r   r3   r   r   r8   r   r   r   c                .   t          |           | j        r| j                            ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )N:)r)   rI  r   r   r  r  r9  r   s        r   r   z,ASTDeclaratorNameBitField.describe_signature  s    %%%; 	GK**7D#vFFF8*,,,80c:::8*,,,	$$WdC@@@@@r   N)rI  r   r9  r  r  r   r  r   )	r   r   r   r   r  r   rF  r   r   r   r   r   rY  rY    s               X
' ' ' '   A A A A A Ar   rY  c                  ^    e Z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nextrB  rV   rs   rb   rF   r  r   rW   r   c                T    |sJ || _         || _        || _        || _        || _        d S r   rc  rV   rb   rF   r  )r   rc  rV   rb   rF   r  s         r   r   zASTDeclaratorPtr.__init__  s2    	  



r   r   c                    | j         j        S r   )rc  r   r   s    r   r   zASTDeclaratorPtr.name      y~r   r  c                    | j         j        S r   )rc  r  r   s    r   r  z ASTDeclaratorPtr.function_params      y((r   c                    | j         p>| j        p7| j        p0t          | j                  dk    p| j                                        S r   )rF   rb   rV   r   r  rc  rF  r   s    r   rF  z.ASTDeclaratorPtr.require_space_after_declSpecs  sI    z 6T] 6dm 6
OOa6I3355	6r   r   r   r   c                   dg}|                      || j                             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   r  rV   rb   rF   r   )	r  r  r   rV   rb   rF   rc  rF  r   r   s      r   r   zASTDeclaratorPtr._stringify#  sn   e

99TZ(()))tz??aT]dmtzJJsOOO= 	#JJz"""= 	#}  

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

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

3

99TY''(((wws||r   r   r3   r   r   r8   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   r3   r   r   rW   r   c                6    | t          j        ||          z  } d S r   )r   r"  )r   r   s     r   	_add_annoz6ASTDeclaratorPtr.describe_signature.<locals>._add_anno@  s    x0t<<<GGGr   rV   rb   rF   )r   r3   r   r   rW   r   )r)   r   r  r  r   r   rV   rb   rF   r  rc  rF  )r   r   r   r   r   rn  s         r   r   z#ASTDeclaratorPtr.describe_signature8  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@@@@@r   N)rc  rB  rV   rs   rb   rs   rF   rs   r  r   rW   r   r  r  r   r  r   rW  r   r   r   rb  rb    s               X ) ) ) X)6 6 6 6
   *A A A A A Ar   rb  c                  ^    e Z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innerrB  rc  rW   r   c                2    |sJ |sJ || _         || _        d S r   rq  rc  )r   rq  rc  s      r   r   zASTDeclaratorParen.__init__T  s&    
			r   r   c                    | j         j        S r   )rq  r   r   s    r   r   zASTDeclaratorParen.name[  s    zr   r  c                    | j         j        S r   )rq  r  r   s    r   r  z"ASTDeclaratorParen.function_params_  rR  r   rs   c                    dS r?  r   r   s    r   rF  z0ASTDeclaratorParen.require_space_after_declSpecsc  rv  r   r   r   r   c                    dg}|                      || j                             |                     d           |                      || j                             d                    |          S r  )r  rq  rc  r   r   s      r   r   zASTDeclaratorParen._stringifyf  sd    e

99TZ(()))

3

99TY''(((wws||r   r   r3   r   r   r8   r   r   c                    t          |           |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            |d||           d S )NrX  rY  r   )r)   r   r  rq  r   rc  r   s        r   r   z%ASTDeclaratorParen.describe_signaturem  s|    %%%80c:::
%%gtS&AAA80c:::	$$WlCHHHHHr   N)rq  rB  rc  rB  rW   r   r  r  r   r  r   rW  r   r   r   rp  rp  S  s               X * * * X*      I I I I I Ir   rp  c                  &    e Zd ZddZdd	ZddZdS )ASTParenExprListr  r  rW   r   c                    || _         d S r   )r  )r   r  s     r   r   zASTParenExprList.__init__z  r  r   r   r   r   c                Z    fd| j         D             }dd                    |          z  S )Nc                &    g | ]} |          S r   r   r   er   s     r   
<listcomp>z/ASTParenExprList._stringify.<locals>.<listcomp>~  s!    222!1222r   z(%s)r	  )r  r   )r   r   r  s    ` r   r   zASTParenExprList._stringify}  s5    2222tz222		%((((r   r   r3   r   r   r8   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 )NrX  Tr  FrY  )r)   r   r  r  r  r   r   r   r   r   r   r  r  s          r   r   z#ASTParenExprList.describe_signature  s    %%%80c::: 	= 	=A 88cBBB82444  $V<<<<80c:::r   N)r  r  rW   r   r  r   r%  r   r   r   rz  rz  y  sP           ) ) ) ); ; ; ; ; ;r   rz  c                  &    e Zd ZddZddZddZdS )ASTBracedInitListr  r  trailingCommars   rW   r   c                "    || _         || _        d S r   )r  r  r   r  r  s      r   r   zASTBracedInitList.__init__  s    
*r   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   r   r~  s     r   r   z/ASTBracedInitList._stringify.<locals>.<genexpr>  s+      ;;1))A,,;;;;;;r   r  r   {})r   r  r  )r   r   r  r  s    `  r   r   zASTBracedInitList._stringify  sR    		;;;;
;;;;;#19r,E,=,,,,r   r   r3   r   r   r8   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 )Nr  Tr  Fr  )r)   r   r  r  r  r   r  r  s          r   r   z$ASTBracedInitList.describe_signature  s    %%%80c::: 	= 	=A 88cBBB82444  $V<<<< 	?x4S#>>>G80c:::r   N)r  r  r  rs   rW   r   r  r   r%  r   r   r   r  r    sP        + + + +- - - -
; ; ; ; ; ;r   r  c                  *    e Zd Z	 dddZddZddZdS )ASTInitializerTr  !ASTBracedInitList | ASTExpression	hasAssignrs   rW   r   c                "    || _         || _        d S r   r  r  )r   r  r  s      r   r   zASTInitializer.__init__  s    
"r   r   r   r   c                >     || j                   }| j        rd|z   S |S )Nz = r  )r   r   vals      r   r   zASTInitializer._stringify  s,    i
##> 	3;Jr   r   r3   r   r   r8   r   r   c                    t          |           | j        rD|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            |d||           d S )Nr   r   )r)   r  r   r  r  r  r   r   s        r   r   z!ASTInitializer.describe_signature  sy    %%%> 	1x.000Gx4S#>>>Gx.000G
%%gz3GGGGGr   NT)r  r  r  rs   rW   r   r  r   r%  r   r   r   r  r    s^        #'# # # # #
   H H H H H Hr   r  c                  f    e Z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(  declrB  rW   r   c                2    |sJ |sJ || _         || _        d S r   )r  r  )r   r  r  s      r   r   zASTType.__init__  s)    "			r   r   c                    | j         j        S r   )r  r   r   s    r   r   zASTType.name  rg  r   r   rS   r  r   r   r   c                P    |                                                     |          S r   get_full_nested_namer   r  s       r   r   zASTType.get_id  "    **,,33G<<<r   r  c                    | j         j        S r   )r  r  r   s    r   r  zASTType.function_params  ri  r   r   r   c                B   g } || j                   }|                    |           | j                                        r(t	          |          dk    r|                    d           |                     || j                             d                    |          S r1  )r  r  r  rF  r   r   )r   r   r   r  s       r   r   zASTType._stringify  s    Idn--	

992244 	Y!9K9KJJsOOO

99TY''(((wws||r   c                "    | j         j        rdS dS )Nr^   r   )r  r/  r   s    r   get_type_declaration_prefixz#ASTType.get_type_declaration_prefix  s    >* 	96r   r   r3   r   r   r8   c                P   t          |           | j                            |d||           | j                                        r;t          t          | j                            dk    r|t          j                    z  }|dk    rd}| j                            ||||           d S )Nr   r   r   )	r)   r  r   r  rF  r   r   r   r  r   s        r   r   zASTType.describe_signature  s    %%%))':sFKKKI3355 	1C''((1,,x.000G :D	$$WdC@@@@@r   N)r  r(  r  rB  rW   r   r  r  r  r  r   r   )r   r   r   r   r  r   r   r  r   r  r   r   r   r   r?   r?     s               X= = = = ) ) ) X)      A A A A A Ar   r?   c                  F    e Zd ZddZedd	            ZddZddZddZdS ) r@   r   r?   initr  rW   r   c                "    || _         || _        d S r   )r   r  )r   r   r  s      r   r   zASTTypeWithInit.__init__  s    				r   r   c                    | j         j        S r   )r   r   r   s    r   r   zASTTypeWithInit.name  rg  r   r   rS   r  r   r   r   c                :    | j                             |||          S r   )r   r   r  s       r   r   zASTTypeWithInit.get_id  s    yV<<<r   r   r   c                    g }|                      || j                             | j        r#|                      || j                             d                    |          S r  )r  r   r  r   r   s      r   r   zASTTypeWithInit._stringify  s]    

99TY''(((9 	-JJyy++,,,wws||r   r   r3   r   r   r8   c                    t          |           | j                            ||||           | j        r| j                            ||||           d S d S r   )r)   r   r   r  r   s        r   r   z"ASTTypeWithInit.describe_signature  se    %%%	$$WdC@@@9 	EI(($VDDDDD	E 	Er   N)r   r?   r  r  rW   r   r  r  r  r   r  r   r   r   r@   r@     s               X= = = =   E E E E E Er   r@   c                  ,    e Zd Z	 	 ddd	ZddZddZdS )ASTMacroParameterFr  ASTNestedName | Noner  rs   variadicrW   r   c                0    || _         || _        || _        d S r   )r  r  r  )r   r  r  r  s       r   r   zASTMacroParameter.__init__  s      r   r   r   r   c                h    | j         rdS | j        r || j                  dz   S  || j                  S r  )r  r  r  r   s     r   r   zASTMacroParameter._stringify  sD    = 	'5] 	'9TX&&..9TX&&&r   r   r   r   r   r8   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   r   r  r   )r   r   r   r   r   r   s         r   r   z$ASTMacroParameter.describe_signature  s    %%%= 	Kx4UEBBBGGG] 	Kt99Dx-dD999GGGH''s6'JJJJJr   N)FF)r  r  r  rs   r  rs   rW   r   r  r  r%  r   r   r   r  r    sa        CH"'! ! ! ! !' ' ' '	K 	K 	K 	K 	K 	Kr   r  c                  F    e Zd ZddZedd            ZddZddZddZdS )rA   r
  r   r  list[ASTMacroParameter] | NonerW   r   c                "    || _         || _        d S r   )r
  r  )r   r
  r  s      r   r   zASTMacro.__init__(  s    
			r   c                    | j         S r   )r
  r   s    r   r   zASTMacro.name,  s
    zr   r   rS   r  r   r   r   c                P    |                                                     |          S r   r  r  s       r   r   zASTMacro.get_id0  r  r   r   r   c                ^   g }|                      || j                             | j        m|                     d           d}| j        D ]9}|s|                     d           d}|                      ||                     :|                     d           d                    |          S )NrX  Tr	  FrY  r   )r  r
  r  r   )r   r   r   r  r  s        r   r   zASTMacro._stringify3  s    

99TZ(()))9 JJsOOOEy + + %JJt$$$

99S>>****JJsOOOwws||r   r   r3   r   r   r8   c                   t          |           | j                            ||||           | j        d S t	          j                    }| j        D ]7}t	          j        ddd          }|                    |d||           ||z  }8||z  }d S )Nr   Tr  r   r  )r)   r
  r   r  r   r  r  )r   r   r   r   r   r  r  r   s           r   r   zASTMacro.describe_signatureA  s    %%%
%%gtS&AAA9F/11	9 	 	C+B4@@@E""5'3v"FFFII9r   N)r
  r   r  r  rW   r   r  r  r  r   r  r   r   r   rA   rA   '  s               X= = = =        r   rA   c                  .    e Zd ZddZddZddZddZdS )r;   r   r   rW   r   c                    || _         d S r   rH  rI  s     r   r   zASTStruct.__init__P  r,  r   r   rS   r  r   r   r   c                P    |                                                     |          S r   r  r  s       r   r   zASTStruct.get_idS  r  r   r   r   c                "     || j                   S r   rH  r   s     r   r   zASTStruct._stringifyV  rK  r   r   r3   r   r   r8   c                `    t          |           | j                            ||||           d S r  r)   r   r   r   s        r   r   zASTStruct.describe_signatureY  5    %%%	$$WdC$GGGGGr   Nr   r   rW   r   r  r  r   r  r   r   r   r;   r;   O  j           = = = =$ $ $ $H H H H H Hr   r;   c                  .    e Zd ZddZddZddZddZdS )r<   r   r   rW   r   c                    || _         d S r   rH  rI  s     r   r   zASTUnion.__init__`  r,  r   r   rS   r  r   r   r   c                P    |                                                     |          S r   r  r  s       r   r   zASTUnion.get_idc  r  r   r   r   c                "     || j                   S r   rH  r   s     r   r   zASTUnion._stringifyf  rK  r   r   r3   r   r   r8   c                `    t          |           | j                            ||||           d S r  r  r   s        r   r   zASTUnion.describe_signaturei  r  r   Nr  r  r  r   r  r   r   r   r<   r<   _  r  r   r<   c                  .    e Zd ZddZddZddZddZdS )r=   r   r   rW   r   c                    || _         d S r   rH  rI  s     r   r   zASTEnum.__init__p  r,  r   r   rS   r  r   r   r   c                P    |                                                     |          S r   r  r  s       r   r   zASTEnum.get_ids  r  r   r   r   c                "     || j                   S r   rH  r   s     r   r   zASTEnum._stringifyv  rK  r   r   r3   r   r   r8   c                `    t          |           | j                            ||||           d S r  r  r   s        r   r   zASTEnum.describe_signaturey  r  r   Nr  r  r  r   r  r   r   r   r=   r=   o  r  r   r=   c                  .    e Zd Zdd	ZddZddZddZdS )r>   r   r   r  ASTInitializer | Noner  r   rW   r   c                0    || _         || _        || _        d S r   )r   r  r  )r   r   r  r  s       r   r   zASTEnumerator.__init__  s    		


r   r   rS   r  r   r   r   c                P    |                                                     |          S r   r  r  s       r   r   zASTEnumerator.get_id  r  r   r   r   c                j   g }|                      || j                             t          | j                  dk    r8|                     d           |                      || j                             | j        r#|                      || j                             d                    |          S r1  )r  r   r   r  r  r   r   s      r   r   zASTEnumerator._stringify  s    

99TY''(((tz??aJJsOOOJJyy,,---9 	-JJyy++,,,wws||r   r   r3   r   r   r8   c                :   t          |           | j                            ||||           t          | j                  dk    r0|t          j                    z  }| j                            |           | j        r| j                            |d||           d S d S )Nr   r   )r)   r   r   r   r  r   r  r  r   s        r   r   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r   N)r   r   r  r  r  r   rW   r   r  r  r   r  r   r   r   r>   r>     sj           = = = =   K K K K K Kr   r>   c                  t    e Zd Z	 d$d%dZd&dZed'd            Zed(d            Zd)d*dZd+dZ	d,dZ
d-d"Zd#S ).r   Fr  r   directiveType
str | Noner   &DeclarationType | ASTFunctionParameter	semicolonrs   rW   r   c                Z    || _         || _        || _        || _        d | _        d | _        d S r   )r  r  r   r  r   enumeratorScopedSymbolr   r  r  r   r  s        r   r   zASTDeclaration.__init__  s7     %*&"".2###r   c                r    t          | j        | j        | j                                        | j                  S r   )r   r  r  r   cloner  r   s    r   r  zASTDeclaration.clone  s6    dot/A".4466H H 	Hr   r   c                D    t          t          | j                  }|j        S r   )r	   DeclarationTyper   r   r   r  s     r   r   zASTDeclaration.name  s    OT%566yr   !list[ASTFunctionParameter] | Nonec                ^    | j         dk    rd S t          t          | j                  }|j        S )Nfunction)r  r	   r?   r   r  r  s     r   r  zASTDeclaration.function_params  s/    ?j((4GT-..##r   Tr   rS   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   
_id_prefix)r   r   r  id_s       r   r   zASTDeclaration.get_id  sn    ?l**t/J*.:AA'8TTT%%gtLL 	g&,,Jr   c                8    |                      t          d          S r?  )r   _max_idr   s    r   get_newest_idzASTDeclaration.get_newest_id  s    {{7D)))r   r   r   c                >     || j                   }| j        r|dz  }|S )N;)r   r  r   s      r   r   zASTDeclaration._stringify  s,    i())> 	3JC
r   r   r3   r   r   r8   optionsdictc                   t          |           | j        sJ d|d<   t          j                    }d|_        | j        j         |d<   ||z  }| j        dv rnX| 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  }no| j        d
k    r]t          t          | 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  r\   r_   rL   r  r   r  )r)   r   r   desc_signature_linesphinx_line_typeisRedeclarationr  r"  r  r	   r?   r   r  r  r   r  r  )r   r   r   r   r  mainDeclNoder  r   s           r   r   z!ASTDeclaration.describe_signature  s   %%%{ #'355(4%,0K,G(G_%<?===_((H5hIIILH3555LL_''H5gwGGGLH3555LL_&&H5ffEEELH3555LL_,,H5lLQQQLH3555LL_&&!122D5577FH5ffEEELH3555LL  ++L$T[QQQ> 	DH9#sCCCLLL	D 	Dr   Nr  )
r  r   r  r  r   r  r  rs   rW   r   )rW   r   r  )rW   r  r  )r   rS   r  rs   rW   r   r   r  )
r   r3   r   r   r   r8   r  r  rW   r   )r   r   r   r   r  r  r   r  r   r  r   r   r   r   r   r   r     s         $)
3 
3 
3 
3 
3H H H H    X $ $ $ X$    * * * *   $D $D $D $D $D $Dr   r   c                      e Zd Zdd	Zd
S )SymbolLookupResultsymbolsIterator[Symbol]parentSymbolr   r
  r   rW   r   c                0    || _         || _        || _        d S r   )r  r  r
  )r   r  r  r
  s       r   r   zSymbolLookupResult.__init__  s    (


r   N)r  r  r  r   r
  r   rW   r   )r   r   r   r   r   r   r   r  r    s(             r   r  c                      e Zd Zd	dZd
dZdS )	LookupKeyr(  list[tuple[ASTIdentifier, str]]rW   r   c                    || _         d S r   r*  r+  s     r   r   zLookupKey.__init__  r,  r   r   c                V    d                     d | j        D                       }d| dS )Nr	  c              3  .   K   | ]\  }}d | d| dV  dS )rX  r	  rY  Nr   )r   r
  r  s      r   r   z$LookupKey.__str__.<locals>.<genexpr>  s:      JJ*%-e--s---JJJJJJr   ro  rp  )r   r(  )r   rq  s     r   r   zLookupKey.__str__   s2    		JJ	JJJJJ5|||r   N)r(  r   rW   r   r   r   r   r   r   r  r    s<                r   r  c                  ,    e Zd ZdZdZdZdZd Zd Ze	dEd
            Z
dFdZdG fdZdHdZdIdZdFdZdFdZdJdZdKd!ZedKd"            ZedKd#            ZdLd%ZdMd'ZdNd,ZdOd.ZdPd4ZdQd5ZdRd;ZdSd<ZdTd=ZdUd>ZdVd?Z dWdAZ!dXdCZ"dXdDZ# xZ$S )Yr   r   z  Fc                    t           r   )r  r   s    r   __copy__zSymbol.__copy__  s    r   c                D    | j         rt          t          d d d d d           S r   )r  r  r   )r   memos     r   __deepcopy__zSymbol.__deepcopy__  s(    ; 	!  dD$d333r   r  r   rW   r   c                     t                               t          j        t          j        z  d           t          j        |   d S )Nr   end)loggerdebugr   debug_indent_stringdebug_indentr  s    r   debug_printzSymbol.debug_print  s6    V/&2EE2NNNdr   c                `    | j         s| j        rJ | j        rJ d S | j        r	| j        sJ d S d S r   )r  r   docnamer   s    r   _assert_invariantszSymbol._assert_invariants  sX    { 	$''''|##### $|###$ $##r   keyr   r  c                b    |dk    rt           t                                          ||          S )Nr%  )r  super__setattr__)r   r  r  	__class__s      r   r  zSymbol.__setattr__"  s.    *  ww""3...r   r  r
  r   r   ASTDeclaration | Noner  r  line
int | Nonec                T   || _         d | _        d | _        || _        || _        || _        || _        d| _        |                                  g | _	        g | _
        | j         r| j         j	                            |            | j        r| | j        _        |                                  d S )NF)r  siblingAbovesiblingBelowr
  r   r  r  r  r  	_children_anonChildrenr  r   _add_function_params)r   r  r
  r   r  r  s         r   r   zSymbol.__init__'  s     $($(
&	$!!! (*+-; 	/K!((... 	+&*D# 	!!#####r   r   rS   c                   |                                   | j        J | j        J | j        J |J |J |J || _        | | j        _        || _        || _        |                                   |                                  d S r   )r  r   r  r  r   r"  )r   r   r  r  s       r   _fill_emptyzSymbol._fill_emptyF  s    !!!'''|###y   &&&"""&"&	!!!!!#####r   c                   t           j        r/t           xj        dz  c_        t                               d           | j        | j        j        || j        j        D ]o}|j        
|j        j        }|t          dd |          }|j	        rJ t          |j                  dk    sJ |                     ||| j        | j                   pt           j        rt           xj        dz  c_        d S d S )Nr   z_add_function_params:functionParam)r   debug_lookupr  r  r   r  r  r   r   r   r   r   _add_symbolsr  r  )r   r  nnr  s       r   r"  zSymbol._add_function_paramsV  s    	81$6777
 'D,<,L,X%5 
E 
E5=UZ:%otQ??9$$$28}}))))!!"dDL$)DDDD 	%1$	% 	%r   c                    | j         d S | | j         j        v sJ | j         j                            |            d | _         d S r   )r  r   remover   s    r   r+  zSymbol.removem  sI    ;Ft{,,,,,$$T***r   c                   | j         D ]|}|                    |           |j        r^|j        |k    rSd |_        d |_        d |_        |j        |j        |j        _        |j        |j        |j        _        d |_        d |_        }d S r   )r   	clear_docr   r  r  r  r  )r   r  sChilds      r   r-  zSymbol.clear_doct  s    n 	+ 	+FW%%%! 	+fn&?&?%)"!%"&27=7JF'4&27=7JF'4&*#&*#	+ 	+r   r  c              #  Z   K   | V  | j         D ]}|                                E d {V  d S r   )r   get_all_symbols)r   r.  s     r   r0  zSymbol.get_all_symbols  sQ      


n 	0 	0F--//////////	0 	0r   c              #  $   K   | j         E d {V  d S r   )r   r   s    r   r%  zSymbol.children  s&      >!!!!!!!!!r   c              #  t   K   | j         D ]-}|V  |j                                        s |j        E d {V  .d S r   )r   r
  r   children_recurse_anon)r   r   s     r   r3  zSymbol.children_recurse_anon  s_       	/ 	/AGGG7??$$ .........		/ 	/r   r  c                `   g }| }|j         r#|                    |           |j         }|j         #|                                 g }|D ]Y}|j        4|                    |j        |j                                        f           =|                    |j        d f           Zt          |          S r   )r  r  reverser   r
  r  r  )r   r  sr  s       r   r   zSymbol.get_lookup_key  s    
 h 	NN1A h 	 	 	, 	,A}(

AGQ]%@%@%B%BCDDDD

AGT?++++~~r   r   c                    g }| }|j         r#|                    |           |j         }|j         #|                                 g }|D ]}|                    |j                   t	          |d          S )NFr   )r  r  r5  r
  r   )r   r  r6  r   s       r   r  zSymbol.get_full_nested_name  s    h 	NN1A h 	 	 	" 	"ALL!!!!U51111r   	matchSelfrs   recurseInAnonSymbol | Nonec                    t           j        rt                               d           |                     |||d          }	 t	          |          S # t
          $ r Y d S w xY w)Nz_find_first_named_symbol ->F)searchInSiblings)r   r'  r  _find_named_symbolsrc  StopIteration)r   r
  r9  r:  r   s        r   _find_first_named_symbolzSymbol._find_first_named_symbol  sz      	><===&&ui8= ' ? ?	99 	 	 	44	s   A 
AAr=  c              #  j   K   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d           t                                                   t           j        dz             d           t                               d|           t                               d           t                               d           t                               d	|           d fd} |            D ]}t           j        rVt                               d           t                              |                    t           j        dz             d           |j        |k    rut           j        rDt           xj        dz  c_        t                               d           t           xj        dz  c_        |V  t           j        rt           xj        dz  c_        t           j        rt           xj        dz  c_        d S d S )Nr   z_find_named_symbols:self:r   r  zident:            zmatchSelf:        zrecurseInAnon:    zsearchInSiblings: rW   Generator[Symbol, None, None]c               3    K   } t           j        rVt                               d           t                              |                     t           j        dz             d           	 r| V  r| j        E d {V  n| j        E d {V  | j	        d S | j	        } t           j        rVt                               d           t                              |                     t           j        dz             d           )Nzsearching in self:r   r   r  Tzsearching in sibling:)
r   r'  r  r  r  	to_stringr  r3  r   r  )r6  r9  r:  r   s    r   
candidatesz.Symbol._find_named_symbols.<locals>.candidates  s     A" K""#7888Q[[)<q)@AArJJJO GGG  + 666666666 {*******>)EN& O&&'>???LLV-@1-D!E!E2LNNNOr   z
candidate:matches      )rW   rC  )r   r'  r  r  r  r  rE  r
  )r   r
  r9  r:  r=  rF  r6  s   ` ``   r   r>  zSymbol._find_named_symbols  s,       		G1$56661$w'''LL(;a(?@@bLIII3U;;;3Y???3]CCC35EFFF	O 	O 	O 	O 	O 	O 	O 	O(  	- 	-A" K""<000Q[[)<q)@AArJJJw%& -''1,''&&y111''1,''& -''1,'' 	%1$	% 	%r   r  onMissingQualifiedSymbol0Callable[[Symbol, ASTIdentifier], Symbol | None]ancestorLookupTypeSymbolLookupResult | Nonec                    t           j        r!t           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d           t                              |                     t           j        dz             d           t                               d|           t                               d|           t                               d|           t                               d	|           t                               d
|           |j        }| }|j        r|j	        r|j	        }|j	        |7|d         }	|j	        r(|
                    |	|||          rn|j	        }|j	        (t           j        rVt                               d           t                              |                    t           j        dz             d           |d d         D ]R}
|                    |
||          }|2 |||
          }|$t           j        rt           xj        dz  c_         d S d}|}St           j        rVt                               d           t                              |                    t           j        dz             d           |d         }
|                    |
|||          }t           j        r$t          |          }t           xj        dz  c_        t          |||
          S )Nr   z_symbol_lookup:rB  r   r  znestedName:        zancestorLookupType:zmatchSelf:         zrecurseInAnon:     zsearchInSiblings:  r   r9  r:  r=  zstarting point:r   r9  r:  rI  Fzhandle last name from:)r   r'  r  r  r  r  rE  r   r   r  find_identifierr@  r>  listr  )r   r  rJ  rL  r9  r:  r=  r   r  	firstNamer
  r   r  s                r   _symbol_lookupzSymbol._symbol_lookup  s.     
	H1$01111$w'''LL(;a(?@@bLIII4jAAA46HIII4i@@@4mDDD46FGGG   	3% 3+2 % 3)aI% 3//	:C>KAQ 0 S S  +2 % 3  	R0111LL//0Ca0GHHbLQQQ 3B3Z 	" 	"E!::- ; I IF~11,FF>* 1++q0++44 I!LL 	R7888LL//0Ca0GHHbLQQQ b	22Y'- 3 / /  	%7mmG1$!'<???r   c                
   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d|           t                               d           t                               d d            d&d}|                     ||d ddd          J t          j                  }t          |          dk    rt           j        rt                               d           t           xj        dz  c_        t                               dj                   t                               d           t                               d d            t           xj        dz  c_        t          j	        j                  }t           j        rt           xj        dz  c_        |S t           j        rlt                               d           t           xj        dz  c_        t                               dt          |                     t           xj        dz  c_        sCt           j        r/t                               d           t           xj        dz  c_        |d         S g }g }	g }
|D ]Q}|j
        |                    |           |j        r|
                    |           <|	                    |           Rt           j        rxt                               dt          |                     t                               dt          |	                     t                               dt          |
                     d'fd}t          |	          dk    rd }n |            }d(fd }j        d!k    r't          |	          dk    sJ  ||	d         |                                           }t           j        rt                               d"|           |	D ]T}|j
                                        }t           j        rt                               d#|           ||k    r |||           Ut          |          dk    rLt           j        r2t                               d$|d u           t           xj        dz  c_        ||S  |            S t           j        r2t                               d%|d u           t           xj        dz  c_        ||                                 |d         }|                               |S ))Nr   z_add_symbols:z
nn:       z
decl:     z
location: r`  r  r   r
  r   rW   c                *   t           j        rtt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d|           t           xj        dz  c_        t          | |d d d           S )Nr   z'_add_symbols, onMissingQualifiedSymbol:zident: rI  r  r
  r   r  r  )r   r'  r  r  r  r
  s     r   rJ  z5Symbol._add_symbols.<locals>.onMissingQualifiedSymbolQ  s    " )##q(##""#LMMM##q(##""9e444##q(##U&*DtE E E Er   FrL  r9  r:  r=  r   z _add_symbols, result, no symbol:zident:       zdeclaration: zlocation:    rW  rI  z_add_symbols, result, symbols:znumber symbols:zno declarationz
#noDecl:  z
#withDecl:z
#dupDecl: c                     t           j        rt                               d           t          j        j                  } t           j        rt                               d           | S )Nz begin: creating candidate symbolrW  z end:   creating candidate symbol)r   r'  r  r  r
  )r   r   r  r  lookupResults    r   makeCandSymbolz+Symbol._add_symbols.<locals>.makeCandSymbol  ss    " G""#EFFF<#<"."4(3$+$8 8 8F " G""#EFFFMr   r   
candSymbolr   c                    t           j        rYt           xj        dz  c_        t                               d           t           xj        dz  c_        t           xj        dz  c_        d|_        t          |           )Nr   redeclarationrI  T)r   r'  r  r  r  r   )r   r]  r   s     r   handleDuplicateDeclarationz7Symbol._add_symbols.<locals>.handleDuplicateDeclaration  sx    & -''1,''&&777''1,''''1,''
 .2
*+FK@@@r   r  zcandId:zoldId: z,no match, no empty, candSybmol is not None?:zAno match, but fill an empty declaration, candSybmol is not None?:)r  r   r
  r   rW   r   )rW   r   )r   r   r]  r   rW   r   )r   r'  r  r  rT  rR  r  r   r
  r  r   r  r  r  r  r+  r$  )r   r  r   r  r  rJ  r  r   noDeclwithDecldupDeclr6  r\  r]  r`  candIdoldIdr[  s     ```            @r   r(  zSymbol._add_symbols>  s     	>1$///1$|Z888|[999<G<<d<<===	E 	E 	E 	E **:+C>B5:9><A + C C '''|+,,w<<1" )""#EFFF##q(##""?L4FGGG""?K@@@""#C7#C#CT#C#CDDD##q(##<#<"."4(3$+$8 8 8F " )##q(##M 	%?@@@1$0#g,,???1$ 	" )""#3444##q(## 1: 	# 	#A}$a    " #q!!!!"""" 	;|S[[999|S]];;;|S\\:::		 		 		 		 		 		 		 		 		 x==AJJ'))JA A A A A A %338}}))))**8A;
CCC !..00F" 6""9f555" C C*88::& 9&&y%888U??..vzBBB v;;!" )""BJVZDZ   ##q(##%!!%~'''" )""Wd*, , , ##q(##%!!### AYF {GT:::Mr   r   docnamesr  r   r8   c                *   t           j        r/t           xj        dz  c_        t                               d           |J |j        D ]'}|                     |j        dd          }|6| j                            |           | |_        |	                                 X|j
        r|j        |v r|j
        s'|                    |j
        |j        |j                   nz|j        |j        k    rit          |j
                  }t          d          }||j        |j        |j
        j        |fz  }t"                              ||j        |j        f           n	 |                    |||           )t           j        rt           xj        dz  c_        d S d S )Nr   zmerge_with:F)r
  r9  r:  NDuplicate C declaration, also defined at %s:%s.
Declaration is '.. c:%s:: %s'.location)r   r'  r  r  r   r@  r
  r  r  r  r   r  r$  r  r   r   r  r  warning
merge_with)r   r   rf  r   
otherChildourChildr   msgs           r   rl  zSymbol.merge_with  s    	.1$}---   / 	; 	;J44 &%# 5 % %H %%j111$(
!--///% **<*H*H+ (()?)3);Z_N N N N%);;;x344D > ? ?C!18=!)!5!CT!K KCNN3*2Djo1VNWWWW
 
Hc:::: 	%1$	% 	%r   c                    t           j        r/t           xj        dz  c_        t                               d           |                     |d d d           }t           j        rt           xj        dz  c_        |S )Nr   z	add_name:)r   r  r  )r   r'  r  r  r(  )r   r  r   s      r   add_namezSymbol.add_name	  sv     	,1${+++
dQUVV 	%1$
r   c                   t           j        r/t           xj        dz  c_        t                               d           |J |J |J |j        }|                     ||||          }t           j        rt           xj        dz  c_        |S )Nr   zadd_declaration:)r   r'  r  r  r   r(  )r   r   r  r  r  r   s         r   add_declarationzSymbol.add_declaration  s     	31$1222&&&""" %

K$GG 	%1$
r   c                   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d|           t                               d|           t                               d|           t                               d|           t                              |                     t           j        dz             d           t           xj        d	z  c_        | }|t           j        rt           xj        d	z  c_        t                               d
           t                              |                    t           j        dz             d           t           xj        d	z  c_        |r|j        |k    r|S |r|j        n|j	        }|D ]}|j        |k    r|c S |sn	|j
        }|d S )Nr   zfind_identifier:zident:           zmatchSelf:       zrecurseInAnon:   zsearchInSiblings:r   r  rI  ztrying:)r   r'  r  r  r  r  rE  r
  r3  r   r  )r   r
  r9  r:  r=  currentr%  r6  s           r   rQ  zSymbol.find_identifier   s     		%1$12221$2E:::2I>>>2MBBB24DEEELL(;a(?@@bLIII1$!" )##q(##""9---W..v/BQ/FGGRPPP##q(## W]e338E\w447K\H  7e##HHH $# *G ! tr   c                   t           j        rDt           xj        dz  c_        t                               d           t           xj        dz  c_        | }|j        D ]\  }}d }|j        D ]}|j        |k    r|} n|}t           j        rt                               d|           t                               d|           |=t                              |	                    t           j        dz             d           nt                               d           |$t           j        rt           xj        dz  c_         d S t           j        rt           xj        dz  c_        |S )	Nr   zdirect_lookup:zname:          zid:            r   r  z	not foundrI  )
r   r'  r  r  r(  r   r
  r  r  rE  )r   r  r6  r   r  r   cands          r   direct_lookupzSymbol.direct_lookup?  sr    	%1$/0001$ 	 	ID#C  :%%CE & A" 4""#4d;;;""#4c:::=LLV-@1-D!E!E2LNNNN&&{333y& -''1,''tt   	%1$r   r  c                b   t           j        r/t           xj        dz  c_        t                               d           dd	}|                     |||||d
          }t           j        rt           xj        dz  c_        |d S t          |j                  }t          |          dk    rd S |d         S )Nr   zfind_declaration:r  r   r
  r   rW   r;  c                    d S r   r   rX  s     r   rJ  z9Symbol.find_declaration.<locals>.onMissingQualifiedSymbolb  s	     4r   FrY  r   )r  r   r
  r   rW   r;  )r   r'  r  r  rT  rR  r  r   )r   r  r  r9  r:  rJ  r[  r  s           r   find_declarationzSymbol.find_declaration[  s      	41$2333	 	 	 	 **:+C>A5>9F<A + C C  	%1$4|+,,w<<14qzr   indentc                   t           j        |z  g}| j        s|                    d           n| j        r(|                    t          | j                             n'|                    t          | j                             | j        rX|                    d           | j        r|                    d           |                    t          | j                             | j        rD|                    d           |                    | j                   |                    d           |                    d           d	                    |          S )Nz::z: z!!duplicate!! z	(rY  
r   )
r   r  r  r  r
  r   r   r  r  r   )r   r|  r   s      r   rE  zSymbol.to_stringx  s.   )F23{ 	2JJtz 2

3tz??++++

3t/00111 2

4   ' 1JJ/000

3t/00111< 	JJuJJt|$$$JJsOOO

4wws||r   c                    |                      |          g}| j        D ]-}|                    |                    |dz                        .d                    |          S )Nr   r   )rE  r   r  r   r   )r   r|  r   r   s       r   r   zSymbol.dump  s\    ~~f%%& 	+ 	+AJJqvvfqj))****wws||r   )r  r   rW   r   rW   r   )r  r   r  r   rW   r   )r  r   r
  r   r   r  r  r  r  r  rW   r   )r   r   r  r   r  rS   rW   r   r  r   rW   r   )rW   r  )rW   r  r  )r
  r   r9  rs   r:  rs   rW   r;  )
r
  r   r9  rs   r:  rs   r=  rs   rW   r  )r  r   rJ  rK  rL  r  r9  rs   r:  rs   r=  rs   rW   rM  )
r  r   r   r  r  r  r  r  rW   r   )r   r   rf  r  r   r8   rW   r   )r  r   rW   r   )r   r   r  r   r  rS   rW   r   )
r
  r   r9  rs   r:  rs   r=  rs   rW   r;  )r  r  rW   r;  )
r  r   r  r   r9  rs   r:  rs   rW   r;  )r|  rS   rW   r   )%r   r   r   r  r  r'  debug_show_treer  r	  staticmethodr  r  r  r   r$  r"  r+  r-  r0  r  r%  r3  r   r  r@  r>  rT  r(  rl  rq  rs  rQ  rx  r{  rE  r   __classcell__r  s   @r   r   r     s       LLO  4 4 4    \$ $ $ $/ / / / / /
$ $ $ $>$ $ $ $ % % % %.   + + + +0 0 0 0
 " " " X" / / / X/   (
2 
2 
2 
2
 
 
 
0% 0% 0% 0%dK@ K@ K@ K@Ze e e eN"% "% "% "%H         >   8   :   *       r   r   c                     e Zd ZedYd            Zed             Zed             ZdZdZd[d	Zd\dZ	d\dZ
d]dZd^dZd_dZd`dZdadZdadZdadZdbdZdadZdad Zdad!Z	 dcddd)Zded+ZdZd,Zdfd.Zdgd0Zdhd3Zdid7Zdcdjd9Zdkd=Z	 dcdkd>ZdldmdBZ dndodDZ!dpdFZ"dqdHZ#drdJZ$dsdLZ%dtdNZ&dudPZ'dvdTZ(dedUZ)dedVZ*dwdXZ+d?S )xDefinitionParserrW   r   c                    dS )NCr   r   s    r   languagezDefinitionParser.language  s    sr   c                    | j         j        S r   )configc_id_attributesr   s    r   id_attributeszDefinitionParser.id_attributes  s    {**r   c                    | j         j        S r   )r  c_paren_attributesr   s    r   paren_attributesz!DefinitionParser.paren_attributes  s    {--r   r  c                0   | j         dk    rd S | j        }| xj        dz  c_        d}	 | j        r|                     d           n.| j         dk    r|s| xj        dz  c_        n!| j         dk    rd}nd}| xj        dz  c_        \| j        || j                 S )N"r   FTz$Unexpected end during inside string.\)current_charposeoffail
definition)r   startPosescapes      r   _parse_stringzDefinitionParser._parse_string  s    ##48A
	x 		@AAAA"c))&)A"d**HHMHH
	 x011r   ASTLiteral | Nonec                   |                                   |                     d          rt          d          S |                     d          rt          d          S | j        }|                     t
                    r;|                     t                     t          | j        || j                           S t          t          t          t          fD ]T}|                     |          r=|                     t                     t          | j        || j                           c S U|                                 }|t          |          S |                     t                     r| j                            d          }| j                            d          }	 t'          ||          S # t(          $ r"}|                     d|z             Y d }~n(d }~wt,          $ r |                     d           Y nw xY wd S )	Nr  Tr  Fr   rI  z8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)skip_ws	skip_wordr  r  matchr"   r#   r'  r  r    r$   r&   r(   r'   r  r@  r!   
last_matchgroupr5  UnicodeDecodeErrorr  r   )r   r  regexstringr   r(  r  s          r   _parse_literalzDefinitionParser._parse_literal  s    	>>&!! 	+$T***>>'"" 	,$U+++h::&'' 	CJJ.///#DOCL$ABBB'(*:< 	G 	GEzz%   G

5666'DH(EFFFFFG ##%%#F+++ ::o&& 		H_**1--F?((++DH%fd333% Z Z Z		TWXXYYYYYYYY7 H H H		 G H H H H HH ts   F, ,
G86G"G87G8ASTExpression | Nonec                    | j         dk    rd S | xj        dz  c_        |                                 }|                                  |                     d          s|                     d           t          |          S )NrX  r   rY  z0Expected ')' in end of parenthesized expression.)r  r  _parse_expressionr  skip_stringr  rQ  )r   r   s     r   _parse_paren_expressionz(DefinitionParser._parse_paren_expression  sz    ##4A$$&&$$ 	JIIHIIIC   r   c                    |                                   |                                 }||S |                                 }||S |                                 }|t	          |          S d S r   )r  r  r  _parse_nested_namerF  )r   r   r)  s      r   _parse_primary_expressionz*DefinitionParser._parse_primary_expression  sp     	$($7$7$9$9?J**,,?J$$&&>"2&&&tr   r   openclose tuple[list[ASTExpression], bool]c                >   |                                   |                     |          sdS |                     |          rg dfS g }d}	 |                                   |                                 }|                                   |                    |           |                                   |                     |          rnV|                     d          s|                     d| d| d           | j        |k    r|dk    r| xj        d	z  c_        d}n||fS )
NNNFTr  z	Error in z, expected ',' or 'z'.r  r   )r  skip_string_and_wsr  r  r  r  r  r  )r   r   r  r  r  r  rT  s          r   _parse_initializer_listz(DefinitionParser._parse_initializer_list  s:    	&&t,, 	:E"" 	u9	LLNNN))++DLLNNNLLLLNNN&& **3// J		HdHHuHHHIII E))esllA $	 m##r   ASTParenExprList | Nonec                \    |                      ddd          \  }}|d S t          |          S )Nzparenthesized expression-listrX  rY  )r  rz  r  s      r   _parse_paren_expression_listz-DefinitionParser._parse_paren_expression_list	  s@      $;;<[<? F  F}=4&&&r   ASTBracedInitList | Nonec                ^    |                      ddd          \  }}|d S t          ||          S )Nzbraced-init-listr  r  )r  r  r  s      r   _parse_braced_init_listz(DefinitionParser._parse_braced_init_list 	  s=      $;;<NPSUXYY}=4 666r   r  c                   |                                  }g }	 |                                  |                     d          ru|                                 }|                                  |                     d          s|                     d           |                    t          |                     |                     d          r^|                     d          r| xj        dz  c_        n8| 	                                }|                    t          |                     |                     d          r#|                    t                                 J|                     d	          r#|                    t                                 |                                 }|$|                    t          |                     	 t          ||          S )
NTro  rp  z*Expected ']' in end of postfix expression.r  r   rH  r   r   )r  r  r  r  r  r  r  rk  r  r  r  rs  r~  r  rb  r  )r   r   r  rT  r   rc  s         r   _parse_postfix_expressionz*DefinitionParser._parse_postfix_expression(	  s    //11 )+		LLNNN&&s++ --//'',, LIIJKKK  !6!6777%% ##C(( HHMHHH2244D$$%>t%D%DEEE%%   111%%   1113355C  !3C!8!8999fi000r   r  c                   |                                   t          D ]_}|d         dv r|                     |          }n|                     |          }|r&|                                 }t          ||          c S `|                     d          r|                     d          rc|                     d          }|                                   |                     d          s| 	                    d           t          |          S |                                 }t          |          S |                     d	          r|                     d          s| 	                    d
           |                     d          }|                                   |                     d          s| 	                    d           t          |          S |                                 S )Nr   r  rZ   rX  F)namedrY  zExpecting ')' to end 'sizeof'.rr   zExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.)r  _expression_unary_opsr  r  _parse_cast_expressionr  skip_word_and_wsr  _parse_typer  r  _parse_unary_expressionr  r  r  )r   r  r   rT  r  s        r   r  z(DefinitionParser._parse_unary_expressionT	  s    	' 	0 	0B!u}}nnR((&&r** 02244%b$/////0   ** 	'&&s++ *&&U&33'',, @II>???$S)))//11D &&&  ++ 	'**3// <		:;;;"""//CLLNNN##C(( =		;<<<!#&&&--///r   c                j   | j         }|                                  |                     d          r	 |                     d          }|                     d          s|                     d           |                                 }t          ||          S # t          $ r}|| _         	 |                                 cY d }~S # t          $ rL}g }|	                    |df           |	                    |df           | 
                    |d          |d }~ww xY wd }~ww xY w|                                 S )NrX  FrY  z Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.)r  r  r  r  r  r  r  r   r  r  _make_multi_error)r   r  r  rT  exCastexUnaryerrss          r   r  z'DefinitionParser._parse_cast_expressionz	  sp   hC   	2[&&u--'',, BII@AAA2244"3---" 	[ 	[ 	[[7799999999& [ [ [DKK)B CDDDKK*? @AAA001LN NSZ[	[		[ //111s=   A"B 
DD'C :D 
D
ADDDDc                &    fd | d          S )Nc                t    dz   t          t                    k    rd fd}nd	 fd}g }g }|                     |                       	                                    j        }d}t                   D ]}|d         d	v r                     |          s"n                     |          s9|d
k    r j        d
k    r xj        dz  c_         nP	  |            }|                    |           |                    |           d} n# t          $ r
 | _        Y w xY w|snt          ||          S )Nr   rW   r  c                 ,                                      S r   )r  r   s   r   parserzYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parser	  s    66888r   c                 "      dz             S )Nr   r   )_parse_bin_op_expropIdr   s   r   r  zYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parser	  s    --dD1H===r   TFr   abcnoxr   rW   r  )
r   _expression_bin_opsr  r  r  r  r  r  r   r  )
r   r  r  r  r  r  oneMorer  rT  r  s
   ``       r   r  zIDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr	  s   ax3233339 9 9 9 9 9 9> > > > > > > >ECLL"""h-d3 ' 'B!u((#~~b11 %$%  $//33 %$SyyT%6#%=%=A'%vxxT***

2"&* ' ' '#&' 34  s+++s   6DD#"D#r   r   )r   r  s    @r   _parse_logical_or_expressionz-DefinitionParser._parse_logical_or_expression	  s2    $	, $	, $	, $	, $	,J "!$***r   
orExprHeadr   c                    d S r   r   )r   r  s     r   "_parse_conditional_expression_tailz3DefinitionParser._parse_conditional_expression_tail	  s    tr   c                   g }g }|                                  }|                    |           	 d}|                                  t          D ]y}|d         dv r|                     |          s"n|                     |          s9|                                  }|                    |           |                    |           d}z|snt          ||          S )NTFr   r  )r  r  r  _expression_assignment_opsr  r  r  )r   r  r  orExprr  r  rT  s          r   _parse_assignment_expressionz-DefinitionParser._parse_assignment_expression	  s     2244V	GLLNNN0 
 
a5H$$>>"-- ! !  ++B// ! 88::T"""

2 	  !,,,r   c                .    |                                  }|S r   )r  )r   r  s     r   _parse_constant_expressionz+DefinitionParser._parse_constant_expression	  s    2244r   c                *    |                                  S r   r  r   s    r   r  z"DefinitionParser._parse_expression	  s     00222r   Tr  r  r  Callable[[], ASTExpression]allowrs   c                d   | j         }	  |            S # t          $ r3}|r| j        s |                     d|z             || _         Y d }~nd }~ww xY w|J |                                  | j         }|                     t                    r| j        }ndddd}g }	| j        st          |	          dk    r
| j
        |v rny| j
        |v r!|	                    || j
                            n8t          |	          dk    r%| j
        |	d         k    r|	                                 | xj         dz  c_         | j        t          |          dk    r| j        r|                     d	|z             | j        || j                                                  }t!          |                                          S )
NzBParsing of expression failed. Using fallback parser. Error was:
%srY  r  rp  )rX  r  ro  r   r   r   z0Could not find end of expression starting at %d.)r  r   allowFallbackExpressionParsingwarnr  r  
_string_rematched_textr  r   r  r  popr  r  stripr  )
r   r  r  r  prevPosr  r  r  bracketsr  s
             r   _parse_expression_fallbackz+DefinitionParser._parse_expression_fallback	  s    (		688O 	 	 	   C II (*+, - - -DHHHHHH	 8::j!! 	?%EE !s55H!#Gh LLA%%$*;s*B*B$00NN8D,=#>????\\A%%$*;wr{*J*JKKMMMA h  3xx!|||		L$% & & &OHTX$56<<>>Eu{{}}---s   	 
A)AAr   c                   g }|                                   d}|                     d          rd}	 |                                   |                     t                    s|                     d           | j        }|t          v r|                     d|z             | j        | j        j        v r8d}|                     || j        t          | j        j                  fz             t          |          }|                    |           |                                   |                     d          snt          ||          S )NFr   Tr   z#Expected identifier in nested name.z3Expected identifier in nested name, got keyword: %sExpected identifier, got user-defined keyword: %s. Remove it from c_extra_keywords to allow it as identifier.
Currently c_extra_keywords is %s.)r  r  r  r%   r  r  	_keywordsr  c_extra_keywordsr   r   r  r   )r   r   r   r   ro  r
  s         r   r  z#DefinitionParser._parse_nested_name
  sX   C   	F	LLNNN::m,, A		?@@@*JY&&		 ,.89 : : : DK$@@@< 		#!2!$T[%A!B!B!D D E E E!*--ELLLLNNN##C(( )	* UF+++r   c                    |                      t                    r| j        S dD ])}|| j        j        v r|                     |          r|c S *d S )N)rs   rt   ru   )r  _simple_type_specifiers_rer  r  r  r  )r   ts     r   _parse_simple_type_specifierz-DefinitionParser._parse_simple_type_specifier<
  sb    ::011 	%$$1 	 	ADK000>>!$$ HHHtr   %ASTTrailingTypeSpecFundamental | Nonec                    g }|                                   	 |                                 }|n*|                    |           |                                   At          |          dk    rd S t	          |          S )NTr   )r  r  r  r   r  )r   r   r  s      r   _parse_simple_type_specifiersz.DefinitionParser._parse_simple_type_specifiersE
  sw    	1133AyLLOOOLLNNN	 u::??4-e444r   r  c                
   |                                   |                                 }||S d }|                                   dD ]}|                     |          r|} n|                                 }t	          ||          S )N)r\   rL   r_   )r  r  r  r  r  )r   r   r   kr  s        r   _parse_trailing_type_specz*DefinitionParser._parse_trailing_type_specS
  s     	0022?J , 	 	A$$Q''  ,,..
&vz:::r   	paramModeASTParameters | Nonec                z   |                                   |                     d          s|dk    r|                     d           nd S g }|                                   |                     d          s%	 |                                   |                     d          rb|                    t	          d d                     |                                   |                     d          s|                     d           n|                     d d	
          }|                    t	          |                     |                                   |                     d          r|                     d          rn |                     d| j         d           $|                                 }t          ||          S )NrX  r  zExpecting "(" in parameters.rY  r   r  Tz'Expected ")" after "..." in parameters.singler)  r  r  z)Expecting "," or ")" in parameters, got "z".)	r  r  r  r  r  _parse_type_with_initr  _parse_attribute_listr   )r   r  r  r  r  s        r   _parse_parametersz"DefinitionParser._parse_parametersf
  s   $$ 	J&&		89999t$$ 	]]##E** KK 4T4 @ @AAALLNNN++C00 M		"KLLL 00t80LL055666##C(( ##C(( 		[dFW[[[\\\']* **,,T5)))r   r)  typedr  c                   d}d}d}d}d}d}g }		 |                                   |sj|dk    r0|                     d          rd}5|                     d          rd}M|dv r0|                     d          rd}i|                     d          rd}|dk    r2|s0|                     d	          rd	}|                     d
          rd
}|dk    r|s|                     d          }|r|s|r|                     d          }|r|s|r|                     d          }|r|s|r|                     d          }|r/|                                 }
|
r|	                    |
           \	 t	          ||||||t          |	                    S )zJust parse the simple ones.Nr   r  rB   rU   )r  r  r[   rM   rx   rp   r  rR   rV   rb   rF   )r  r  _parse_attributer  r  r   )r   r)  r  r  r  rR   rV   rb   rF   r  attrs              r   _parse_decl_specs_simplez)DefinitionParser._parse_decl_specs_simple
  s    -	LLNNN !H$$~~f-- !"( ~~j11 !", 222~~h// !"* ~~h// !"*    >>.11 "0K>>/22 "1K
""6"11   >>*55   >>*55  U w// ((**D T"""!';"*He=Me=T=TV V 	Vr   r(  c                    |r|dvrt          d|z            |                     ||          }d }|r+|                                 }|                     ||          }nd }t          ||||          S )Nr   r  r  #Internal error, unknown outer "%s".)r   r  r  r(  )r   r)  r  r*  r+  r,  s         r   _parse_decl_specsz"DefinitionParser._parse_decl_specs
  s     	O::: E MNNN11%??	
 	5577H66ueDDJJHE9j(CCCr   r  
bool | strrB  c           
          |dv sJ |dk    r                      t                    r j        t          v r                     d j        z              j         j        j        v r8d}                     | j        t           j        j                  fz             t           j                  }t          |gd          }nd }n|r 
                                }nd }g }	                                   |r~                     d          rh                                  d}d}	d}
d}	 |s                     d
          rd	}|	s                     d          rd	}	5|
s                     d          rd	}
O|s                     d          rd	}i	 |rdn                     d          }|r-                     d          s                     d           d }nr                     d          rd }nZ fd}                     dg|          }                                                       d          s                     d           |                    t#          ||	|
|||                     nn                     |          }|kt'          |          dk    rX|rV|dk    rP|rN                                                       d          r%                                 }t+          ||          S t-          |||          S )N)TFr  r  z$Expected identifier, got keyword: %sr  Fr8  r   ro  Tr[   rF   rb   rV   r   rp  z&Expected ']' in end of array operator.c                 ,                                      S r   )r  r   s   r   r  z>DefinitionParser._parse_declarator_name_suffix.<locals>.parser  s    #'#9#9#;#;;r   r   r   r`  r[  rM  )r  r%   r  r  r  r  r  r   r   r   r  r  r  r  r  r  r  r7  r  r   r  rY  rH  )r   r  r  r  ro  r   rI  rJ  r[   rF   rb   rV   r8  r9  r  r   s   `               r   _parse_declarator_name_suffixz.DefinitionParser._parse_declarator_name_suffix
  s    /////Hzz-(( $	11II 0262CD E E E$(DDD@C IIcT%6%()E%F%F%H H I I I*4+<==
&
|EBBB 	,,..FFF,	LLNNN *))#.. *  ! %00:: %%)F$  %0099 %$(E$# %00<< %'+H$# %00<< %'+H$%Gee4+B+B3+G+G P++C00 L		"JKKKDD'',, 	P#< < < < <#>>ufMM#//44 P II&NOOO(CQU V VWWWWY,	Z &&y11=S]]a// Of,,,##C(( O::<<D4FNNNN%Vh,13 3 3 	3r   c           	        |dvrt          d|z            g }|                                  |r|                     d          r|                                  d}d}d}g }	 |s|                     d          }|r|s|                     d          }|r5|s|                     d          }|rO|                                 }	|	|                    |	           {	 |                     |||          }
t          |
|||t          |          	          S |rS| j	        d
k    rG| j
        }	 |                     |||          }|S # t          $ r}d}|dk    r|dz  }|                    ||f           || _
        	 | j	        d
k    sJ |                     d
           |                     |||          }|                     d          s|                     d           |                     dd|          }
t          ||
          cY d }~S # t          $ rI}|| _
        d}|dk    r|dz  }|                    ||f           d}|                     ||          |d }~ww xY wd }~ww xY w| j
        }	 |                     |||          S # t          $ r<}|| _
        |                    |df           d}|                     ||          |d }~ww xY w)N)r   r  z'Internal error, unknown paramMode '%s'.r   Fr   rV   rb   rF   re  rX  z If declarator-id with parametersr  z (e.g., 'void f(int arg)')rY  z$Expected ')' in "( ptr-declarator )"r   r  r  r  rs  z"If parenthesis in noptr-declaratorz% (e.g., 'void (*f(int arg))(double)')zError in declaratorzIf declarator-idz!Error in declarator or parameters)r   r  r  r  r  r  _parse_declaratorrb  r   r  r  r  r   r  rp  r  )r   r  r  r  
prevErrorsrV   rb   rF   r  r  rc  r  r   exParamQualro  rq  exNoPtrParenheaderr  s                      r   r  z"DefinitionParser._parse_declarator$  s    0009IEG G G
 	CT%%c** 	CLLNNNHHEE !#44Z@@H !  !#44Z@@H !  ! 11'::E ! ,,..#LL&&&))%EBBD#-5PU*:5*A*AC C C C  #	WT&#-- (CW88	9>@ @
" W W W8
**77C!!;"4555W,3333$$S))) !225)UKKE++C00 L		"JKKK11<B8= 2 ? ?D .EEEEEEEEEE& W W W"DH>C J..FF%%|S&9:::2F00VDD,VW'W6 h	D55eYNNN 	D 	D 	DDHq"456668F((V<<!C		DsV   +E I'+I";BHI'
IAIII""I'2J	 	
K7K

KNallowFallbackr  c                Z                                       |dk    r	                      d          sd S                                  }|t          |          S |dk    rg }n|ddg}n                     d|z              fd}                     |||	          }t          |          S )
Nr  F)r  r   r  rY  z;Internal error, initializer for outer '%s' not implemented.c                 ,                                      S r   r  r   s   r   r  z3DefinitionParser._parse_initializer.<locals>.parser  s    44666r   )r  )r  r  r  r  r  r  )r   r)  r  
bracedInitfallbackEndr  r  s   `      r   _parse_initializerz#DefinitionParser._parse_initializeru  s    H
 $$ 	41133
!!*---H%'KK]*KKII %',- . . .	7 	7 	7 	7 	7 //V=/YYe$$$r   r?   c                N   |r|dvrt          d|z            |sJ |dk    rg }| j        }	 |                     |d          }|                     d|d          }|                     d           n"# t
          $ r}d	}|                    ||f           || _        	 |                     |
          }|                     d|          }nQ# t
          $ rD}	|| _        d}|                    |	|f           	 d}
|
dz  }
|                     ||
          |	d}	~	ww xY wY d}~nsd}~ww xY w|dk    r.|                     |
          }|                     d|          }n7d}|dk    rd}|                     |
          }|                     ||          }t          ||          S )z
        named=False|'single'|True: 'single' is e.g., for function objects which
        doesn't need to name the arguments, but otherwise is a single name
        r
  r  r   F)r)  r  Tr  )allowSemicolonzIf just a namer)  )r  r  zIf typedef-like declarationz%Type must be either just a name or a ztypedef-like declaration.Nr  r  )	r   r  r  r  
assert_endr   r  r  r?   )r   r  r)  r  r  r  r  	exUntypeddescexTypedr  r  r  s                r   r  zDefinitionParser._parse_type  s0   
  	::: E MNNNLLLF??JxH C 22e2LL	--DE49 . ; ;t4444" C C C'!!9d"3444#C $ 6 6U 6 C CI111NNDD& C C C'DH8D%%wo666C!H"=="44ZHHgUC DDDDC8 j  ..U.;;I)))FFDDI  ..U.;;I)))KKDy$'''s<   AA5 5
D)? D$ -CD$
D?DDD$$D)r@   c                    |r|dv sJ |                      ||          }|                     |          }t          ||          S )Nr
  r   r   )r  r  r@   )r   r  r)  r   r  s        r   r  z&DefinitionParser._parse_type_with_init  sZ     	;:::::e599&&U&33tT***r   rA   c                   |                                   |                                 }||                     d           |                                   |                     d          st	          |d           S |                     d          rt	          |g           S g }	 |                                   |                     d          rc|                    t          d d                     |                                   |                     d          s|                     d           nE|                     t                    s|                     d           t          t          | j                  gd	
          }|                                   |                     d          rc|                    t          |d	d                     |                                   |                     d          s|                     d           nf|                    t          |                     |                     d          r|                     d          rn|                     d           t	          ||          S )Nz(Expected identifier in macro definition.rX  rY  r   r  Tz-Expected ")" after "..." in macro parameters.z(Expected identifier in macro parameters.Fr8  r  z9Expected identifier, ')', or ',' in macro parameter list.)r  r  r  r  rA   r  r  r  r  r%   r   r   r  )r   r
  r  r)  s       r   _parse_macrozDefinitionParser._parse_macro  sT   ''))=II@AAA&&s++ 	)E4(((C   	'E2&&&	SLLNNN&& -dD99:::'',, OIIMNNN::m,, F		DEEEd.? @ @A%PPPB LLNNN&&u-- -b%>>???'',, OIIMNNNKK)"--...&&s++ &&s++ IIQRRR3	S4 t$$$r   r;   c                H    |                                  }t          |          S r   )r  r;   rI  s     r   _parse_structzDefinitionParser._parse_struct  s    &&((r   r<   c                H    |                                  }t          |          S r   )r  r<   rI  s     r   _parse_unionzDefinitionParser._parse_union  s    &&((~~r   r=   c                H    |                                  }t          |          S r   )r  r=   rI  s     r   _parse_enumzDefinitionParser._parse_enum  s    &&((t}}r   r>   c                J                                      }                                 }                                  d }                     d          r?                                  d fd}                     g |          }t          |          }t          |||          S )Nr   rW   r  c                 ,                                      S r   )r  r   s   r   r  z2DefinitionParser._parse_enumerator.<locals>.parser  s    66888r   r  )r  r  r  r  r  r  r>   )r   r   r  r  r  initVals   `     r   _parse_enumeratorz"DefinitionParser._parse_enumerator  s    &&((**,,C   	+LLNNN9 9 9 9 9 9 55b&AAG!'**DT4///r   r  r  r   c                   |dvrt          d|z            |dvrt          d|z            d }|dk    r|                     dd          }n|dk    r|                     dd          }n|d	k    r|                                 }n|d
k    r|                                 }nv|dk    r|                                 }n[|dk    r|                                 }n@|dk    r|                                 }n%|dk    r|                     dd          }nt          |d	k    r*| 	                                 | 
                    d          }nd}t          ||||          S )N)r  r  r  r\   r_   rL   r  r   z(Internal error, unknown objectType "%s".)	r  r  varr  r\   r_   rL   r  r   z+Internal error, unknown directiveType "%s".r  T)r  r)  r  r  r\   r_   rL   r  r   r  F)r   r  r  r'  r)  r+  r-  r1  r  r  r  r   r  s        r   parse_declarationz"DefinitionParser.parse_declaration  s    X X XFSTTT ![ [ [IMYZZZ'+!!444x4PPKK:%%**Z*HHKK7""++--KK8##,,..KK7""++--KK6!!**,,KK<''0022KK6!!**V*DDKK    LLNNN((--IIIj-iPPPr   c                *    |                                  S r   )r  r   s    r   parse_namespace_objectz'DefinitionParser.parse_namespace_object8  s    &&(((r   c                    |                                  }|                                  |                     d           |                                  |S )Nz())r  r  r  r!  rI  s     r   parse_xref_objectz"DefinitionParser.parse_xref_object;  sI    &&((r   ASTExpression | ASTTypec                   | j         }d }	 |                                 }|                                  |                                  n# t          $ r}|| _         	 |                     d          }|                                  |                                  n[# t          $ rN}d}g }|                    |df           |                    |df           |                     ||          |d }~ww xY wY d }~nd }~ww xY w|S )NFz%Error when parsing (type) expression.zIf expressionzIf type)r  r  r  r!  r   r  r  r  )r   r  r   exExprexTyper  r  s          r   parse_expressionz!DefinitionParser.parse_expressionC  s3   h'+	G((**CLLNNNOO 	G 	G 	GDH	G&&u--!!!!" G G G@V_5666VY/000,,T6::FG "!!!!	G 
s<   <A 
C=C8=BC8
C0"A	C++C00C88C=r   )rW   r  )rW   r  )rW   r  )r   r   r  r   r  r   rW   r  )rW   r  )rW   r  )rW   r  r  )r  r   rW   r  r  )r  r  r  r  r  rs   rW   r  r  )rW   r  )rW   r  )r  r   rW   r  )r)  r  r  rs   rW   r  )r)  r  r  rs   rW   r(  )r  r  r  r   r  rs   rW   rB  r?  )r)  r  r  rs   rW   r  r   )r  r  r)  r  rW   r?   )r  r  r)  r  rW   r@   )rW   rA   )rW   r;   )rW   r<   )rW   r=   )rW   r>   )r  r   r  r   rW   r   )rW   r9  ),r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r)  r+  r-  r1  r4  r6  r8  r=  r   r   r   r  r    s          X + + X+ . . X.2 2 2 2&$ $ $ $L	! 	! 	! 	!    $ $ $ $<' ' ' '7 7 7 7*1 *1 *1 *1X$0 $0 $0 $0L2 2 2 201+ 1+ 1+ 1+f   - - - -<   3 3 3 3 ). ). ). ). ).V, , , ,<   5 5 5 5; ; ; ;&!* !* !* !*F:V :V :V :VxD D D D DO3 O3 O3 O3d )-OD OD OD OD ODb% % % % %:9( 9( 9( 9( 9(v+ + + +%% %% %% %%N         0 0 0 0 Q  Q  Q  QD) ) ) )        r   r  rW   c                 @    t          t          d          gd          S )NPhonyNameDueToErrorFr8  )r   r   r   r   r   _make_phony_error_namer@  Y  s!    -(=>>?NNNNr   c                       e Zd ZU dZej        ej        ej        ej        ej        ej        dZded<   dd	ZddZ	e
d d            Ze
d d            Zd!dZd"dZd#dZd$ fdZd%dZd&dZd&dZ xZS )'CObjectz-
    Description of a C language object.
    )no-index-entryzno-contents-entryzno-typesettingnoindexentrynocontentsentrysingle-line-parameter-listr9   option_specastr   rW   r   c                   |j         dk    sJ |j        }|sJ |j        J |j        }|sJ |j        d S |j        }|d S |j         dk    rd S |j        dk    rd S |j        }|                    |j        ddd          }|d S |j                                        }||_        t          ||j        || j
        j        |                                 d                    d S )Nr  rL   FTrO  r   rW  )r  r   r
  r  r   r  rQ  r  r  r   r   r  get_source_info)r   rH  r   r  
parentDecltargetSymbolr6  	declClones           r   _add_enumerator_to_parentz!CObject._add_enumerator_to_parentk  s6   ~---- |'''}& F!-
 F F** F#v--F#*((VZ:? ) A A=F&,,..	+1	(l&,$x'd.B.B.D.DQ.G	I 	I 	I 	I 	I 	Ir   sigr   r   r3   c                F   g }t          dt          dz             D ]K}	 |                    |          }|                    |           /# t          $ r |t          k     sJ Y Hw xY wt          t          |                    }|d         }|sJ |j                                        	                                
                    d          }|| j        j        j        vr||sJ |d                             |           |dd          D ]3}|s|| j        j        j        vr|d                             |           4| j        j                            |           d| j        vr<|                     |          }	| j        d                             d|	|d	d f           d S d S )
Nr   )r   r   r   idsrC  entriesr  r   )r  r  r   r  r   rR  reversedr   r  r   lstripstatedocumentrQ  note_explicit_targetr  get_index_text	indexnode)
r   rH  rO  r   rQ  r  idnewestIdr   	indexTexts
             r   add_target_and_indexzCObject.add_target_and_index  s   q'A+&& 	# 	#A#ZZZ**

2 # # #7{{{{{{# 8C==!!q6z..00CCEELLSQQ4:.222OOOEN!!(+++!""g . . TZ0444EN))"---J44W===4<//++D11IN9%,,h	8RQU-VWWWWW 0/s   +A

A$#A$c                    t           r   )r   r   s    r   object_typezCObject.object_type  s    !!r   c                    | j         S r   )r_  r   s    r   display_object_typezCObject.display_object_type  s    r   r   c                4    t          d          || j        fz  S )Nz	%s (C %s))r   ra  rI  s     r   rX  zCObject.get_index_text  s    ~~t'? @@@r   r  r  c                B    |                     | j        | j                  S r   )r4  r_  objtype)r   r  s     r   parse_definitionzCObject.parse_definition  s    ''(8$,GGGr   r  r  c                @    |                     |d| j        |           d S )Nr   )r   r   )r   r   rH  r  s       r   r   zCObject.describe_signature  s$    wdhHHHHHr   r   c                   | j         j        j        j        }d|j        vr9|j        d         d         }||j        d<   |                                |j        d<   d |j        d<   t                      	                                S )Nc:parent_symbolr   root_symbolr   c:last_symbol)
rU  rV  settingsr   	temp_data
domaindatar   ref_contextr  run)r   r   rootr  s      r   ro  zCObject.run  sv    j!*.CM11>#&}5D/3CM+,.2.A.A.C.CCON+
 *.o&ww{{}}r   c                   | j         j        d         }| j         j        j        p| j         j        j        pd}d| j        vot          |          |cxk    odk    nc |d<   t          ||| j         j                  }	 |                     |          }|	                                 nh# t          $ r[}t                              ||           t                      }|                    |          }	|	| j         j        d<   t          |d }~ww xY w	 |                    || j         j        |                                 d         	          }	|	j        J |	j        J | j         j        d         |	_        |	j        |	j        j        J |	|	j        _        |	| j         j        d<   nx# t*          $ rk}|j        | j         j        d<   t/          d
          }
|
|j        j        |j        j        | j        |fz  }
t                              |
|           Y d }~nd }~ww xY w|j        dk    r|                     |           t9          | j                  }|                     |||           |S )Nrh  r   rF  r  rj  r  ri  rj  r   )r  r  rh  r  )r   rl  r  c_maximum_signature_line_lengthmaximum_signature_line_lengthr  r   r  re  r!  r   r  rk  r@  rq  
ValueErrorrs  r  rJ  r  r  r   r   r   r  ra  r  rN  r  r   )r   rO  r   r  max_lenr  rH  r  r   r   ro  r  s               r   handle_signaturezCObject.handle_signature  s   #x12CD8?B hoC 	 )< )SG''''a'''' 	+,
 "#PPP
	$''//C 	$ 	$ 	$NN1wN/// *++D!**400F28DH/!#	$	2!11TX-D4H4H4J4J14M 2 O OF &...&..."&("4_"EF".*7???39#028DH//$ 	2 	2 	2 34(DH/ 6 7 7C)18=$:RTWXXCNN3N11111111	2 >\))**3/// t|$$g666
s3   =)B' '
D1ADDBF$ $
H.A!HHc                    | j         j        d         }|sJ | j         j        d         | _        | j         j        d         | _        || j         j        d<   |                                | j         j        d<   d S )Nrj  rh  r   )r   rl  oldParentSymbolrn  oldParentKeyr   )r   
lastSymbols     r   before_contentzCObject.before_content  ss    !X/@
#x12CD'+x';N'K0:,-/9/H/H/J/J^,,,r   c                V    | j         | j        j        d<   | j        | j        j        d<   d S )Nrh  r   )ry  r   rl  rz  rn  r   s    r   after_contentzCObject.after_content  s-    040D,-/3/@^,,,r   )rH  r   rW   r   )rH  r   rO  r   r   r3   rW   r   r   )r   r   rW   r   )r  r  rW   r   )r   r3   rH  r   r  r  rW   r   rW   r   )rO  r   r   r3   rW   r   r  )r   r   r   __doc__r   flagrG  __annotations__rN  r]  r  r_  ra  rX  re  r   ro  rw  r|  r~  r  r  s   @r   rB  rB  ]  s         
 %/'_$/"%?&0o K    #I #I #I #IJX X X X@ " " " X"       X A A A AH H H HI I I I     3 3 3 3jK K K KA A A A A A A Ar   rB  c                  *    e Zd ZdZedd            ZdS )CMemberObjectr  rW   r   c                &    | j         dv sJ | j         S )N)r  r3  )rd  r   s    r   ra  z!CMemberObject.display_object_type  s      |00000|r   Nr   )r   r   r   r_  r  ra  r   r   r   r  r    s7        K   X  r   r  	parameter
Parameters)r   r  r  argumentrT  )r   )labelr   typerolename	typenamesretvalzReturn values)retvalsr  T)r  r   can_collapsereturnvalueReturnsF)returnsrW   )r  has_argr   
returntypezReturn type)rtypec                  :    e Zd ZdZe                                ZdS )CFunctionObjectr  Nr   r   r   r_  _function_doc_field_typescopydoc_field_typesr   r   r   r  r  )  s$        K/4466OOOr   r  c                  :    e Zd ZdZe                                ZdS )CMacroObjectr  Nr  r   r   r   r  r  /  s$        K/4466OOOr   r  c                      e Zd ZdZdS )CStructObjectr\   Nr   r   r   r_  r   r   r   r  r  5  s        KKKr   r  c                      e Zd ZdZdS )CUnionObjectr_   Nr  r   r   r   r  r  9  s        KKKr   r  c                      e Zd ZdZdS )CEnumObjectrL   Nr  r   r   r   r  r  =          KKKr   r  c                      e Zd ZdZdS )CEnumeratorObjectr  Nr  r   r   r   r  r  A  s        KKKr   r  c                      e Zd ZdZdS )CTypeObjectr   Nr  r   r   r   r  r  E  r  r   r  c                  :    e Zd ZU dZdZdZdZdZi Zde	d<   dd
Z
dS )CNamespaceObjectzb
    This directive is just to tell Sphinx that we're documenting stuff in
    namespace foo.
    Fr   r   Tr9   rG  rW   r   c                   | j         j        d         d         }| j        d                                         dv r|}g }nt	          | j        d         |                                 | j         j                  }	 |                                }|                                 nS# t          $ rF}t                              ||                                            t                      }Y d }~nd }~ww xY w|                    |          }|g}|| j         j        d<   || j         j        d<   |                                | j         j        d	<   g S )
Nr   ri  r   NULL0nullptrrr  ri  rh  c:namespace_stackr   )r   rm  	argumentsr  r  get_locationr  r6  r!  r   r  rk  r@  rq  rl  r   rn  )r   
rootSymbolr   stackr  r   r  s          r   ro  zCNamespaceObject.runU  sQ   X(-m<
>!""$$(@@@F"$EE%dnQ&7/3/@/@/B/B-1X_> > >F04466!!####" 0 0 0q4+<+<+>+>???-//0  ((..FHE06,-27.//5/D/D/F/F^,	s   9(B" "
C2,<C--C2Nr  )r   r   r   r  has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacerG  r  ro  r   r   r   r  r  I  s^          
 K $ K         r   r  c                  6    e Zd ZU dZdZdZdZi Zded<   dd	Z	d
S )CNamespacePushObjectFr   r   Tr9   rG  rW   r   c                >   | j         d                                         dv rg S t          | j         d         |                                 | j        j                  }	 |                                }|                                 nS# t          $ rF}t          
                    ||                                            t                      }Y d }~nd }~ww xY w| j        j                            dd           }|s| j        j        d         d         }|                    |          }| j        j                            dg           }|                    |           || j        j        d<   || j        j        d<   |                                | j        j        d	<   g S )
Nr   r  rr  ri  rh  r   ri  r  r   )r  r  r  r  r   r  r6  r!  r   r  rk  r@  rl  r  rm  rq  r  r   rn  )r   r  r   r  	oldParentr   r  s          r   ro  zCNamespacePushObject.runs  s   >!""$$(@@@I!$."3+/+<+<+>+>)-: : :	,0022D 	, 	, 	,NN1t'8'8':':N;;;)++DDDDDD	, H&**+<dCC	 	@+C0?I##D))"&&':B??V06,-27.//5/D/D/F/F^,	s   (B 
C<CCNr  
r   r   r   r  r  r  r  rG  r  ro  r   r   r   r  r  l  sR         K $ K         r   r  c                  6    e Zd ZU dZdZdZdZi Zded<   d
dZ	d	S )CNamespacePopObjectFr   Tr9   rG  rW   r   c                   | j         j                            dd           }|rt          |          dk    r1t                              d|                                            g }n|                                 t          |          dk    r	|d         }n| j         j        d         d         }|| j         j        d<   || j         j        d<   |	                                | j         j
        d	<   g S )
Nr  r   z;C namespace pop on empty stack. Defaulting to global scope.ri  r   r   ri  rh  zcp:parent_key)r   rl  r  r   r  rk  r  r  rm  r   rn  )r   r  r   s      r   ro  zCNamespacePopObject.run  s    "&&':DAA 	E

aNNX$($5$5$7$7  9 9 9EEIIKKKu::>>2YFFX(-m<F06,-27./060E0E0G0G_-	r   Nr  r  r   r   r   r  r    sR         K $ K         r   r  c                  .     e Zd Z	 	 dd fdZddZ xZS )	AliasNodeNrO  r   aliasOptionsr  rV  r   r   BuildEnvironment | None	parentKeyLookupKey | NonerW   r   c                8   t                                                       || _        || _        || _        |Vd|j        vr9|j        d         d         }||j        d<   |                                |j        d<   |j        d         | _	        d S |J || _	        d S )Nrh  r   ri  r   )
r  r   rO  r  rV  rl  rm  r   rn  r  )r   rO  r  rV  r   r  rp  r  s          r   r   zAliasNode.__init__  s     	( ? 55~c*=937/0262E2E2G2G/ _^<DNNN(((&DNNNr   c                ^    |                      | j        | j        | j        d | j                  S )N)r   r  )r  rO  r  rV  r  r   s    r   r  zAliasNode.copy  s4    ~~dh(94="&$.  B B 	Br   r  )rO  r   r  r  rV  r   r   r  r  r  rW   r   )rW   r  )r   r   r   r   r  r  r  s   @r   r  r    sf         (,&*' ' ' ' ' ' ',B B B B B B B Br   r  c                  2    e Zd Zej        dz
  ZddZddZdS )AliasTransformr   r6  r   maxdepthrS   skipThisrs   r  r  renderOptionsrV  r   rW   r   c           	     d   |dk    rd}n|dk    rd}n|dz  }d}g }|sGt          j        dd          }	 |j        |	           |j                            |	d| j        |           |r|r|}
nXt          j                    }t          j                    }|                    |           ||_        d|d<   d	x|d
<   |d<   d|d<   |}
|j	        D ]:}|j        
| 
                    ||d|||          }|
                    |           ;|s(t          |j	                  dk    r |j        |           |S )Nr   Tr   Fr   r   r   domainaliasrd  desctypeno-indexr  r  r  r  rV  )r   r  r  r   r   r   desc_contentr#  rV  r%  _render_symbolr$  r   )r   r6  r  r  r  r  rV  recurser
   r   childContainercontentr#  r.  
childNodess                  r   r  zAliasTransform._render_symbol  s    q==GG]]GGMHG 	[-b"55GEL!!!M,,Wj$(MZZZ 	& &=B"/11}t$$$ (!$X5<<Y$z"2#'Z !%* 2 2%-!00X!-]% 1 ' '
 %%j1111 &DM 2 2a 7 7W%%%r   kwargsr   c           	     N   | j                             t                    D ]}|j        }|j        }	 t          ||| j        j                  }|                                }n5# t          $ r(}t                              ||           d }Y d }~nd }~ww xY w|Wt          j        |d          }|                                 |t          j        ||          z  }|                    |           | j        j        d         j        d         }	|	                    |          }
|
sct                              d|           t                              d|           t                              |	                    d                     |
sJ |
                    |d	d
d
          }|t          j        |d          }|                    |           |                                 |t          j        ||          z  }t                              d|z  |           |                    |           |j        d         s|j        t          j        |d          }|                    |           |                                 |t          j        ||          z  }t                              d|z  |           |                    |           |                     ||j        d         |j        d         |j        i |j                   }|                    |           d S )Nrr  ri  r   r   ri  
Target: %sParentKey: %sr   anyTrP  z,Could not find C declaration for alias '%s'.norootzACan not render C declaration for alias '%s'. No such declaration.r  r  )rV  findallr  rO  r  r  r   r  r8  r   r  rk  r   r  clearr   replace_selfdomainsr(  rx  r  r   r{  r  r  r   r  )r   r  r   rO  r  r  r   r  r   r  r  r6  r
   s                r   applyzAliasTransform.apply  s;   M)))44 ;	% ;	%D(CI)#15B B B//11"   q4000 |"1#r::8-c3777!!'***!%!1#!6!;M!JJ#-#;#;I#F#FL 1\3///_i888Z__Q//000--ed . 4 4A y"1#r::G$$$8-c3777MPTT(,  . . .!!'*** $X. 
1=3H"1#r::G$$$8-c3777WZ^^!  # # # !!'***''D4Ej4Q151B81L595F684= ( R RE e$$$$w;	% ;	%s   0A##
B-BBN)r6  r   r  rS   r  rs   r  r  r  r  rV  r   rW   r   )r  r   rW   r   )r   r   r   r   default_priorityr  r  r   r   r   r  r    sK        ):Q>* * * *X<% <% <% <% <% <%r   r  c                  @    e Zd ZU ej        ej        dZded<   ddZdS )	CAliasObjectr  r  r9   rG  rW   r   c           	        d| j         v r)| j                             dd          \  | _        | _        nd| j         c| _        | _        t	          j                    }| j        j        |_        | j        |d<   | j        x|d<   |d<   d|d<   g | _        | j	        
                    d	d          d
| j	        v d}|d
         r:|d	         dk    r.t                              d|                                            |                                 D ]7}|                    t!          ||| j        j        | j                             8|gS )z
        On purpose this doesn't call the ObjectDescription version, but is based on it.
        Each alias signature may expand into multiple real signatures if 'noroot'.
        The code is therefore based on the ObjectDescription version.
        r`  r   r   r  rd  r  Tr  r  r  r  zError in C alias declaration. Requested 'noroot' but 'maxdepth' 1. When skipping the root declaration, need 'maxdepth' 0 for infinite or at least 2.ri  )r   )r   splitr  rd  r   r#  rU  rV  r   r  r  r  rk  r  get_signaturesr  r  r   )r   r   r  rO  s       r   ro  zCAliasObject.run4  sY    $)(,	Q(?(?%DK(*DI%DK}
+X-1\9Y$z*Z "
((Q77$,.
 
 ! 	9l:&>!&C&CNN L %)$5$5$7$7	  9 9 9
 &&(( 	Y 	YCKK	#|TZ5HdhWWWXXXXvr   Nr  )	r   r   r   r   nonnegative_intr  rG  r  ro  r   r   r   r  r  .  sU         ./ K    
     r   r  c                      e Zd ZddZdS )	CXRefRoler   r8   refnoder1   has_explicit_titlers   titler   targetrW   tuple[str, str]c                >   |j                             |j                   |s"t          j        dt          |                    }|sU|                    d          }|dd         dk    r2|dd          }|                    d          }|dk    r||dz   d          }||fS )Nr   r   r   r   r   r   )
attributesupdatern  r   subr   rT  rfind)r   r   r  r  r  r  dots          r   process_linkzCXRefRole.process_linkW  s    !!#/222! 	F '*=#e**EEE! 	,]]3''F QqSzS  abb	kk#&&"99!#'((OEf}r   N)r   r8   r  r1   r  rs   r  r   r  r   rW   r  )r   r   r   r  r   r   r   r  r  V  s(             r   r  c                  (     e Zd Zd fdZd	dZ xZS )
	CExprRoleasCoders   rW   r   c                l    t                                                       |r	d| _        d S d| _        d S )Nzc-exprzc-texpr)r  r   
class_type)r   r  r  s     r   r   zCExprRole.__init__m  s9     	(&DOOO (DOOOr   'tuple[list[Node], list[system_message]]c                   | j                             dd          }t          ||                                 | j        j                  }	 |                                }nh# t          $ r[}t          	                    d|||                                            t          j        d||| j        g          gg fcY d }~S d }~ww xY w| j        j                            dd           }|| j        j        d         d	         }t          j        d| j        g          }|                    |d
| j        |           |gg fS )Nr~  r  rr  zUnparseable C expression: %r
%sri  r   )classesrh  ri  r   )r   replacer  r  r   r  r=  r   r  rk  r   desc_inliner  rl  r  rm  r   )r   r   r  rH  exr  r   s          r   ro  zCExprRole.runv  se   y  s++!$1B1B1D1D)-: : :	Z))++CC 	Z 	Z 	ZNN=tR$($5$5$7$7  9 9 9 (dD4?BSTTTUWYYYYYYYY		Z
 x)--.?FF8.s3MBL &sT_4EFFFw
DHlKKKy"}s   A   
C*AC :C C)r  rs   rW   r   )rW   r   )r   r   r   r   ro  r  r  s   @r   r  r  l  sQ        ( ( ( ( ( (       r   r  c                  R   e Zd ZU dZdZdZ e ed          dddd           e ed          dddd           e ed	          d
dd           e ed          dd           e ed          ddd           e ed          ddd           e ed          ddd           e ed          dd           e ed          dd           e ed          dddd          d
Ze	e	e
eeeeeeeeeedZ e             e             e             ed           e             e             e             e             e             e             ed           ed          dZ eddddd          i dZded<   d?d!Zd@d&ZdAd)ZdBd.ZdCd8Z dDd:Z!dEd<Z"dFd>Z#dS )GCDomainzC language domain.r   r  r  r3  r(  r   variabler  funcr   r  r\   r_   rL   r  zfunction parameter)
r  r3  r  r  r\   r_   rL   r  r   r&  )r  r3  r  r  r\   r_   rL   r  r   	namespaceznamespace-pushznamespace-popr  T)
fix_parens)r  F)r  r(  r3  r	  r  r\   r_   rL   r  r   rT  texprN)ri  objectsz3dict[str, Symbol | dict[str, tuple[str, str, str]]]initial_datar  r   rW   r   c                   t           j        rt                              d|           t                              d           t                              | j        d                             d                     t                              d           | j        d         }|                    |           t           j        rt                              d           t                              | j        d                             d                     t                              d           t                              d|           d S d S )	Nzclear_doc: %sz	before:ri  r   z	before endz	after:z
	after endzclear_doc end: %s)r   r  r  r  r(  r   r-  )r   r  r  s      r   r-  zCDomain.clear_doc  s   ! 	)LL'222LL%%%LL=166q99:::LL(((Y}-
W%%%! 	7LL$$$LL=166q99:::LL'''LL,g66666		7 	7r   r   r8   rV  nodes.documentc                    t           j        rpt                              d|           t                              | j        d                             d                     t                              d|           d S d S )Nzprocess_doc: %sri  r   zprocess_doc end: %s)r   r  r  r  r(  r   )r   r   r  rV  s       r   process_doczCDomain.process_doc  sn    ! 	9LL*G444LL=166q99:::LL.88888	9 	9r   r   r5   c                N    |j                             | j        j                   d S r   )r  r  r   rn  )r   r   s     r   process_field_xrefzCDomain.process_field_xref  s$     455555r   rf  r  	otherdatar  c                
   t           j        rt                              d           t                              d           t                              | j        d                             d                     t                              d           t                              d           t                              |d                             d                     t                              d           t                              d           | j        d                             |d         || j                   | j        d	         }|d	                                         D ]\  }\  }}}||v r||vr|||f||<   d S )
Nzmerge_domaindata:z	self:ri  r   z		self endz	other:z
	other endzmerge_domaindata endr  )	r   r  r  r  r(  r   rl  r   items)r   rf  r  
ourObjectsfullnamefnr  rd  s           r   merge_domaindatazCDomain.merge_domaindata  s_   ! 	1LL,---LL###LL=166q99:::LL&&&LL$$$LL=166q99:::LL'''LL/000	- ++Im,D,4dh	@ 	@ 	@Yy)
,5i,@,F,F,H,H 	> 	>(H(r3X~~:--,.W+=Jx(	> 	>r   fromdocnamebuilderr7   r  r  r   contnoder1   !tuple[Element | None, str | None]c                   t          |||j                  }	 |                                }	n6# t          $ r)}
t                              d||
|           Y d }
~
dS d }
~
ww xY w|                    dd           }| j        d         }|r|                    |          }|sct          	                    d|           t          	                    d|           t          	                    |
                    d	                     |sJ n|}|                    |	|d
d
          }||j        dS |j        }|	                                }|j        }|sJ t          ||||                                ||          |j        fS )Nrr  z$Unparseable C cross-reference: %r
%sri  r  r   ri  r  r  r   TrP  )r  r  r8  r   r  rk  r  r(  rx  r  r   r{  r   r   r  r.   r  r  )r   r   r  r  r  r  r   r  r  r   r  r  r  r  r6  r   displayNamer  s                     r   _resolve_xref_innerzCDomain._resolve_xref_inner  s    "&4
KKK	++--DD 	 	 	NNBFA$(  * * *:::::	  $xx==	Y}-
 	&#-#;#;I#F#FL 1\6222_i888Z__Q//000%L))$48 * N N9-: m--//)G[''5577; *56 	6s   . 
A!AA!Element | Nonec           	     D    |                      |||||||          d         S r   )r"  )r   r   r  r  r  r  r   r  s           r   resolve_xrefzCDomain.resolve_xref  s7     ''['3(.h@ @@AC 	Cr   list[tuple[str, Element]]c           
         t          j                    5  |                     |||d|||          \  }}d d d            n# 1 swxY w Y   |rd|                     |          z   |fgS g S )Nr  zc:)r   suppress_loggingr"  role_for_objtype)	r   r   r  r  r  r   r  retnoderd  s	            r   resolve_any_xrefzCDomain.resolve_any_xref  s     %'' 	W 	W#77['8=vtX W  WGW	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W  	FD11':::GDEE	s   ?AA-Iterator[tuple[str, str, str, str, str, int]]c              #    K   | j         d         }|                                D ]}|j        
|j        sJ |                                }t          |                              d          }|                                                    d          }|j        j        }|j        }|j        	                                }|||||dfV  d S )Nri  r   r   )
r(  r0  r   r  r  r   rT  r   r  r  )	r   r  r   fullNestedNamer   dispnamer  r  r[  s	            r   get_objectszCDomain.get_objects&  s      Y}-
 0022 
	E 
	EF!)>!!!#88::N~&&--c22D%88::AA#FFH+6JnG)7799H:w!DDDDD
	E 
	Er   r  )r   r8   r  r   rV  r  rW   r   )r   r5   rW   r   )rf  r  r  r  rW   r   )r   r8   r  r   r  r7   r  r   r  r   r   r5   r  r1   rW   r  )r   r8   r  r   r  r7   r  r   r  r   r   r5   r  r1   rW   r#  )r   r8   r  r   r  r7   r  r   r   r5   r  r1   rW   r&  )rW   r,  )$r   r   r   r  r   r  r   r   object_typesr  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rolesr   r  r  r-  r  r  r  r"  r%  r+  r0  r   r   r   r  r    s        DE '!!H++uhMMwqq}}uhMMGAAjMMvfUU7wMM'!!H++xfUU7wfUU&		vfUUgaaoo|MM&		fUU #7!8!8eU]_eff L   #'%., J$ )++	y{{	T***)++	ikk		&&&%((( E vdD$d;;I IL    
7 7 7 7 9 9 9 96 6 6 6> > > >(#6 #6 #6 #6JC C C C   E E E E E Er   r  appr6   dict[str, Any]c                L   |                      t                     |                     dg d           |                     dg d           |                     dt          d           |                     dd dt          d h           |                     t                     ddd	d	d
S )Nr  r   r  r  rs  )typesbuiltinrH  T)r   env_versionparallel_read_safeparallel_write_safe)
add_domainr  add_config_value_macroKeywordsrS   add_post_transformr  )r3  s    r   setupr?  5  s    NN7*B666-r5999+^UCCC:D%PSUY{[[[>*** "#	  r   r  )r3  r6   rW   r4  )r  
__future__r   retypingr   r   r   r   r   r	   docutilsr
   docutils.parsers.rstr   sphinxr   sphinx.directivesr   sphinx.domainsr   r   sphinx.localer   r   sphinx.rolesr   r   sphinx.transformsr   !sphinx.transforms.post_transformsr   sphinx.utilr   sphinx.util.cfamilyr   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   sphinx.util.docfieldsr*   r+   r,   sphinx.util.docutilsr-   sphinx.util.nodesr.   collections.abcr/   r0   docutils.nodesr1   r2   r3   r4   sphinx.addnodesr5   sphinx.applicationr6   sphinx.buildersr7   sphinx.environmentr8   sphinx.util.typingr9   	getLoggerr   r  r:   r  r  r=  r  r  r  r  r  compileSr  VERBOSEr  r   r   r   r   r   r  r  r  r'  r5  r@  rF  rQ  r`  rb  rk  rs  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r(  r7  rB  rH  rY  rb  rp  rz  r  r  r?   r@   r  rA   r;   r<   r=   r>   r   r  r  r   r  r@  rB  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r?  r   r   r   <module>r\     s:     " " " " " " 				 E E E E E E E E E E E E E E E E       + + + + + +       / / / / / / * * * * * * * *         - - - - - - - - - - - - - - @ @ @ @ @ @                                               * B A A A A A A A A A 0 0 0 0 0 0 * * * * * * 	.33333333IIIIIIIIIIII,,,,,,))))))''''''333333------		8	$	$GCLL.  	   
4L	5M'N%L(O	4L#JOO	5M  SRR [ [ [  !!!
 RZ 89;? ?
 (RZ )  Z!  &N N N N NI N N N. . . . .k . . .,C ,C ,C ,C ,CK ,C ,C ,C^LC LC LC LC LCG LC LC LCf	 	 	 	 	G 	 	 		 	 	 	 	 	 	 	7 7 7 7 7
 7 7 7 
> 
> 
> 
> 
>z 
> 
> 
>< < < < <Z < < <,
> 
> 
> 
> 
>z 
> 
> 
>A A A A Am A A A ; ; ; ; ;= ; ; ;(	 	 	 	 	7 	 	 		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@; ; ; ; ;l ; ; ;: : : : :L : : :: : : : :L : : :
I 
I 
I 
I 
I 
I 
I 
I= = = = =] = = =*A A A A A] A A A*; ; ; ; ;M ; ; ;A A A A AM A A A; ; ; ; ;] ; ; ;$A A A A A- A A A(I I I I I7 I I I>I I I I I I I I>7 7 7 7 7m 7 7 7&	 	 	 	 	' 	 	 	< < < < <%8 < < <&N N N N N1 N N N2K K K K K7 K K K0:3 :3 :3 :3 :3G :3 :3 :3z>% >% >% >% >% >% >% >%B0 0 0 0 07 0 0 0l8; 8; 8; 8; 8;w 8; 8; 8;v
. 
. 
. 
. 
.G 
. 
. 
.&F &F &F &F &F] &F &F &FRA A A A A A A ABDA DA DA DA DA} DA DA DAN I  I  I  I  I  I  I  IL; ; ; ; ;+ ; ; ;.; ; ; ; ; ; ; ;6H H H H HW H H H.,A ,A ,A ,A ,Ag ,A ,A ,A^E E E E Eg E E E6K K K K K K K K6% % % % %w % % %PH H H H H H H H H H H H Hw H H H H H H H Hg H H H K K K K KG K K K>SD SD SD SD SD[ SD SD SDl              L
 L
 L
 L
 L
 L
 L
 L
^B B B B Bz B B BJO O O OqA qA qA qA qA/ qA qA qAh    G    J{!!L//>"i9 9 9 L?!3!3,"$ $ $ 
E-qq||U%' ' '	E,aa..   7 7 7 7 7g 7 7 77 7 7 7 77 7 7 7    G       7       '              '                  F    ?   >    /   2B B B B B B B B8k% k% k% k% k%_ k% k% k%\% % % % %$ % % %P       ,    
   @fE fE fE fE fEf fE fE fER     r   