
    O&i2]                       d Z ddl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 ddlmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlmZ 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' ddl(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZK ddlLmMZM ddlNmOZO ddlPmQZQ  e3jR        eS          ZT ed          ZUed         ZVg dZWg dZXd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.d/ggZYg d0ZZg d1Z[d2Z\g d3Z] ej^        d4ej_                  Z` ej^        d5          Za G d6 d7eb          Zc G d8 d9e6          Zd G d: d;e6          Ze G d< d=ed          Zf G d> d?ed          Zg G d@ dAeg          Zh G dB dCeh          Zi G dD dEeh          Zj G dF dGeh          Zk G dH dIeh          Zl G dJ dKeg          Zm G dL dMeg          Zn G dN dOed          Zo G dP dQeo          Zp G dR dSeo          Zq G dT dUeo          Zr G dV dWeo          Zs G dX dYeo          Zt G dZ d[eg          Zu G d\ d]eg          Zv G d^ d_eg          Zw G d` daeg          Zx G db dceg          Zy G dd deeg          Zz G df dged          Z{ G dh dieg          Z| G dj dkeg          Z} G dl dmed          Z~ G dn doe~          Z G dp dqe~          Z G dr dsed          Z G dt dued          Z G dv dwe6          Z G dx dyed          Z G dz d{ed          Z G d| d}ed          Z G d~ de          Z G d de          Z G d de          Z G d de          Z G d de7          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d de6          Z G d d          Z G d d          Z G d d          Z G d de8          ZdeffdZ G d de"e                   Z G d de          Z eKd e)d          ddd           eJd e)d          dd           eId e)d          dd           eId 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̈́ deM          Z G dτ deM          Z G dф deM          Z G dӄ dej                  Z G dՄ de/          Z G dׄ de"          Z G dل de-          Z G dۄ de,          Z G d݄ de$          Zdedeeef         fdZdS )zThe C language domain.    N)AnyCallableDict	GeneratorIteratorListOptionalTupleTypeVarUnioncast)nodes)ElementNodeTextElementsystem_message)
directives)addnodes)pending_xref)Sphinx)Builder)RemovedInSphinx60Warning)ObjectDescription)DomainObjType)BuildEnvironment)___)
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)
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   )Nc.zCv2.z>[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")an  (?x)
    \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efdZdS )
_DuplicateSymbolErrorsymbolSymboldeclarationASTDeclarationrZ   Nc                 2    |sJ |sJ || _         || _        d S N)r   r   )selfr   r   s      ]/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/domains/c.py__init__z_DuplicateSymbolError.__init__l   s,    &    c                 <    d| j                             d          z  S )Nz%Internal C duplicate symbol error:
%sr   )r   dumpr   s    r   __str__z_DuplicateSymbolError.__str__r   s    7$+:J:J1:M:MMMr   )r   r   r   r   rZ   N)__name__
__module____qualname__r   strr    r   r   r   r   k   sJ        ' ' ' 'N N N N N N Nr   r   c            
       *    e Zd Zdededdddddf
d	ZdS )
ASTBasesignodemodeenvr   r   r   rZ   Nc                 :    t          t          |                     r   NotImplementedErrorreprr   r   r   r   r   s        r   describe_signaturezASTBase.describe_signaturew       !$t**---r   )r   r   r   r   r   r   r   r   r   r   r   v   sN        .+ .S . 2.<D.IM. . . . . .r   r   c                   r    e Zd ZdeddfdZdedefdZdefdZdefdZ	defd	Z
d
ededddeddddfdZdS )ASTIdentifier
identifierrZ   Nc                 F    |J t          |          dk    sJ || _        d S Nr   )lenr   )r   r   s     r   r   zASTIdentifier.__init__   s0    %%%:!####$r   otherc                 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   r   r   r   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)	r6   r   r   desc_sig_namer   r   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   )r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r      s       %3 %4 % % % %
TC TD T T T T) ) ) ) )
    DC D D D DC+ CS CGY C#&C08C=AC C C C C Cr   r   c            
           e Zd Zdee         deddfdZedd            Zde	de
fdZd	ede
fd
Zdede
ddddddf
dZdS )ASTNestedNamenamesrootedrZ   Nc                 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   versionc                 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   	transformc                 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   r   r   r   r   r   c                    t          |           |dk    rw| j        rt          d          t          t          | j                            D ]=}|dk    rt          d          | 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   )r6   r   AssertionErrorr   Textranger   r   r   r   r   desc_addnamedesc_sig_punctuationr   )r   r   r   r   r   ir   r   firstr   destident	txt_idents                r   r   z ASTNestedName.describe_signature   s   %%%<{ +$%78883tz??++ E E66();<<<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   )rZ   r   )r   r   r   r   r   rv   r   propertyr   rV   r   r   r*   r   r   r   r   r   r   r   r      s        d=1 4 D    
    X4c 4c 4 4 4 4$6 3    6C+ 6CS 6C 26C<D6CIM6C 6C 6C 6C 6C 6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            
       J    e Zd ZdeddfdZdedefdZdeded	d
ddddf
dZ	dS )ASTBooleanLiteralvaluerZ   Nc                     || _         d S r   r  )r   r  s     r   r   zASTBooleanLiteral.__init__      


r   r   c                     | j         rdS dS )Ntruefalser  r   r   s     r   r   zASTBooleanLiteral._stringify  s    : 	67r   r   r   r   r   r   r   c                 T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_keywordr   r   r   r   r   txts         r   r   z$ASTBooleanLiteral.describe_signature  s(    $ii8,S#666r   )
r   r   r   rv   r   r*   r   r   r   r   r   r   r   r  r  
  s        d t    $6 3    7+ 7S 7 27<D7IM7 7 7 7 7 7r   r  c            
       J    e Zd ZdeddfdZdedefdZdeded	d
ddddf
dZdS )ASTNumberLiteraldatarZ   Nc                     || _         d S r   r   r   r   s     r   r   zASTNumberLiteral.__init__      			r   r   c                     | j         S r   r"  r  s     r   r   zASTNumberLiteral._stringify  
    yr   r   r   r   r   r   r   c                 T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_numberr  s         r   r   z#ASTNumberLiteral.describe_signature!  (    $ii83C===r   	r   r   r   r   r   r*   r   r   r   r   r   r   r  r            S T    $6 3    >+ >S > 2><D>IM> > > > > >r   r  c            
       N    e Zd ZdededdfdZdedefdZded	ed
dddddf
dZdS )ASTCharLiteralr   r   rZ   Nc                     || _         || _        |                                                    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   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._stringify1  s4    ;?S((;$ty0366r   r   r   r   r   r   r   c                 T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_charr  s         r   r   z!ASTCharLiteral.describe_signature7  s(    $ii81#s;;;r   r*  r   r   r   r-  r-  '  s        @s @# @$ @ @ @ @7$6 73 7 7 7 7<+ <S < 2<<D<IM< < < < < <r   r-  c            
       J    e Zd ZdeddfdZdedefdZdeded	d
ddddf
dZdS )ASTStringLiteralr   rZ   Nc                     || _         d S r   r"  r#  s     r   r   zASTStringLiteral.__init__>  r$  r   r   c                     | j         S r   r"  r  s     r   r   zASTStringLiteral._stringifyA  r&  r   r   r   r   r   r   r   c                 T    t          |           }|t          j        ||          z  }d S r   )r   r   desc_sig_literal_stringr  s         r   r   z#ASTStringLiteral.describe_signatureD  r)  r   r*  r   r   r   r8  r8  =  r+  r   r8  c            
       V    e Zd ZdefdZdedefdZdedefdZ	de
d	ed
dddddf
dZdS )ASTIdExpressionr   c                     || _         d S r   r   r   r   s     r   r   zASTIdExpression.__init__K  s    			r   r   rZ   c                 "     || j                   S r   r@  r  s     r   r   zASTIdExpression._stringifyO      y###r   r   c                 6    | j                             |          S r   )r   r   r   s     r   r   zASTIdExpression.get_idR      y(((r   r   r   r   r   r   r   Nc                 @    | j                             ||||           d S r   )r   r   r   s        r   r   z"ASTIdExpression.describe_signatureU  s$    	$$WdC@@@@@r   )r   r   r   r   r   r*   r   r   rV   r   r   r   r   r   r   r>  r>  J  s        ]    $$6 $3 $ $ $ $)c )c ) ) ) )A+ AS A 2A<DAIMA A A A A Ar   r>  c            
       P    e Zd Zd ZdedefdZdedefdZde	ded	d
ddddf
dZ
dS )ASTParenExprc                     || _         d S r   exprr   rK  s     r   r   zASTParenExpr.__init__[  r$  r   r   rZ   c                 .    d || j                   z   dz   S N()rJ  r  s     r   r   zASTParenExpr._stringify^      YYty)))C//r   r   c                 6    | j                             |          S r   )rK  r   r   s     r   r   zASTParenExpr.get_ida  rE  r   r   r   r   r   r   r   Nc                     |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S rN  r   r  rK  r   r   s        r   r   zASTParenExpr.describe_signatured  P    80c:::	$$WdC@@@80c:::r   )r   r   r   r   r*   r   r   rV   r   r   r   r   r   r   rH  rH  Z  s          0$6 03 0 0 0 0)c )c ) ) ) );+ ;S ; 2;<D;IM; ; ; ; ; ;r   rH  c                       e Zd ZdS )ASTPostfixOpNr  r   r   r   rW  rW  n  r  r   rW  c            
       V    e Zd Zded         ddfdZdedefdZded	ed
dddddf
dZ	dS )ASTPostfixCallExprlst)ASTParenExprListASTBracedInitListrZ   Nc                     || _         d S r   rZ  )r   rZ  s     r   r   zASTPostfixCallExpr.__init__s      r   r   c                 "     || j                   S r   r^  r  s     r   r   zASTPostfixCallExpr._stringifyv  s    y"""r   r   r   r   r   r   r   c                 @    | j                             ||||           d S r   )rZ  r   r   s        r   r   z%ASTPostfixCallExpr.describe_signaturey  s$    ##GT3?????r   )
r   r   r   r   r   r*   r   r   r   r   r   r   r   rY  rY  r  s        E"IJ t    #$6 #3 # # # #@+ @S @ 2@<D@IM@ @ @ @ @ @r   rY  c            
       J    e Zd ZdeddfdZdedefdZdeded	d
ddddf
dZ	dS )ASTPostfixArrayrK  rZ   Nc                     || _         d S r   rJ  rL  s     r   r   zASTPostfixArray.__init__  r$  r   r   c                 .    d || j                   z   dz   S N[]rJ  r  s     r   r   zASTPostfixArray._stringify  rQ  r   r   r   r   r   r   r   c                     |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S rf  rT  r   s        r   r   z"ASTPostfixArray.describe_signature  rU  r   
r   r   r   r  r   r*   r   r   r   r   r   r   r   rc  rc  ~  s        ] t    0$6 03 0 0 0 0;+ ;S ; 2;<D;IM; ; ; ; ; ;r   rc  c            
       :    e Zd ZdedefdZdededddd	dd
f
dZd
S )ASTPostfixIncr   rZ   c                     dS Nr   r   r  s     r   r   zASTPostfixInc._stringify      tr   r   r   r   r   r   r   Nc                 6    |t          j        dd          z  }d S rn  r   desc_sig_operatorr   s        r   r   z ASTPostfixInc.describe_signature      8-dD999r   r   r   r   r*   r   r   r   r   r   r   r   rl  rl    q        $6 3    :+ :S : 2:<D:IM: : : : : :r   rl  c            
       :    e Zd ZdedefdZdededddd	dd
f
dZd
S )ASTPostfixDecr   rZ   c                     dS Nr   r   r  s     r   r   zASTPostfixDec._stringify  ro  r   r   r   r   r   r   r   Nc                 6    |t          j        dd          z  }d S ry  rq  r   s        r   r   z ASTPostfixDec.describe_signature  rs  r   rt  r   r   r   rw  rw    ru  r   rw  c            
       @    e Zd Zd ZdedefdZdededdd	d
ddf
dZdS )ASTPostfixMemberOfPointerc                     || _         d S r   r@  rA  s     r   r   z"ASTPostfixMemberOfPointer.__init__  r$  r   r   rZ   c                 (    d || j                   z   S )N->r@  r  s     r   r   z$ASTPostfixMemberOfPointer._stringify  s    ii	****r   r   r   r   r   r   r   Nc                 p    |t          j        dd          z  }| j                            |d||           d S )Nr  r   )r   rr  r   r   r   s        r   r   z,ASTPostfixMemberOfPointer.describe_signature  s;    8-dD999	$$WlCHHHHHr   	r   r   r   r   r*   r   r   r   r   r   r   r   r|  r|    s          +$6 +3 + + + +I+ IS I 2I<DIIMI I I I I Ir   r|  c            
       V    e Zd Zdedee         fdZdedefdZ	de
ded	d
ddddf
dZdS )ASTPostfixExprr   	postFixesc                 "    || _         || _        d S r   )r   r  )r   r   r  s      r   r   zASTPostfixExpr.__init__  s    "r   r   rZ   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   r   r   r   r   r   Nc                     | 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   )r   r   r   r  r   rW  r   r*   r   r   r   r   r   r   r   r  r    s        #} #l9K # # # #$6 3    =+ =S = 2=<D=IM= = = = = =r   r  c            
       J    e Zd ZdedefdZdedefdZdeded	d
ddddf
dZ	dS )ASTUnaryOpExproprK  c                 "    || _         || _        d S r   r  rK  )r   r  rK  s      r   r   zASTUnaryOpExpr.__init__  s    			r   r   rZ   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   r   r   r   r   r   Nc                    | 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_spacerr  rK  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   )
r   r   r   r   r  r   r*   r   r   r   r   r   r   r  r    s        3 m    2$6 23 2 2 2 2A+ AS A 2A<DAIMA A A A A Ar   r  c            
       @    e Zd Zd ZdedefdZdededdd	d
ddf
dZdS )ASTSizeofTypec                     || _         d S r   typr   r  s     r   r   zASTSizeofType.__init__  r_  r   r   rZ   c                 .    d || j                   z   dz   S )Nzsizeof(rP  r  r  s     r   r   zASTSizeofType._stringify  s    99TX...44r   r   r   r   r   r   r   Nc                     |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nr]   rO  rP  r   r  r  r  r   r   s        r   r   z ASTSizeofType.describe_signature  sg    8,Xx@@@80c:::##GT3???80c:::r   r  r   r   r   r  r    s          5$6 53 5 5 5 5;+ ;S ; 2;<D;IM; ; ; ; ; ;r   r  c            
       F    e Zd ZdefdZdedefdZdededd	d
dddf
dZ	dS )ASTSizeofExprrK  c                     || _         d S r   rJ  rL  s     r   r   zASTSizeofExpr.__init__  r$  r   r   rZ   c                 (    d || j                   z   S )Nzsizeof rJ  r  s     r   r   zASTSizeofExpr._stringify  s    99TY////r   r   r   r   r   r   r   Nc                     |t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )Nr]   )r   r  r  rK  r   r   s        r   r   z ASTSizeofExpr.describe_signature  sN    8,Xx@@@8*,,,	$$WdC@@@@@r   rj  r   r   r   r  r    s        ]    0$6 03 0 0 0 0A+ AS A 2A<DAIMA A A A A Ar   r  c            
       B    e Zd ZddZdedefdZdeded	d
ddddf
dZdS )ASTAlignofExprr  rB   c                     || _         d S r   r  r  s     r   r   zASTAlignofExpr.__init__  r_  r   r   rZ   c                 .    d || j                   z   dz   S )Nzalignof(rP  r  r  s     r   r   zASTAlignofExpr._stringify  s    IIdh///#55r   r   r   r   r   r   r   Nc                     |t          j        dd          z  }|t          j        dd          z  }| j                            ||||           |t          j        dd          z  }d S )Nru   rO  rP  r  r   s        r   r   z!ASTAlignofExpr.describe_signature  sg    8,Y	BBB80c:::##GT3???80c:::r   )r  rB   r  r   r   r   r  r    s           6$6 63 6 6 6 6;+ ;S ; 2;<D;IM; ; ; ; ; ;r   r  c            
       J    e Zd ZdddefdZdedefdZded	ed
dddddf
dZ	dS )ASTCastExprr  rB   rK  c                 "    || _         || _        d S r   )r  rK  )r   r  rK  s      r   r   zASTCastExpr.__init__  s    			r   r   rZ   c                     dg}|                      || j                             |                     d           |                      || j                             d                    |          S NrO  rP  r   )r  r  rK  r   r   s      r   r   zASTCastExpr._stringify	  sd    e

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

3

99TY''(((wws||r   r   r   r   r   r   r   Nc                     |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            ||||           d S rN  )r   r  r  r   rK  r   s        r   r   zASTCastExpr.describe_signature  sn    80c:::##GT3???80c:::	$$WdC@@@@@r   rj  r   r   r   r  r    s        I ]    $6 3    A+ AS A 2A<DAIMA A A A A Ar   r  c            
       b    e Zd Zdee         dee         fdZdedefdZde	ded	d
ddddf
dZ
dS )ASTBinOpExprexprsopsc                     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   rZ   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._stringify      

99TZ]++,,,q#dj//** 	1 	1AJJsOOOJJtxA'''JJsOOOJJyyA//0000wws||r   r   r   r   r   r   r   Nc                 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  r1  r  rr  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   r   r   r   r   r  r   r   r*   r   r   r   r   r   r   r  r            d=1 S	    $6 3    I+ IS I 2I<DIIMI I I I I Ir   r  c            
       b    e Zd Zdee         dee         fdZdedefdZde	ded	d
ddddf
dZ
dS )ASTAssignmentExprr  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__8  r  r   r   rZ   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._stringify>  r  r   r   r   r   r   r   r   Nc                 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_signatureH  r  r   r  r   r   r   r  r  7  r  r   r  c            
       V    e Zd ZdefdZdedefdZdedefdZde	d	ed
dddddf
dZ
dS )ASTFallbackExprrK  c                     || _         d S r   rJ  rL  s     r   r   zASTFallbackExpr.__init__W  r$  r   r   rZ   c                     | j         S r   rJ  r  s     r   r   zASTFallbackExpr._stringifyZ  r&  r   r   c                 *    t          | j                  S r   )r   rK  r   s     r   r   zASTFallbackExpr.get_id]  s    49~~r   r   r   r   r   r   r   Nc                 J    |t          j        | j        | j                  z  }d S r   )r   literalrK  r   s        r   r   z"ASTFallbackExpr.describe_signature`  s     5=DI666r   )r   r   r   r   r   r*   r   rV   r   r   r   r   r   r   r  r  V  s        S    $6 3    c c    7+ 7S 7 27<D7IM7 7 7 7 7 7r   r  c                       e Zd ZdS )ASTTrailingTypeSpecNr  r   r   r   r  r  i  r  r   r  c            
       V    e Zd Zdee         ddfdZdedefdZdeded	d
ddddf
dZ	dS )ASTTrailingTypeSpecFundamentalr   rZ   Nc                 >    t          |          dk    sJ || _        d S r   )r   r   )r   r   s     r   r   z'ASTTrailingTypeSpecFundamental.__init__n  s     5zzQ


r   r   c                 6    d                     | j                  S )Nr  r   r  s     r   r   z)ASTTrailingTypeSpecFundamental._stringifyr  s    xx
###r   r   r   r   r   r   r   c                     d}| j         D ]5}|s|t          j                    z  }nd}|t          j        ||          z  }6d S )NTF)r   r   r  desc_sig_keyword_type)r   r   r   r   r   r  r   s          r   r   z1ASTTrailingTypeSpecFundamental.describe_signatureu  s]     	< 	<A 82444x5a;;;GG	< 	<r   )
r   r   r   r   r   r   r*   r   r   r   r   r   r   r  r  m  s        d3i D    $$6 $3 $ $ $ $<+ <S < 2<<D<IM< < < < < <r   r  c            
       j    e Zd ZdededdfdZedefd            ZdedefdZ	d	e
d
eddddddf
dZdS )ASTTrailingTypeSpecNamer   
nestedNamerZ   Nc                 "    || _         || _        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   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   r   r   r   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   )r   r   r   r   r   r   r	  r   r*   r   r   r   r   r   r   r  r    s        %s % %$ % % % % m    X$6 3    N+ NS N 2N<DNIMN N N N N Nr   r  c            
       t    e Zd Zdded         deddfdZded	ed
ddefdZde	defdZ
dededdd
dddf
dZdS )ASTFunctionParameterFargrC   ellipsisrZ   Nc                 "    || _         || _        d S r   )r  r  )r   r  r  s      r   r   zASTFunctionParameter.__init__  s     r   r   
objectTyper   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   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   c                     t          |           | j        r|t          j        dd          z  }d S | j                            ||||           d S Nr  r  )r6   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   F)r   r   r   r	   rv   r   rV   r   r   r*   r   r   r   r   r   r   r  r    s        ! !H%67 !4 !TX ! ! ! !Ic Is IH I I I I I'$6 '3 ' ' ' 'K# KS K 2K<DKIMK K K K K Kr   r  c            
           e Zd Zdee         deddfdZedee         fd            Zde	de
fdZd	ed
e
ddddddf
dZdS )ASTParametersargsattrsrZ   Nc                 "    || _         || _        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   c                    g }|                     d           d}| j        D ]=}|s|                     d           d}|                     t          |                     >|                     d           t          | j                  dk    r8|                     d           |                      || j                             d                    |          S )	NrO  T, FrP  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   r   r   r   r   r   c                    t          |           |dk    rXt          j                    }| 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 )Nr   r   Tnoemphr   r  rO  ,Fr   rP  r   )
r6   r   desc_parameterlistr  desc_parameterr   r  r  r   r  )	r   r   r   r   r   	paramlistr  r   r  s	            r   r   z ASTParameters.describe_signature  sm   %%%< 355I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   )r   r   r   r   r  r$   r   r	  r  r*   r   r   r   r   r   r   r   r  r    s        T"67 @P UY     &:!;    X$6 3    3+ 3S 3 23<D3IM3 3 3 3 3 3r   r  c                   j    e Zd Zdedededededededd	fd
ZddZdedefdZ	de
e         dd	fdZd	S )ASTDeclSpecsSimplestoragethreadLocalrU   rY   re   rI   r  rZ   Nc                 h    || _         || _        || _        || _        || _        || _        || _        d S r   )r  r  rU   rY   re   rI   r  )r   r  r  rU   rY   re   rI   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  rU   re   rI   rY   r  r   s     r   	mergeWithzASTDeclSpecsSimple.mergeWith  sv     	K!$,"?%-"&"2"Ge6G"&+"="&-"A5>"&*";"&-"A5>"&*u{":< < 	<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   rU   rY   re   rI   r  )
r   r  r  r  r  rU   rY   re   rI   r   r   s      r   r   zASTDeclSpecsSimple._stringify  s    tz??aJJyy,,---< 	%JJt|$$$ 	)JJt'(((; 	!JJx   = 	#JJz"""= 	#JJz""": 	 JJwxx}}r   	modifiersc                 p   dt           t                   dt          dd f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   rZ   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   rU   rY   re   rI   )r   r   r   r   r  r  r   r  r   r   r   extendchildrenr  r  rU   rY   re   rI   )r   r  r  tempNodes       r   r   z%ASTDeclSpecsSimple.describe_signature  sq   	DDJ 	Dc 	Dd 	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   )r   r  rZ   r  )r   r   r   r   rv   r$   r   r	  r*   r   r   r   r   r   r   r   r  r    s         # t +/8<EUZ^   	< 	< 	< 	<$6 3    $%DJ %4 % % % % % %r   r  c            
       V    e Zd Zdededededdf
dZdedefd	Zd
e	deddddddf
dZ
dS )ASTDeclSpecsouter	leftSpecs
rightSpecstrailingrZ   Nc                     || _         || _        || _        | j                            | j                  | _        || _        d S r   )r  r  r  r	  allSpecstrailingTypeSpec)r   r  r  r  r  s        r   r   zASTDeclSpecs.__init__&  s@     
"$00AA (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._stringify2  s    Idn%%q66A::JJqMMM  	3xx!||

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

1wws||r   r   r   r   r   r   r   c                    t          |           g }| j                            |           |D ]}||z  }| j        rt	          |          dk    r|t          j                    z  }| j                            ||||           g }| j                            |           t	          |          dk    r|t          j                    z  }|D ]	}||z  }d S d S )Nr   r  )r6   r  r   r  r   r   r  r  )r   r   r   r   r   r  ms          r   r   zASTDeclSpecs.describe_signatureB  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   )r   r   r   r   r  r  r   r*   r   r   r   r   r   r   r  r  %  s        
)c 
).
)/
) /
) 48
) 
) 
) 
)$6 3     + S  2<DIM     r   r  c                   Z    e Zd ZdedededededefdZded	efd
Zde	deddddd	df
dZ
dS )ASTArrayr^   rI   re   rY   vlasizec                 v    || _         || _        || _        || _        || _        || _        |r|J ||rJ d S d S r   )r^   rI   re   rY   r#  r$  )r   r^   rI   re   rY   r#  r$  s          r   r   zASTArray.__init__\  sY    
  	 	 <<<NNN Nr   r   rZ   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^   rY   re   rI   rg  r  z*]rh  )r^   r  rY   re   rI   r#  r   r$  )r   r   els      r   r   zASTArray._stringifyi  s    ; 	 IIh= 	"IIj!!!= 	"IIj!!!: 	IIg8 	,"%,,Y 	,IIii	**+++SXXb\\!C''r   r   r   r   r   r   r   Nc                    t          |           |t          j        dd          z  }ddt          dt          dt
          f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 )Nrg  Fr   r   rZ   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^   rY   re   rI   r   r   rh  )r6   r   r  r   r   rv   r^   rY   re   rI   r#  r$  r  r   )r   r   r   r   r   r  r+  s         @r   r   zASTArray.describe_signaturey  sO   %%%80c:::	+ 	S 	T 	 	 	 	 	 	 ; 	/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   )r   r   r   rv   r  r   r*   r   r   r   r   r   r   r   r"  r"  [  s        t D D D "/   ($6 (3 ( ( ( ( ;+ ;S ; 2;<D;IM; ; ; ; ; ;r   r"  c                   ^    e Zd Zedefd            Zedee         fd            Zde	fdZ
dS )ASTDeclaratorrZ   c                 :    t          t          |                     r   r   r   s    r   r   zASTDeclarator.name  r   r   c                 :    t          t          |                     r   r   r   s    r   r  zASTDeclarator.function_params  r   r   c                 :    t          t          |                     r   r   r   s    r   require_space_after_declSpecsz+ASTDeclarator.require_space_after_declSpecs  s    !$t**---r   N)r   r   r   r	  r   r   r   r  r  rv   r1  r   r   r   r-  r-    s        .m . . . X. .&:!; . . . X..t . . . . . .r   r-  c            
           e Zd Zdedee         deddfdZedefd            Z	edee
         fd            Zdefd	Zd
edefdZdededdddddf
dZdS )ASTDeclaratorNameParamdeclIdarrayOpsr   rZ   Nc                 0    || _         || _        || _        d S r   r4  r5  r   )r   r4  r5  r   s       r   r   zASTDeclaratorNameParam.__init__  s     


r   c                     | j         S r   r4  r   s    r   r   zASTDeclaratorNameParam.name  
    {r   c                     | j         j        S r   )r   r  r   s    r   r  z&ASTDeclaratorNameParam.function_params      z))r   c                     | j         d uS r   r9  r   s    r   r1  z4ASTDeclaratorNameParam.require_space_after_declSpecs      {$&&r   r   c                 (   g }| j         r#|                     || j                              | j        D ] }|                     ||                     !| j        r#|                     || j                             d                    |          S r  )r4  r  r5  r   r   )r   r   r   r  s       r   r   z!ASTDeclaratorNameParam._stringify  s    ; 	/JJyy--...- 	& 	&BJJyy}}%%%%: 	.JJyy,,---wws||r   r   r   r   r   r   r   c                     t          |           | j        r| j                            ||||           | j        D ]}|                    ||||           | j        r| j                            ||||           d S d S r   )r6   r4  r   r5  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   )r   r   r   r   r   r"  r  r   r	  r   r  r  rv   r1  r*   r   r   r   r   r   r   r   r3  r3    s"       } >2?DH    m    X *&:!; * * * X*
't ' ' ' '$6 3    F+ FS F 2F<DFIMF F F F F Fr   r3  c            
       r    e Zd ZdedefdZedefd            ZdefdZ	de
defdZd	ed
eddddddf
dZdS )ASTDeclaratorNameBitFieldr4  r$  c                 "    || _         || _        d S r   r4  r$  )r   r4  r$  s      r   r   z"ASTDeclaratorNameBitField.__init__  s    			r   rZ   c                     | j         S r   r9  r   s    r   r   zASTDeclaratorNameBitField.name  r:  r   c                     | j         d uS r   r9  r   s    r   r1  z7ASTDeclaratorNameBitField.require_space_after_declSpecs  r>  r   r   c                     g }| j         r#|                     || j                              |                    d           |                     || j                             d                    |          S )Nz : r   )r4  r  r$  r   r   s      r   r   z$ASTDeclaratorNameBitField._stringify  so    ; 	/JJyy--...

5

99TY''(((wws||r   r   r   r   r   r   r   Nc                 .   t          |           | j        r| j                            ||||           |t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            ||||           d S )N:)r6   r4  r   r   r  r  r$  r   s        r   r   z,ASTDeclaratorNameBitField.describe_signature  s    %%%; 	GK**7D#vFFF8*,,,80c:::8*,,,	$$WdC@@@@@r   )r   r   r   r   r  r   r	  r   rv   r1  r*   r   r   r   r   r   r   r   rB  rB    s        } M     m    X
't ' ' ' '$6 3    A+ AS A 2A<DAIMA A A A A Ar   rB  c                       e Zd ZdedededededdfdZedefd	            Z	ede
e         fd
            ZdefdZdedefdZdededdddddf
dZdS )ASTDeclaratorPtrnextrY   re   rI   r  rZ   Nc                 T    |sJ || _         || _        || _        || _        || _        d S r   rL  rY   re   rI   r  )r   rL  rY   re   rI   r  s         r   r   zASTDeclaratorPtr.__init__  s2    	  



r   c                     | j         j        S r   )rL  r   r   s    r   r   zASTDeclaratorPtr.name      y~r   c                     | j         j        S r   )rL  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   )rI   re   rY   r   r  rL  r1  r   s    r   r1  z.ASTDeclaratorPtr.require_space_after_declSpecs  sI    z 6T] 6dm 6
OOa6I3355	6r   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  rY   re   rI   r   )	r  r  r   rY   re   rI   rL  r1  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   r   r   r   r   r   c                    t          |           |t          j        dd          z  }| j                            |           t          | j                  dk    r+| j        s| j        s| j        r|t          j	                    z  }dt          dt          dd fd}| j        r ||d           | j        r)| j        r|t          j	                    z  } ||d           | j        r0| j        s| j        r|t          j	                    z  } ||d	           | j        s&| j        s| j        st          | j                  dk    r/| j                                        r|t          j	                    z  }| j                            ||||           d S )
Nr   r   r   r   rZ   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   rY   re   rI   )r6   r   r  r  r   r   rY   re   rI   r  r   r   rL  r1  )r   r   r   r   r   rW  s         r   r   z#ASTDeclaratorPtr.describe_signature  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   )r   r   r   r-  rv   r$   r   r	  r   r   r   r  r  r1  r*   r   r   r   r   r   r   r   rK  rK    s,       ] d d SW (-1    m    X )&:!; ) ) ) X)6t 6 6 6 6
$6 3    *A+ AS A 2A<DAIMA A A A A Ar   rK  c            
           e Zd ZdededdfdZedefd            Zedee	         fd            Z
defdZd	edefd
Zdededdddddf
dZdS )ASTDeclaratorPareninnerrL  rZ   Nc                 2    |sJ |sJ || _         || _        d S r   rZ  rL  )r   rZ  rL  s      r   r   zASTDeclaratorParen.__init__5  s&    
			r   c                     | j         j        S r   )rZ  r   r   s    r   r   zASTDeclaratorParen.name<  s    zr   c                     | j         j        S r   )rZ  r  r   s    r   r  z"ASTDeclaratorParen.function_params@  r<  r   c                     dS r*  r   r   s    r   r1  z0ASTDeclaratorParen.require_space_after_declSpecsD  ro  r   r   c                     dg}|                      || j                             |                     d           |                      || j                             d                    |          S r  )r  rZ  rL  r   r   s      r   r   zASTDeclaratorParen._stringifyG  sd    e

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

3

99TY''(((wws||r   r   r   r   r   r   r   c                     t          |           |t          j        dd          z  }| j                            ||||           |t          j        dd          z  }| j                            |d||           d S )NrO  rP  r   )r6   r   r  rZ  r   rL  r   s        r   r   z%ASTDeclaratorParen.describe_signatureN  s|    %%%80c:::
%%gtS&AAA80c:::	$$WlCHHHHHr   )r   r   r   r-  r   r	  r   r   r   r  r  rv   r1  r*   r   r   r   r   r   r   r   rY  rY  4  s       m = T     m    X *&:!; * * * X*t    $6 3    I+ IS I 2I<DIIMI I I I I Ir   rY  c            
       V    e Zd Zdee         ddfdZdedefdZde	ded	d
ddddf
dZ
dS )r[  r  rZ   Nc                     || _         d S r   )r  )r   r  s     r   r   zASTParenExprList.__init__[  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>_  !    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   r   r   r   r   r   c                 2   t          |           |t          j        dd          z  }d}| j        D ]M}|s/|t          j        dd          z  }|t          j                    z  }nd}|                    ||||           N|t          j        dd          z  }d S )NrO  Tr  FrP  )r6   r   r  r  r  r   r   r   r   r   r   r  rg  s          r   r   z#ASTParenExprList.describe_signatureb  s    %%%80c::: 	= 	=A 88cBBB82444  $V<<<<80c:::r   )r   r   r   r   r  r   r*   r   r   r   r   r   r   r   r[  r[  Z  s        d=1 d    )$6 )3 ) ) ) );+ ;S ; 2;<D;IM; ; ; ; ; ;r   r[  c            
       Z    e Zd Zdee         deddfdZdedefdZ	de
d	ed
dddddf
dZdS )r\  r  trailingCommarZ   Nc                 "    || _         || _        d S r   )r  rm  r   r  rm  s      r   r   zASTBracedInitList.__init__r  s    
*r   r   c                 v    fd| j         D             }| j        rdnd}dd                    |          |dS )Nc                 &    g | ]} |          S r   r   rf  s     r   rh  z0ASTBracedInitList._stringify.<locals>.<listcomp>w  ri  r   r  r   {r  })r  rm  r   )r   r   r  rm  s    `  r   r   zASTBracedInitList._stringifyv  sO    2222tz222#19r99U+++]]];;r   r   r   r   r   r   r   c                 p   t          |           |t          j        dd          z  }d}| j        D ]M}|s/|t          j        dd          z  }|t          j                    z  }nd}|                    ||||           N| j        r|t          j        dd          z  }|t          j        dd          z  }d S )Nrr  Tr  Frs  )r6   r   r  r  r  r   rm  rk  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   )r   r   r   r   r  rv   r   r*   r   r   r   r   r   r   r   r\  r\  q  s        +d=1 +$ +4 + + + +<$6 <3 < < < <
;+ ;S ; 2;<D;IM; ; ; ; ; ;r   r\  c            
       b    e Zd Z	 ddeeef         deddfdZdede	fdZ
d	ed
e	ddddddf
dZdS )ASTInitializerTr  	hasAssignrZ   Nc                 "    || _         || _        d S r   r  rw  )r   r  rw  s      r   r   zASTInitializer.__init__  s    
"r   r   c                 >     || j                   }| j        rd|z   S |S )Nz = ry  )r   r   vals      r   r   zASTInitializer._stringify  s,    i
##> 	3;Jr   r   r   r   r   r   r   c                     t          |           | j        rD|t          j                    z  }|t          j        dd          z  }|t          j                    z  }| j                            |d||           d S )Nr   r   )r6   rw  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   T)r   r   r   r   r\  r  rv   r   r*   r   r   r   r   r   r   r   rv  rv    s        #'# #e$5}$DE # #,0# # # #
$6 3    H+ HS H 2H<DHIMH H H H H Hr   rv  c            
           e Zd ZdededdfdZedefd            Zde	de
d	d
de
fdZedee         fd            Zdede
fdZde
fdZdede
ddd	d
ddf
dZdS )rB   	declSpecsdeclrZ   Nc                 2    |sJ |sJ || _         || _        d S r   )r  r  )r   r  r  s      r   r   zASTType.__init__  s)    "			r   c                     | j         j        S r   )r  r   r   s    r   r   zASTType.name  rP  r   r   r  r   r   c                 P    |                                                     |          S r   get_full_nested_namer   r  s       r   r   zASTType.get_id  "    **,,33G<<<r   c                     | j         j        S r   )r  r  r   s    r   r  zASTType.function_params  rR  r   r   c                 B   g } || j                   }|                    |           | j                                        r(t	          |          dk    r|                    d           |                     || j                             d                    |          S r  )r  r  r  r1  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 )Nra   r   )r  r  r   s    r   get_type_declaration_prefixz#ASTType.get_type_declaration_prefix  s    >* 	96r   r   r   r   r   c                 P   t          |           | j                            |d||           | j                                        r;t          t          | j                            dk    r|t          j                    z  }|dk    rd}| j                            ||||           d S )Nr   r   r   )	r6   r  r   r  r1  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   )r   r   r   r  r-  r   r	  r   r   rV   r   r   r   r  r  r*   r   r  r   r   r   r   r   rB   rB     sD       , m      m    X=c =s =H = = = = = )&:!; ) ) ) X)$6 3    S    A+ AS A 2A<DAIMA A A A A Ar   rB   c            
           e Zd ZdededdfdZedefd            Zde	de
d	d
de
fdZdede
fdZdede
ddd	d
ddf
dZdS )rC   r   initrZ   Nc                 "    || _         || _        d S r   )r   r  )r   r   r  s      r   r   zASTTypeWithInit.__init__  s    				r   c                     | j         j        S r   )r   r   r   s    r   r   zASTTypeWithInit.name  rP  r   r   r  r   r   c                 :    | j                             |||          S r   )r   r   r  s       r   r   zASTTypeWithInit.get_id  s    yV<<<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   r   r   r   c                     t          |           | j                            ||||           | j        r| j                            ||||           d S d S r   )r6   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   )r   r   r   rB   rv  r   r	  r   r   rV   r   r   r*   r   r   r   r   r   r   rC   rC     s        W N t     m    X=c =s =H = = = = =$6 3    E+ ES E 2E<DEIME E E E E Er   rC   c            
       X    e Zd Z	 	 ddedededdfdZdedefd	Zd
e	deddddddf
dZ
dS )ASTMacroParameterFr  r  variadicrZ   Nc                 0    || _         || _        || _        d S r   )r  r  r  )r   r  r  r  s       r   r   zASTMacroParameter.__init__  s      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   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  )	r6   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   )FF)r   r   r   r   rv   r   r*   r   r   r   r   r   r   r   r  r    s        <A"'! !M !T !!,0! ! ! !'$6 '3 ' ' ' '	K# 	KS 	K 2	K<D	KIM	K 	K 	K 	K 	K 	Kr   r  c            
           e Zd Zdedee         ddfdZedefd            Zde	de
d	d
de
fdZdede
fdZdede
ddd	d
ddf
dZdS )rD   r  r  rZ   Nc                 "    || _         || _        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   r  r   r   c                 P    |                                                     |          S r   r  r  s       r   r   zASTMacro.get_id  r  r   r   c                 ^   g }|                      || j                             | j        m|                     d           d}| j        D ]9}|s|                     d           d}|                      ||                     :|                     d           d                    |          S )NrO  Tr  FrP  r   )r  r  r  r   )r   r   r   r  r  s        r   r   zASTMacro._stringify  s    

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

99S>>****JJsOOOwws||r   r   r   r   r   c                    t          |           | j                            ||||           | j        d S t	          j                    }| j        D ]7}t	          j        ddd          }|                    |d||           ||z  }8||z  }d S )Nr   Tr  r   r  )r6   r  r   r  r   r   r  )r   r   r   r   r   r  r  r   s           r   r   zASTMacro.describe_signature"  s    %%%
%%gtS&AAA9F/11	9 	 	C+B4@@@E""5'3v"FFFII9r   )r   r   r   r   r   r  r   r	  r   rV   r   r   r*   r   r   r   r   r   r   rD   rD     s        m 48I3J t     m    X=c =s =H = = = = =$6 3    + S  2<DIM     r   rD   c            
       b    e Zd ZdeddfdZdededddefd	Zd
edefdZ	de
deddddddf
dZdS )r>   r   rZ   Nc                     || _         d S r   r@  rA  s     r   r   zASTStruct.__init__1  r$  r   r   r  r   r   c                 P    |                                                     |          S r   r  r  s       r   r   zASTStruct.get_id4  r  r   r   c                 "     || j                   S r   r@  r  s     r   r   zASTStruct._stringify7  rC  r   r   r   r   r   c                 `    t          |           | j                            ||||           d S r  r6   r   r   r   s        r   r   zASTStruct.describe_signature:  5    %%%	$$WdC$GGGGGr   r   r   r   r   r   rV   r   r   r*   r   r   r   r   r   r   r>   r>   0          ] t    =c =s =H = = = = =$$6 $3 $ $ $ $H+ HS H 2H<DHIMH H H H H Hr   r>   c            
       b    e Zd ZdeddfdZdededddefd	Zd
edefdZ	de
deddddddf
dZdS )r?   r   rZ   Nc                     || _         d S r   r@  rA  s     r   r   zASTUnion.__init__A  r$  r   r   r  r   r   c                 P    |                                                     |          S r   r  r  s       r   r   zASTUnion.get_idD  r  r   r   c                 "     || j                   S r   r@  r  s     r   r   zASTUnion._stringifyG  rC  r   r   r   r   r   c                 `    t          |           | j                            ||||           d S r  r  r   s        r   r   zASTUnion.describe_signatureJ  r  r   r  r   r   r   r?   r?   @  r  r   r?   c            
       b    e Zd ZdeddfdZdededddefd	Zd
edefdZ	de
deddddddf
dZdS )r@   r   rZ   Nc                     || _         d S r   r@  rA  s     r   r   zASTEnum.__init__Q  r$  r   r   r  r   r   c                 P    |                                                     |          S r   r  r  s       r   r   zASTEnum.get_idT  r  r   r   c                 "     || j                   S r   r@  r  s     r   r   zASTEnum._stringifyW  rC  r   r   r   r   r   c                 `    t          |           | j                            ||||           d S r  r  r   s        r   r   zASTEnum.describe_signatureZ  r  r   r  r   r   r   r@   r@   P  r  r   r@   c            
       v    e Zd Zdedee         deddfdZdede	d	d
de	fdZ
dede	fdZdede	ddd	d
ddf
dZdS )rA   r   r  r  rZ   Nc                 0    || _         || _        || _        d S r   )r   r  r  )r   r   r  r  s       r   r   zASTEnumerator.__init__a  s    		


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

99TY''(((tz??aJJsOOOJJyy,,---9 	-JJyy++,,,wws||r   r   r   r   r   c                 :   t          |           | j                            ||||           t          | j                  dk    r0|t          j                    z  }| j                            |           | j        r| j                            |d||           d S d S )Nr   r   )r6   r   r   r   r  r   r  r  r   s        r   r   z ASTEnumerator.describe_signaturet  s    %%%	$$WdC@@@tz??ax.000GJ))'2229 	KI((*c6JJJJJ	K 	Kr   )r   r   r   r   r	   rv  r$   r   rV   r   r   r*   r   r   r   r   r   r   rA   rA   `  s        ] (>2J (-1   =c =s =H = = = = =$6 3    K+ KS K 2K<DKIMK K K K K Kr   rA   c                       e Zd Z	 ddededeeef         deddf
dZdd	Z	e
defd
            Ze
dee         fd            ZddededefdZdefdZdedefdZdededddeddf
dZdS )r   Fr  directiveTyper   	semicolonrZ   Nc                 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   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   c                 ^    | j         dk    rd S t          t          | j                  }|j        S )Nfunction)r  r   rB   r   r  r  s     r   r  zASTDeclaration.function_params  s/    ?j((4GT-..##r   Tr   r  c                     | j         dk    r'| j        r | j        j                            ||          S | j                            || j         | j                  }|rt
          |         |z   S |S )N
enumerator)r  r  r   r   r   
_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   c                 >     || j                   }| j        r|dz  }|S )N;)r   r  r   s      r   r   zASTDeclaration._stringify  s,    i())> 	3JC
r   r   r   r   r   optionsc                 0   t          |           | j        sJ d|d<   t          j                    }d|_        | j        j         |d<   ||z  }| j        dk    rny| j        dk    rnl| j        dk    rn_| 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  }nv| 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memberr  macror_   rb   rO   r  r   r  )r6   r   r   desc_signature_linesphinx_line_typeisRedeclarationr  r  r  r   rB   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&&_
**_''_((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   r  )rZ   r   r}  )r   r   r   r   r   r  r  rv   r   r  r	  r   r   r   r  rV   r   r  r*   r   r   r   r   r   r   r   r   r     s        $)
3 
33 
3s 
3#O5I$IJ
3 
3-1
3 
3 
3 
3H H H H m    X $&:!; $ $ $ X$ c T S    *s * * * *$6 3    (D+ (DS (D 2(D=A(DFJ(D (D (D (D (D (Dr   r   c                   2    e Zd Zded         dddeddfdZdS )SymbolLookupResultsymbolsr   parentSymbolr  rZ   Nc                 0    || _         || _        || _        d S r   )r  r  r  )r   r  r  r  s       r   r   zSymbolLookupResult.__init__  s    (


r   )r   r   r   r   r   r   r   r   r   r  r    sK         2 ( %*.     r   r  c                   F    e Zd Zdeeeef                  ddfdZdefdZdS )	LookupKeyr   rZ   Nc                     || _         d S r   r"  r#  s     r   r   zLookupKey.__init__  r$  r   c                 p    d                     d                    d | j        D                                 S )Nz[{}]r  c              3   H   K   | ]\  }}d                      ||          V  dS )z({}, {})N)format)r   r  r  s      r   r   z$LookupKey.__str__.<locals>.<genexpr>  sO       '5 '5&E3 (2'8'83( ( '5 '5 '5 '5 '5 '5r   )r  r   r   r   s    r   r   zLookupKey.__str__  sF    }}TYY '5 '5*.)'5 '5 '5 5 5 6 6 	6r   )	r   r   r   r   r
   r   r   r   r   r   r   r   r  r    s`        T%s(:";<     6 6 6 6 6 6 6r   r  c                       e Zd ZdZdZdZdZd Zd Ze	de
ddfd	            Zd6d
Zdede
ddf fdZdd dededededdfdZdedededdfdZd6dZd6dZdeddfdZded          fdZeded          fd            Zeded          fd            Zd7dZdefdZdedededd fd Z dededed!eded          f
d"Z!d#ed$e"d egd f         d%ededed!ede#fd&Z$d#ededededd f
d'Z%d(d d)e&e         d*d+ddfd,Z'd#edd fd-Z(dedededd fd.Z)dededed!edd f
d/Z*d8d0Z+d#ed1edededd f
d2Z,d3edefd4Z-d3edefd5Z. xZ/S )9r   r   z  Fc                     t                      r   )r   r   s    r   __copy__zSymbol.__copy__  s    r   c                 R    | j         rt                      t          d d d d d           S r   )r  r   r   )r   memos     r   __deepcopy__zSymbol.__deepcopy__  s0    ; 	8 """ $dD$777r   r  rZ   Nc                  h    t          t          j        t          j        z  d           t          |   d S )Nr   end)printr   debug_indent_stringdebug_indentr  s    r   debug_printzSymbol.debug_print  s-    f(6+>>BGGGGt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  c                 p    |dk    rt                      t                                          ||          S )Nr  )r   super__setattr__)r   r  r  	__class__s      r   r  zSymbol.__setattr__  s4    * """77&&sE222r   r  r  r   r  linec                 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   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_empty'  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_params7  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.removeN  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_docU  s    n 	+ 	+FW%%%! 	+fn&?&?%)"!%"&27=7JF'4&27=7JF'4&*#&*#	+ 	+r   c              #   Z   K   | V  | j         D ]}|                                E d {V  d S r   )r  get_all_symbols)r   r
  s     r   r  zSymbol.get_all_symbolsc  sQ      


n 	0 	0F--//////////	0 	0r   c              #   $   K   | j         E d {V  d S r   )r  r   s    r   r  zSymbol.childrenh  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   r  zSymbol.children_recurse_anonl  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_keyt  s    
 h 	NN1A h 	 	 	, 	,A}(

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

AGT?++++~~r   c                     g }| }|j         r#|                    |           |j         }|j         #|                                 g }|D ]}|                    |j                   t	          |d          S )NFr   )r  r  r  r  r   )r   r  r  r   s       r   r  zSymbol.get_full_nested_name  s    h 	NN1A h 	 	 	" 	"ALL!!!!U51111r   	matchSelfrecurseInAnonc                     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_symbolsrL  StopIteration)r   r  r  r  r   s        r   _find_first_named_symbolzSymbol._find_first_named_symbol  sz      	><===&&ui8= ' ? ?	99 	 	 	44	s   A 
AAr  c              #   V   K   t           j        rt           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
t          d         f fd} |            D ]}t           j        rKt                               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: rZ   )r   NNc               3     K   } t           j        rKt                               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        rKt                               d           t          |                     t           j        dz             d           )Nzsearching in self:r   r   r  Tzsearching in sibling:)	r   r  r  r  	to_stringr  r  r  r  )r  r  r  r   s    r   
candidatesz.Symbol._find_named_symbols.<locals>.candidates  s     A" D""#7888akk&"5"9::CCCCH GGG  + 666666666 {*******>)EN& H&&'>???!++f&9A&=>>BGGGGHr   z
candidate:matches      )r   r  r  r  r  r  r   r  )r   r  r  r  r  r   r  s   ` ``   r   r  zSymbol._find_named_symbols  s4       		G1$56661$w'''$..!4q!899rBBBB3U;;;3Y???3]CCC35EFFF	HI&:; 	H 	H 	H 	H 	H 	H 	H 	H(  	- 	-A" D""<000akk&"5"9::CCCCw%& -''1,''&&y111''1,''& -''1,'' 	%1$	% 	%r   r  onMissingQualifiedSymbolancestorLookupTypec                    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        rKt                               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        rKt                               d           t	          |                    t           j        dz             d           |d         }
|                    |
|||          }t           j        r$t          |          }t           xj        dz  c_        t          |||
          S )Nr   z_symbol_lookup:r  r   r  znestedName:        zancestorLookupType:zmatchSelf:         zrecurseInAnon:     zsearchInSiblings:  r   r  r  r  zstarting point:r   r  r  r#  Fzhandle last name from:)r   r  r  r  r  r  r   r   r  find_identifierr  r  listr  )r   r  r$  r%  r  r  r  r   r  	firstNamer  r   r  s                r   _symbol_lookupzSymbol._symbol_lookup  s%     
	H1$01111$w'''$..!4q!899rBBBB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  	K0111,(()<q)@AArJJJJ 3B3Z 	" 	"E!::- ; I IF~11,FF>* 1++q0++44 I!LL 	K7888,(()<q)@AArJJJJ 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t
          d	df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                                         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  rZ   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: r#  r  r  r   r  r  )r   r  r  r  r  r  s     r   r$  z5Symbol._add_symbols.<locals>.onMissingQualifiedSymbol(  s    " )##q(##""#LMMM##q(##""9e444##q(##U&*DtE E E Er   Fr%  r  r  r  r   z _add_symbols, result, no symbol:zident:       zdeclaration: zlocation:    {}:{}r/  r#  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 symbolr/  z end:   creating candidate symbol)r   r  r  r  r  )r   r   r  r  lookupResults    r   makeCandSymbolz+Symbol._add_symbols.<locals>.makeCandSymbolo  ss    " G""#EFFF<#<"."4(3$+$8 8 8F " G""#EFFFMr   r   
candSymbolc                     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   redeclarationr#  T)r   r  r  r  r  r   )r   r5  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?:)rZ   r   )r   r   r5  r   rZ   N)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   noDeclwithDecldupDeclr  r4  r5  r8  candIdoldIdr3  s     ```            @r   r  zSymbol._add_symbols  s     	H1$///1$|Z888|[999077FFGGG	E8 	EM 	EV^ 	E 	E 	E 	E **:+C>B5:9><A + C C '''|+,,w<<1" )""#EFFF##q(##""?L4FGGG""?K@@@""#7#>#>w#M#MNNN##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;;!" )""#QS]eiSijjj##q(##%!!%~'''" )""Wd*, , , ##q(##%!!### AYF {GT:::Mr   r   docnamesr   r   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  r  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  loggerwarning
merge_with)r   r   r>  r   
otherChildourChildr   msgs           r   rE  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        rt           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        rut           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  r#  ztrying:)
r   r  r  r  r  r  r  r  r  r  )r   r  r  r  r  currentr  r  s           r   r)  zSymbol.find_identifier  s     		%1$12221$2E:::2I>>>2MBBB24DEEE$..!4q!899rBBBB1$!" )##q(##""9---g''(;a(?@@bIIII##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|           |2t          |                    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 foundr#  )	r   r  r  r  r   r  r  r  r  )r   r  r  r   r  r   cands          r   direct_lookupzSymbol.direct_lookup  so    	%1$/0001$ 	 	ID#C  :%%CE & A" 4""#4d;;;""#4c:::=!++f&9A&=>>BGGGGG&&{333y& -''1,''tt   	%1$r   r  c                 x   t           j        r/t           xj        dz  c_        t                               d           dddt          ddf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  rZ   c                     d S r   r   r0  s     r   r$  z9Symbol.find_declaration.<locals>.onMissingQualifiedSymbol7  s    4r   Fr1  r   )	r   r  r  r  r   r,  r*  r  r   )r   r  r  r  r  r$  r3  r  s           r   find_declarationzSymbol.find_declaration0  s      	41$2333	8 	,9	>F	 	 	 	 **:+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	(rP  
r   )
r   r  r  r  r  r   r   r  r  r   )r   rU  r   s      r   r  zSymbol.to_stringK  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   )r  r  r  r   r   )r   rU  r   r   s       r   r   zSymbol.dump`  s\    ~~f%%& 	+ 	+AJJqvvfqj))****wws||r   rZ   N)rZ   r  )r  r  rZ   r   )0r   r   r   r  r  r  debug_show_treer  r  staticmethodr   r  r  r   r  r   r   rV   r   r   r  r  r	  r   r  r	  r  r  r   r   r  rv   r  r  r   r  r,  r  r   rE  rJ  rL  r)  rQ  rT  r  r   __classcell__r  s   @r   r   r     s       LLO  8 8 8 3 4    \$ $ $ $3s 33 34 3 3 3 3 3 3$x $ $,$7:$BE$JN$ $ $ $2$~ $ $3 $SW $ $ $ $ % % % %.   + + + + + +0(!3 0 0 0 0
 "(8, " " " X" /x'9 / / / X/   (
2m 
2 
2 
2 
2
m 
,0
AE
JR
 
 
 
0% 0%'+0%<@0%.20%7?7I0% 0% 0% 0%dF@ F@198]:SU]:]1^F@+.F@;?F@ '+F@ ?CF@ HZF@ F@ F@ F@P^} ^"0^;>^FI^NV^ ^ ^ ^@"% "%DI "%*"%/3"% "% "% "%H= X    > !$,/4<   ] #'8<PT%   >   8= s $(9=BJ   6     *3 3        r   r   c            
       @   e Zd Zedefd            Zed             Zed             ZdefdZde	fdZ
defdZdefdZd	ed
ededeee         ef         fdZdefdZdefdZdefdZdefdZdefdZdefdZdedefdZdefdZdefdZdefdZ	 d;dee         de g ef         dedefdZ!de"fdZ#de$e         fdZ%de&fdZ'de(fd Z)d!ede$e*         fd"Z+d#ed$ede,fd%Z-d;d#ed$ede.fd&Z/d'e0eef         d!ed$ede1fd(Z2	 d;d'e0eef         d!ed$ede1fd)Z3d<d#ed+ede4fd,Z5d=d'e0eef         d#e$e         de6fd-Z7d'e0eef         d#ede8fd.Z9de:fd/Z;de<fd0Z=de>fd1Z?de@fd2ZAdeBfd3ZCdeDfd4ZEd5ed6edeDfd7ZFde"fd8ZGde"fd9ZHde0ee6f         fd:ZId*S )>DefinitionParserrZ   c                     dS )NCr   r   s    r   languagezDefinitionParser.languageh  s    sr   c                     | j         j        S r   )configc_id_attributesr   s    r   id_attributeszDefinitionParser.id_attributesl  s    {**r   c                     | j         j        S r   )rd  c_paren_attributesr   s    r   paren_attributesz!DefinitionParser.paren_attributesp  s    {--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_stringt  s    ##48A
	x 		@AAAA"c))&)A"d**HHMHH
	 x011r   c                    |                                   |                     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   r#  z8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)skip_ws	skip_wordr  rn  matchr/   r0   r  rq  r-   r1   r3   r5   r4   rt  r8  r.   
last_matchgroupr-  UnicodeDecodeErrorrp  r+   )r   rn  regexstringr   r   rg  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c                     | j         dk    rd S | xj        dz  c_        |                                 }|                                  |                     d          s|                     d           t          |          S )NrO  r   rP  z0Expected ')' in end of parenthesized expression.)rm  rn  _parse_expressionrv  skip_stringrp  rH  )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   )rv  r~  r  _parse_nested_namer>  )r   r   r  s      r   _parse_primary_expressionz*DefinitionParser._parse_primary_expression  sp     	!0022?J**,,?J$$&&>"2&&&tr   r   openclosec                 >   |                                   |                     |          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'.rs  r   )rv  skip_string_and_wsr  r  r  rp  rm  rn  )r   r   r  r  r  rm  rK  s          r   _parse_initializer_listz(DefinitionParser._parse_initializer_list  s5    	&&t,, 	:E"" 	u9	LLNNN))++DLLNNNLLLLNNN&& **3// P			$$$NOOO E))esllA $	 m##r   c                 \    |                      ddd          \  }}|d S t          |          S )Nzparenthesized expression-listrO  rP  )r  r[  ro  s      r   _parse_paren_expression_listz-DefinitionParser._parse_paren_expression_list  s@      $;;<[<? F  F}=4&&&r   c                 ^    |                      ddd          \  }}|d S t          ||          S )Nzbraced-init-listrr  rs  )r  r\  ro  s      r   _parse_braced_init_listz(DefinitionParser._parse_braced_init_list  s=      $;;<NPSUXYY}=4 666r   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 )
NTrg  rh  z*Expected ']' in end of postfix expression.r  r   r"  r   r   )r  rv  r  r  r  rp  r  rc  rn  r  r|  rl  rw  r  rY  r  )r   r   r  rK  r   rZ  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   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  r]   rO  F)namedrP  zExpecting ')' to end 'sizeof'.ru   zExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.)rv  _expression_unary_opsrw  r  _parse_cast_expressionr  skip_word_and_wsr  _parse_typerp  r  _parse_unary_expressionr  r  r  )r   r  r   rK  r  s        r   r  z(DefinitionParser._parse_unary_expression'	  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 )NrO  FrP  z Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.)rn  rv  r  r  rp  r  r  r(   r  r  _make_multi_error)r   rn  r  rK  exCastexUnaryerrss          r   r  z'DefinitionParser._parse_cast_expressionM	  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                     dz   t          t                    k    rdt          f fd}ndt          f	 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   rZ   c                  ,                                      S r   )r  r   s   r   parserzYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parsers	  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>.parserv	  s    --dD1H===r   TFr   abcnoxr   )r   _expression_bin_opsr  r  rv  rn  rw  r  rm  r(   r  )
r   r  r  r  r  rn  oneMorer  rK  r  s
   ``       r   r  zIDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_exprq	  s   ax3233339 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D10D1r   r   )r   r  s    @r   _parse_logical_or_expressionz-DefinitionParser._parse_logical_or_expressione	  s2    $	, $	, $	, $	, $	,J "!$***r   
orExprHeadc                     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  rv  _expression_assignment_opsrw  r  r  )r   r  r  orExprr  r  rK  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  allowc                 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:
%srP  rs  rh  )rO  rr  rg  r   r   r   z0Could not find end of expression starting at %d.)rn  r(   allowFallbackExpressionParsingwarnrv  rx  
_string_rematched_textro  r   rm  r  poprp  rq  stripr  )
r   r  r  r  prevPosrg  rr  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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.)rv  r  rx  r2   rp  r  	_keywordsrd  c_extra_keywordsr   r   r  r   )r   r   r   r   rH  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)rv   rw   rx   )rx  _simple_type_specifiers_rer  rd  r  rw  )r   ts     r   _parse_simple_type_specifierz-DefinitionParser._parse_simple_type_specifier
  sb    ::011 	%$$1 	 	ADK000>>!$$ HHHtr   c                     g }|                                   	 |                                 }|n*|                    |           |                                   At          |          dk    rd S t	          |          S )NTr   )rv  r  r  r   r  )r   r   r  s      r   _parse_simple_type_specifiersz.DefinitionParser._parse_simple_type_specifiers
  sw    	1133AyLLOOOLLNNN	 u::??4-e444r   c                 
   |                                   |                                 }||S d }|                                   dD ]}|                     |          r|} n|                                 }t	          ||          S )N)r_   rO   rb   )rv  r  r  r  r  )r   r   r   kr  s        r   _parse_trailing_type_specz*DefinitionParser._parse_trailing_type_spec&
  s     	0022?J , 	 	A$$Q''  ,,..
&vz:::r   	paramModec                 x   |                                   |                     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        z             #|                                 }t          ||          S )NrO  r  zExpecting "(" in parameters.rP  r   r  Tz'Expected ")" after "..." in parameters.singler  r  r  z-Expecting "," or ")" in parameters, got "%s".)	rv  r  rp  r  r  _parse_type_with_initrm  _parse_attribute_listr  )r   r  r  r  r  s        r   _parse_parametersz"DefinitionParser._parse_parameters9
  s   $$ 	J&&		89999t$$ 	99##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(( 9%%c** 9II$&*&789 9 9)90 **,,T5)))r   r  typedc                    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  rE   rX   )r  r  r^   rP   r{   rs   r  rU   rY   re   rI   )rv  rw  _parse_attributer  r  r$   )r   r  r  r  r  rU   rY   re   rI   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   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  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  Fr  r   rg  Tr^   rI   re   rY   r   rh  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   rI  rD  r7  )rx  r2   r  r  rp  rd  r  r   r   r   r  rv  r  r  r  r  r  r"  r  r   r  rB  r3  )r   r  r  r  rH  r   r4  r5  r^   rI   re   rY   r#  r$  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   rY   re   rI   rN  rO  z If declarator-id with parametersr  z (e.g., 'void f(int arg)')rP  z$Expected ')' in "( ptr-declarator )"r   r  r  r  r\  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   rv  r  r  r  r  _parse_declaratorrK  r$   rm  rn  r  r(   rp  rY  r  )r   r  r  r  
prevErrorsrY   re   rI   r  r  rL  rn  r   exParamQualrH  rZ  exNoPtrParenheaderrg  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allowFallbackc                 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)rw  r   r  rP  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  )rv  r  rv  r  rp  r  )r   r  r  
bracedInitfallbackEndr  r  s   `      r   _parse_initializerz#DefinitionParser._parse_initializerI  s    H
 $$ 	41133
!!*---H%'KK]*KKII %',- . . .	7 	7 	7 	7 	7 //V=/YYe$$$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   rn  r  r  
assert_endr(   r  r  rB   )r   r  r  r  rr  r  r  	exUntypeddescexTypedr  r  r  s                r   r  zDefinitionParser._parse_typef  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)c                     |r|dv sJ |                      ||          }|                     |          }t          ||          S )Nr  r  r  )r  r  rC   )r   r  r  r   r  s        r   r  z&DefinitionParser._parse_type_with_init  sZ     	;:::::e599&&U&33tT***r   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.rO  rP  r   r  Tz-Expected ")" after "..." in macro parameters.z(Expected identifier in macro parameters.Fr  r  z9Expected identifier, ')', or ',' in macro parameter list.)rv  r  rp  r  rD   r  r  r  rx  r2   r   r   r  )r   r  r  r  s       r   _parse_macrozDefinitionParser._parse_macro  sV   ''))=II@AAA&&s++ 	)E4(((C   	'E2&&&	W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++ W((-- W		UVVV5	W6 t$$$r   c                 H    |                                  }t          |          S r   )r  r>   rA  s     r   _parse_structzDefinitionParser._parse_struct  s    &&((r   c                 H    |                                  }t          |          S r   )r  r?   rA  s     r   _parse_unionzDefinitionParser._parse_union  s    &&((~~r   c                 H    |                                  }t          |          S r   )r  r@   rA  s     r   _parse_enumzDefinitionParser._parse_enum  s    &&((t}}r   c                 X                                      }                                 }                                  d }                     d          rF                                  dt          f fd}                     g |          }t          |          }t          |||          S )Nr   rZ   c                  ,                                      S r   )r  r   s   r   r  z2DefinitionParser._parse_enumerator.<locals>.parser  s    66888r   )r  r  rv  r  r  r  rv  rA   )r   r   r  r  r  initVals   `     r   _parse_enumeratorz"DefinitionParser._parse_enumerator  s    &&((**,,C   	+LLNNN9M 9 9 9 9 9 9 55b&AAG!'**DT4///r   c                    |                                   d }|                     d          rd}|                                 }nm|                     d          rd}|                                 }nA|                     d          rd}|                                 }n|                     d           t          |||d          S )Nr_   rb   rO   zTCould not parse pre-v3 type directive. Must start with 'struct', 'union', or 'enum'.F)rv  rw  r  r  r  rp  r   )r   r   r  s      r   parse_pre_v3_type_definitionz-DefinitionParser.parse_pre_v3_type_definition  s    '+>>(## 	HC,,..KK^^G$$ 	HC++--KK^^F## 	HC**,,KKII G H H Hc3U;;;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|                                 }n}|dk    r|                                 }nb|dk    r|                                 }nG|dk    r|                                 }n,|dk    r|                     dd          }nt                      |d	k    r*| 	                                 | 
                    d          }nd}t          ||||          S )N)r  r  r  r_   rb   rO   r  r   z(Internal error, unknown objectType "%s".)	r  r  varr  r_   rb   rO   r  r   z+Internal error, unknown directiveType "%s".r  T)r  r  r  r  r_   rb   rO   r  r   r  F)r   r  r  r  r  r  r  r  r   rv  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_object  s    &&(((r   c                     |                                  }|                                  |                     d           |                                  |S )Nz())r  rv  r  r  rA  s     r   parse_xref_objectz"DefinitionParser.parse_xref_object!  sI    &&((r   c                    | 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)rn  r  rv  r  r(   r  r  r  )r   rn  r   exExprexTyper  r  s          r   parse_expressionz!DefinitionParser.parse_expression)  s3   h-1	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}  r*  r   )Jr   r   r   r	  r   rb  rf  ri  rt  r  r~  r  r  r  r
   r   rv   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  rv  r  rB   r  rC   r  rD   r  r>   r  r?   r  r@   r  rA   r  r   r  r  r  r  r  r   r   r   r_  r_  g  s       #    X + + X+ . . X.2s 2 2 2 2&$
 $ $ $ $L	! 	! 	! 	! 	!=     $C $s $3 $%*4+>+D%E$ $ $ $<'.> ' ' ' '7): 7 7 7 7*1> *1 *1 *1 *1X$0 $0 $0 $0 $0L2 2 2 2 201+m 1+ 1+ 1+ 1+fS ]    -m - - - -<M    3= 3 3 3 3 ). ).Cy).R./). ). $1). ). ). ).V,M , , , ,<hsm    5/M 5 5 5 5;+> ; ; ; ;&$*3 $*8M3J $* $* $* $*L8Vc 8V$ 8VCU 8V 8V 8V 8VtD Ds D4 D< D D D DO3tSy)O369O3BFO3	O3 O3 O3 O3d )-OD ODuT3Y'7 ODC OD!%OD1>OD OD OD ODb% % %4 % .% % % %:9( 9(tSy!1 9((3- 9(SZ 9( 9( 9( 9(v+5s+; +C +O + + + +&%h &% &% &% &%Py    h    W    0= 0 0 0 0<n < < < <" QC  Q  Q  Q  Q  Q  QD) ) ) ) )=    %w(>"?      r   r_  rZ   c                  @    t          t          d          gd          S )NPhonyNameDueToErrorFr  )r   r   r   r   r   _make_phony_error_namer  ?  s!    -(=>>?NNNNr   c                   :    e Zd ZU dZej        ej        dZeed<   de	ddfdZ
de	ded	eddfd
Zedefd            Zedefd            ZdedefdZdede	fdZdede	fdZd	ede	deddfdZdee         f fdZded	ede	fdZddZddZdedefdZ xZS )CObjectz-
    Description of a C language object.
    )noindexentrynocontentsentryoption_specastrZ   Nc                    |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  rO   FTr'  r   r/  )r  r   r  r  r   r  r)  r  r  r   r   r  get_source_info)r   r  r   r  
parentDecltargetSymbolr  	declClones           r   _add_enumerator_to_parentz!CObject._add_enumerator_to_parentM  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   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   idsr  entriesr  r   )r  r  r   r  r)   r*  reversedr   r  r   lstripstatedocumentr  note_explicit_targetr  get_index_text	indexnode)
r   r  r  r   r  r  idnewestIdr   	indexTexts
             r   add_target_and_indexzCObject.add_target_and_indexr  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===--++D11IN9%,,h	8RQU-VWWWWW .-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   r.  rA  s     r   r%  zCObject.get_index_text  s    ~~t'? @@@r   r  c                 B    |                     | j        | j                  S r   )r  r,  objtyper   r  s     r   parse_definitionzCObject.parse_definition  s    ''(8$,GGGr   c                 *    |                                 S r   )r  r2  s     r   r  z$CObject.parse_pre_v3_type_definition  s    22444r   r  c                 @    |                     |d| j        |           d S )Nr   )r   r   )r   r   r  r  s       r   r   zCObject.describe_signature  s$    wdhHHHHHr   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)
r"  r#  settingsr   	temp_data
domaindatar   ref_contextr  run)r   r   rootr  s      r   r>  zCObject.run  sv    j!*.CM11>#&}5D/3CM+,.2.A.A.C.CCON+
 *.o&ww{{}}r   c                    | j         j        d         }t          ||| j         j                  }	 	 |                     |          }|                                 n# t          $ r}| j         j        d         s | j        dk    r 	 |                     |          }|                                 n# t          $ r |w xY w|j	        | _
        | j         j        d         rFd}|                    t          j        ||j	        ||          }t                              ||           Y d }~nd }~ww xY w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# t0          $ rk}|j        | j         j        d<   t5          d          }||j        j        |j        j        | j        |fz  }t                              ||           Y d }~nd }~ww xY w|j	        dk    r|                     |           t=          | j                  }|                      |||           |S )Nr7  rB  rd  c_allow_pre_v3r   c_warn_on_allowed_pre_v3zl{}: Pre-v3 C type directive '.. c:type:: {}' converted to '.. c:{}:: {}'.
The original parsing error was:
{}rA  r9  r   )r  r  r@  r  )!r   r;  r_  rd  r3  r  r(   r1  r  r  r,  r  r   r   rC  rD  r  rJ  
ValueErrorrL  r  r  r  r  r   r   r   r  r.  r  dictr  r   )r   r  r   r  r  r  eOrigrH  rg  r   r   r  s               r   handle_signaturezCObject.handle_signature  sG   #x12CD!#PPP	$:++F33!!####" : : :x'78 <6)) ;;FCCC%%''''&      K #&> 8?#=> :BC **%=%F%(#.#uF FCNN3N999#:$  	$ 	$ 	$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
so   )A D1 
D-%D()B/.D(/B<<A'D(#D1 (D--D1 1
F;AFFBH. .
J#8A!JJ#c                     | j         j        d         }|sJ | j         j        d         | _        | j         j        d         | _        || j         j        d<   |                                | j         j        d<   d S )Nr9  r7  r   )r   r;  oldParentSymbolr=  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 )Nr7  r   )rI  r   r;  rJ  r=  r   s    r   after_contentzCObject.after_content  s-    040D,-/3/@^,,,r   c                     d|z   S )zGenerate old styled node_id for C objects.

        .. note:: Old Styled node_id was used until Sphinx-3.0.
                  This will be removed in Sphinx-5.0.
        r   r   rA  s     r   make_old_idzCObject.make_old_id   s     d{r   rY  )r   r   r   __doc__r   flagr  r<   __annotations__r   r  r   r   r*  r	  r,  r.  r%  r_  r3  r  r   r   r   r   r>  rG  rL  rN  rP  r\  r]  s   @r   r  r  C  sY         
 #%? K   
#I^ #I #I #I #I #IJX XS X&1X6:X X X X@ $S $ $ $ X$  S       X A3 A3 A A A AH'7 HN H H H H53C 5 5 5 5 5I+ IN I$(I-1I I I IT$Z      >C >+ >. > > > >@K K K KA A A A         r   r  c                   .    e Zd ZdZedefd            ZdS )CMemberObjectr  rZ   c                 &    | j         dv sJ | j         S )N)r  r  )r1  r   s    r   r.  z!CMemberObject.display_object_type  s      |00000|r   N)r   r   r   r,  r	  r   r.  r   r   r   rU  rU  	  s>        KS    X  r   rU  	parameter
Parameters)r   rW  r  argumentrK  )r   )labelr   typerolename	typenamesretvalzReturn values)retvalsr]  T)rZ  r   can_collapsereturnvalueReturnsF)returnsrZ   )rZ  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   rg  rg  !  s$        K/4466OOOr   rg  c                   :    e Zd ZdZe                                ZdS )CMacroObjectr  Nrh  r   r   r   rm  rm  '  s$        K/4466OOOr   rm  c                       e Zd ZdZdS )CStructObjectr_   Nr   r   r   r,  r   r   r   ro  ro  -  s        KKKr   ro  c                       e Zd ZdZdS )CUnionObjectrb   Nrp  r   r   r   rr  rr  1  s        KKKr   rr  c                       e Zd ZdZdS )CEnumObjectrO   Nrp  r   r   r   rt  rt  5          KKKr   rt  c                       e Zd ZdZdS )CEnumeratorObjectr  Nrp  r   r   r   rw  rw  9  s        KKKr   rw  c                       e Zd ZdZdS )CTypeObjectr   Nrp  r   r   r   ry  ry  =  ru  r   ry  c                   J    e Zd ZU dZdZdZdZdZi Ze	e
d<   dee         fdZd	S )
CNamespaceObjectzb
    This directive is just to tell Sphinx that we're documenting stuff in
    namespace foo.
    Fr   r   Tr  rZ   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   r8  r   NULL0nullptrrA  rA  r7  c:namespace_stackr   )r   r<  	argumentsr  r_  get_locationrd  r  r  r(   rC  rD  r  rJ  r;  r   r=  )r   
rootSymbolr   stackr  r   rg  s          r   r>  zCNamespaceObject.runM  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N)r   r   r   rQ  has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer  r<   rS  r   r   r>  r   r   r   r{  r{  A  sh          
 K $ K   T$Z      r   r{  c                   F    e Zd ZU dZdZdZdZi Zee	d<   de
e         fdZdS )	CNamespacePushObjectFr   r   Tr  rZ   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}  rA  rA  r7  r   r8  r  r   )r  r  r_  r  r   rd  r  r  r(   rC  rD  r  r;  getr<  rJ  r  r   r=  )r   r  r   rg  	oldParentr   r  s          r   r>  zCNamespacePushObject.runk  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Nr   r   r   r  r  r  r  r  r<   rS  r   r   r>  r   r   r   r  r  d  s\         K $ K   T$Z      r   r  c                   F    e Zd ZU dZdZdZdZi Zee	d<   de
e         fdZdS )CNamespacePopObjectFr   Tr  rZ   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.rA  r   r   r8  r7  zcp:parent_key)r   r;  r  r   rC  rD  r  r  r<  r   r=  )r   r  r   s      r   r>  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    s\         K $ K   T$Z      r   r  c                   F     e Zd Z	 	 ddedededddeddf fd	Zdd
Z xZ	S )	AliasNodeNr  aliasOptionsr#  r   r   	parentKeyrZ   c                 8   t                                                       || _        || _        || _        |Vd|j        vr9|j        d         d         }||j        d<   |                                |j        d<   |j        d         | _	        d S |J || _	        d S )Nr7  r   r8  r   )
r  r   r  r  r#  r;  r<  r   r=  r  )r   r  r  r#  r   r  r?  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  r  r  r#  r  r   s    r   rj  zAliasNode.copy  s4    ~~dh(94="&$.  B B 	Br   r  )rZ   r  )
r   r   r   r   rE  r   r  r   rj  r\  r]  s   @r   r  r    s        :>(,' 'C 't ''%7'%'15' ' ' ' ' '"B B B B B B B Br   r  c                   b    e Zd Zej        dz
  Zdededededede	de
e         fd	Zd
e	ddfdZdS )AliasTransformr   r  maxdepthskipThisr  renderOptionsr#  rZ   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aliasr1  desctypenoindexr  r  r  r  r#  )r   desc_signaturer  r   r   r   desc_contentr  r#  r  _render_symbolr  r   )r   r  r  r  r  r  r#  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 	& &CH"/11}t$$$ (!$X5<<Y$z"2"&Y!%* 2 2%-!00X!-]% 1 ' '
 %%j1111 &DM 2 2a 7 7W%%%r   kwargsNc           	         | 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         }	|	                    |          }
|
sBt)          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 )NrA  rA  r   r   r8  Target: ParentKey: r   anyTr(  z,Could not find C declaration for alias '%s'.norootzACan not render C declaration for alias '%s'. No such declaration.r  r  )r#  findallr  r  r  r_  r   rd  r  r(   rC  rD  r   r  clearr   replace_selfdomainsr   rQ  r  r   rT  r  r  r   r  )r   r  r   r  r  r  r   rg  r   r  r  r  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 *j#&&&mY///jooa(()))--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)r   r   r   r"   default_priorityr   rV   rv   rE  r   r   r   r  r  r   r   r   r  r    s        ):Q>* *# * *%)*:>*!$*)-d* * * *X<%c <%d <% <% <% <% <% <%r   r  c                   P    e Zd ZU ej        ej        dZeed<   de	e
         fdZdS )CAliasObjectr  r  r  rZ   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.
        rI  r   r   r  r1  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.rA  )r   )r   splitr  r1  r   r  r"  r#  r   r  r  rC  rD  r  get_signaturesr  r  r   )r   r   r  r  s       r   r>  zCAliasObject.run'  sX    $)(,	Q(?(?%DK(*DI%DK}
+X-1\9Y$z*Y "
((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   N)r   r   r   r   nonnegative_intrR  r  r<   rS  r   r   r>  r   r   r   r  r  !  s]         ./ K   
T$Z      r   r  c                   |     e Zd Zdedededededeeef         fdZdee	e
         e	e         f         f fdZ xZS )		CXRefRoler   refnodehas_explicit_titletitletargetrZ   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updater=  r,   subr   r!  rfind)r   r   r  r  r  r  dots          r   process_linkzCXRefRole.process_linkJ  s    !!#/222! 	F '*=#e**EEE! 	,]]3''F QqSzS  abb	kk#&&"99!#'((OEf}r   c                    | j         j        d         r| j        r t                                                      S | j                            dd          }t          ||                                 | j         j                  }	 |	                                 t                                                      S # t          $ r:}d|_        	 |                                }n5# t          $ r( t                                                      cY cY d }~S w xY wg d}| j         j                            dd           }|| j         j        d         d	         }t!          j        |
          }|                    |d| j         |           | j         j        d         rWd}|dz  }|                    t(          j        |||          }t,                              ||                                            |gg fcY d }~S d }~ww xY w)NrB  rW  r  rA  r   )xrefr   c-texprzcpp:parent_symbolr   r8  classesr   rC  zB{}: Pre-v3 C type role ':c:type:`{}`' converted to ':c:expr:`{}`'.z#
The original parsing error was:
{}rA  )r   rd  disabledr  r>  r   replacer_  r  r  r(   rn  r  r;  r  r<  r   rU   r   r  r   r   rC  rD  )
r   r   r  rF  r  r  r  r   rH  r  s
            r   r>  zCXRefRole.run^  s   x/0 	!DM 	!77;;== y  s++!$1B1B1D1D)-: : :	!$$&&&77;;==  	! 	! 	!FJ%--//" % % %ww{{}}$$$$$$$$% /..G8-112EtLLL##x237Fl7333G""7J,OOOx9: BZ>>jj!9!BD$PUVVsT->->-@-@AAA9b=      )	!sI   3B9 9G>G9C! G9!*DG9G>DC G93G>9G>)r   r   r   r   r   rv   r   r
   r  r   r   r   r>  r\  r]  s   @r   r  r  I  s         0 7 )-69CFKPQTVYQY?   ( !U4:tN';;<  !  !  !  !  !  !  !  !  !  !r   r  c                   \     e Zd Zdeddf fdZdeee         ee         f         fdZ	 xZ
S )	CExprRoleasCoderZ   Nc                 l    t                                                       |r	d| _        d S d| _        d S )Nzc-exprr  )r  r   
class_type)r   r  r  s     r   r   zCExprRole.__init__  s9     	(&DOOO (DOOOr   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 )NrW  r  rA  zUnparseable C expression: %r
%srA  r   r  r7  r8  r   )r   r  r_  r  r   rd  r  r(   rC  rD  r   desc_inliner  r;  r  r<  r   )r   r   r  r  exr  r   s          r   r>  zCExprRole.run  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   r   r   rv   r   r
   r   r   r   r>  r\  r]  s   @r   r  r    sy        (t ( ( ( ( ( ( (U4:tN';;<        r   r  c                      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eeeeeeeeeef         f         f         f         ed<   deddfdZ de!ded e"j#        ddfd!Z$d"e%ddfd#Z&d$e'e         d%eddfd&Z(de!d'ed(e)d)ed*ed+e%d,e*dee+e*         e+e         f         fd-Z,de!d'ed(e)d)ed*ed+e%d,e*de+e*         fd.Z-de!d'ed(e)d*ed+e%d,e*de'eee*f                  fd/Z.de/eeeeeee0f                  fd0Z1dS )1CDomainzC language domain.r   ra  r  r  r   r   variabler  funcr   r  r_   rb   rO   r  zfunction parameter)
r  r  r  r  r_   rb   rO   r  r   r  )r  r  r  r  r_   rb   rO   r  r   	namespaceznamespace-pushznamespace-popr  T)
fix_parens)r  F)r  r   r  r  r  r_   rb   rO   r  r   rK  texprN)r8  objectsinitial_datar  rZ   c                    t           j        r[t          d|           t          d           t          | j        d                             d                     t          d           | j        d         }|                    |           t           j        r]t          d           t          | j        d                             d                     t          d           t          d|           d S d S )	Nz
clear_doc:z	before:r8  r   z	before endz	after:z
	after endzclear_doc end:)r   rZ  r  r   r   r	  )r   r  r  s      r   r	  zCDomain.clear_doc  s    ! 	",(((+$)M*//22333.!!!Y}-
W%%%! 	-*$)M*//22333-   "G,,,,,		- 	-r   r   r#  c                     t           j        rOt          d|           t          | j        d                             d                     t          d|           d S d S )Nzprocess_doc:r8  r   zprocess_doc end:)r   rZ  r  r   r   )r   r   r  r#  s       r   process_doczCDomain.process_doc  sa    ! 	/.'***$)M*//22333$g.....	/ 	/r   r   c                 N    |j                             | j        j                   d S r   )r  r  r   r=  )r   r   s     r   process_field_xrefzCDomain.process_field_xref  s$     455555r   r>  	otherdatac                 X   t           j        rt          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:r8  r   z		self endz	other:z
	other endzmerge_domaindata endr  )r   rZ  r  r   r   rE  r   items)r   r>  r  
ourObjectsfullnamefnr  r1  s           r   merge_domaindatazCDomain.merge_domaindata  s?   ! 	*%&&&)$)M*//22333,*)M*//22333-   ()))	- ++Im,D,4dh	@ 	@ 	@Yy)
,5i,@,F,F,H,H 	> 	>(H(r3X~~:--,.W+=Jx(	> 	>r   fromdocnamebuilderr  r  r   contnodec                    t          |||j                  }	 |                                }	n6# t          $ r)}
t                              d||
|           Y d }
~
dS d }
~
ww xY w|                    dd           }| j        d         }|r^|                    |          }|sBt          d|           t          d|           t          |
                    d	                     |sJ n|}|                    |	|d
d
          }||j        dS |j        }|	                                }|j        }|sJ t          ||||                                ||          |j        fS )NrA  z$Unparseable C cross-reference: %r
%srA  r  r   r8  r  r  r   Tr(  )r_  rd  r  r(   rC  rD  r  r   rQ  r  r   rT  r   r   r  r;   r  r  )r   r   r  r  r  r  r   r  r  r   rg  r  r  r  r  r   displayNamer  s                     r   _resolve_xref_innerzCDomain._resolve_xref_inner  s    "&4
KKK	++--DD 	 	 	NNBFA$(  * * *:::::	  $xx==	Y}-
 	&#-#;#;I#F#FL *j&)))mY///jooa(()))%L))$48 * N N9-: m--//)G[''5577; *56 	6s   . 
A!AA!c           	      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   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  retnoder1  s	            r   resolve_any_xrefzCDomain.resolve_any_xref1  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c              #     K   | j         d         }|                                D ]}|j        
|j        sJ |                                }t          |                              d          }|                                                    d          }|j        j        }|j        }|j        	                                }|||||dfV  d S )Nr8  r   r   )
r   r  r   r  r  r   r!  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   )2r   r   r   rQ  r   rZ  r   r   object_typesrU  rg  rm  ro  rr  rt  rw  ry  r{  r  r  r  r   r  r  rolesr   r  r   r   r   r
   rS  r	  r   r   r#  r  r   r  r   r  r   r   r	   r  r  r  r   rV   r  r   r   r   r  r    sp        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;;O OL$sE&$sE#sC-4H/H*I"IJJK   
- - - - - - // /# /#n/15/ / / /6 6 6 6 6 6>c >t > > > > >(#6'7 #6c #6T[ #6!$#6.1#69E#6&-#6278I8TW=8X2Y#6 #6 #6 #6JC 0 Cs CW CC'*C2>C&C+3G+<C C C C$4 3 QX !$,8DK"5g#67   EXeCc3S,H&IJ E E E E E Er   r  appc                 h   |                      t                     |                     dg d           |                     dg d           |                     dt          d           |                     t
                     |                     ddd           |                     ddd           d	d
dddS )Nre  r   rh  r  rB  FrC  Tbuiltinr#  )r   env_versionparallel_read_safeparallel_write_safe)
add_domainr  add_config_value_macroKeywordsadd_post_transformr  )r  s    r   setupr  J  s    NN7*B666-r5999+^UCCC>***)5%8883T5AAA "#	  r   )rQ  retypingr   r   r   r   r   r   r	   r
   r   r   r   docutilsr   docutils.nodesr   r   r   r   docutils.parsers.rstr   sphinxr   sphinx.addnodesr   sphinx.applicationr   sphinx.buildersr   sphinx.deprecationr   sphinx.directivesr   sphinx.domainsr   r   sphinx.environmentr   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/   r0   r1   r2   r3   r4   r5   r6   sphinx.util.docfieldsr7   r8   r9   sphinx.util.docutilsr:   sphinx.util.nodesr;   sphinx.util.typingr<   	getLoggerr   rC  r=   r  r  r
  r  r  r  r  r  compileSr  r  r   r   r   r   r   r  r  r  r  r-  r8  r>  rH  rW  rY  rc  rl  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r-  r3  rB  rK  rY  r[  r\  rv  rB   rC   r  rD   r>   r?   r@   rA   r   r  r  r   r_  r  r  rU  ri  rg  rm  ro  rr  rt  rw  ry  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 + + + + + +       ( ( ( ( ( ( % % % % % % # # # # # # 7 7 7 7 7 7 / / / / / / * * * * * * * * / / / / / /         - - - - - - - - - - - - - - @ @ @ @ @ @      L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L B A A A A A A A A A 0 0 0 0 0 0 * * * * * * ) ) ) ) ) )		8	$	$GCLL.  	   
4L	5M'N%L(O	4L#JOO	5M  SRR [ [ [  !!!
 RZ 89;? ?
 (RZ )   &N N N N NI N N N. . . . .k . . .,C ,C ,C ,C ,CK ,C ,C ,C^JC JC JC JC JCG JC JC JCb	 	 	 	 	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003 03 03 03 03G 03 03 03f>% >% >% >% >% >% >% >%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>WD WD WD WD WD[ WD WD WDt       6 6 6 6 6 6 6 6z	 z	 z	 z	 z	 z	 z	 z	zU U U U Uz U U UpO O O O OC C C C C/ C C CL    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.k% k% k% k% k%_ k% k% k%\% % % % %$ % % %P5! 5! 5! 5! 5! 5! 5! 5!p    
   @fE fE fE fE fEf fE fE fERv $sCx.      r   