o ua\ @sbdZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z ddlmZddlmZmZmZmZddlmZddlmZddlmZdd lmZdd lmZdd lm Z dd l!m"Z"dd l#m$Z$m%Z%ddl&m'Z'ddl(m)Z)m*Z*ddl+m,Z,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGddlHmIZImJZJmKZKddlLmMZMddlNmOZOddlPmQZQe3ReSZTe dZUe dZVgdZWgdZXddgdd gd!d"gd#d$gd%d&ggd'gd(d)d*gd+d,ggd-d.d/gg ZYgd0ZZgd1Z[d2Z\gd3Z]e^d4ej_Z`e^d5ZaGd6d7d7ebZcGd8d9d9e6ZdGd:d;d;e6ZeGdd?d?edZgGd@dAdAegZhGdBdCdCehZiGdDdEdEehZjGdFdGdGehZkGdHdIdIehZlGdJdKdKegZmGdLdMdMegZnGdNdOdOedZoGdPdQdQeoZpGdRdSdSeoZqGdTdUdUeoZrGdVdWdWeoZsGdXdYdYeoZtGdZd[d[egZuGd\d]d]egZvGd^d_d_egZwGd`dadaegZxGdbdcdcegZyGdddedeegZzGdfdgdgedZ{GdhdidiegZ|GdjdkdkegZ}GdldmdmedZ~Gdndodoe~ZGdpdqdqe~ZGdrdsdsedZGdtduduedZGdvdwdwe6ZGdxdydyedZGdzd{d{edZGd|d}d}edZGd~ddeZGdddeZGdddeZGdddeZGddde7ZGdddedZGdddedZGdddedZGdddedZGdddedZGdddedZGdddedZGdddedZGdddedZGdddedZGddde6ZGdddZGdddZGdddZGddde8ZdeffddZGddde"eZGdddeZeKde)dddddeJde)ddddeIde)ddddeIde)ddddgZGdddeZGddÄdeZGddńdeZGddDŽdeZGddɄdeZGdd˄deZGdd̈́deZGddτdeMZGddфdeMZGddӄdeMZGddՄdejZGddׄde/ZGddلde"ZGddۄde-ZGdd݄de,ZGdd߄de$ZdedeeeffddZdS)z sphinx.domains.c ~~~~~~~~~~~~~~~~ The C language domain. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. N) AnyCallableDict GeneratorIteratorListOptionalTupleTypeVarUnioncast)nodes)ElementNode TextElementsystem_message) directives)addnodes) pending_xref)Sphinx)Builder)RemovedInSphinx50Warning)ObjectDescription)DomainObjType)BuildEnvironment)___) SphinxRoleXRefRole)SphinxTransform)ReferencesResolver)logging) ASTAttribute ASTBaseBaseASTBaseParenExprList BaseParserDefinitionError NoOldIdErrorStringifyTransform$UnsupportedMultiCharacterCharLiteralanon_identifier_rebinary_literal_rechar_literal_refloat_literal_refloat_literal_suffix_rehex_literal_re identifier_reinteger_literal_reintegers_literal_suffix_reoctal_literal_reverify_description_mode)Field GroupedField TypedField)SphinxDirective) make_refnode) OptionSpecT) ASTStructASTUnionASTEnum ASTEnumeratorASTTypeASTTypeWithInitASTMacro)/autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifinlineintlongregisterrestrictreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile_Alignas_Alignof_Atomic_Bool_Complex _Decimal32 _Decimal64 _Decimal128_Generic _Imaginary _Noreturn_Static_assert _Thread_local)alignasalignofboolcomplex imaginarynoreturn static_assert thread_localz||orz&&and|bitor^xor&bitand)z==z!=not_eq)z<=z>=<>z<>+-)*/%z.*z->*) ++--rrrr!not~compl)=z*=z/=z%=z+=z-=z>>=z<<=z&=and_eqz^=xor_eqz|=or_eq)Nc.zCv2.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@s$eZdZd ddZdefd d ZdS) _DuplicateSymbolErrorsymbolSymbol declarationASTDeclarationrYNcC |sJ|sJ||_||_dSN)rr)selfrrr2/usr/lib/python3/dist-packages/sphinx/domains/c.py__init__t z_DuplicateSymbolError.__init__cCsd|jdS)Nz%Internal C duplicate symbol error: %sr)rdumprrrr__str__zz_DuplicateSymbolError.__str__)rrrrrYN)__name__ __module__ __qualname__rstrrrrrrrss rc @s*eZdZdededdddddf d d ZdS) ASTBasesignodemodeenvrrrrYNcC tt|rNotImplementedErrorreprrrrrrrrrdescribe_signature zASTBase.describe_signature)rrrrrrrrrrr~s rc @s|eZdZdeddfddZdedefddZdefd d Zdefd d Z defd dZ de dedddeddddf ddZ dS) ASTIdentifier identifierrYNcCs&|dusJt|dksJ||_dSNr)lenr)rrrrrrs  zASTIdentifier.__init__othercCst|tuo |j|jkSr)typerrrrrrr__eq__szASTIdentifier.__eq__cCs|jddkS)Nr@rrrrris_anonzASTIdentifier.is_anoncC|jSrrrrrrrzASTIdentifier.__str__cCs|rdS|jS)N [anonymous])rrrrrrget_display_stringz ASTIdentifier.get_display_stringrrrrprefixrrc Cst||rtjdd}nt|j|j}|dkr;||j}tjddd|ddd}||d<||7}||7}dS|d krMt} | |7} || 7}dS|d krW||7}dStd |) Nr)textmarkTypecr) refdomainreftype reftargetmodname classname c:parent_key lastIsName noneIsNameUnknown description mode: %s) r5rr desc_sig_namerrget_lookup_key desc_name Exception) rrrrrrnode targetTextpnodenameNoderrrrs*      z ASTIdentifier.describe_signature) rrrrrrrurrrrrrrrrrrsrc @sveZdZdeededdfddZedddZd e de fd d Z d e de fd dZ dede ddddddf ddZdS) ASTNestedNamenamesrootedrYNcCs t|dksJ||_||_dSr)rrr)rrrrrrrs zASTNestedName.__init__cCs|SrrrrrrnamezASTNestedName.nameversioncCsddd|jDS)N.css|]}t|VqdSr)r.0nrrr z'ASTNestedName.get_id..joinrrrrrrget_idszASTNestedName.get_id transformcs,dfdd|jD}|jrd|S|S)Nrc3|]}|VqdSrrrrrrrrz+ASTNestedName._stringify..)rrrrrresrrr _stringifyszASTNestedName._stringifyrrrrrrc Cst||dkr1|jrJdtt|jD]}|dkr Jd|j|}||||d|qdS|dkrU|jr>Jt|t|jdksGJ|jd|d|d|dS|d ksa|d ksa|d krd}d }|d krp|jdd n|j} |} |d kr}t } |jr|d7}|d krt| dkr|t dd7}n| t dd7} tt| D]+}| |} |s| t dd7} |d7}d}t| } | dkr| | d ||||| 7}q|d krt|jdkr| t dd7} || 7}|jd |||d|dSdSt d|)NrFzCan this happen?rrrparamrrrmarkNameTr) r5rr Textrangerrrrr desc_addnamedesc_sig_punctuationr) rrrrrirrfirstrdestident txt_identrrrrsV   z ASTNestedName.describe_signature)rYr)rrrrrrurpropertyrrUrrr)rrrrrrrrs  rc@ eZdZdS) ASTExpressionNrrrrrrrrrc@r) ASTLiteralNrrrrrrrrc @NeZdZdeddfddZdedefddZd ed ed d d dddf ddZ dS)ASTBooleanLiteralvaluerYNcC ||_dSrr)rrrrrr zASTBooleanLiteral.__init__rcCs|jrdSdS)Ntruefalser rrrrrrszASTBooleanLiteral._stringifyrrrrrrcCt|}|t||7}dSr)rrdesc_sig_keywordrrrrrtxtrrrrz$ASTBooleanLiteral.describe_signature) rrrrurr)rrrrrrrrrs rc @NeZdZdeddfddZdedefddZd ed ed d d dddf ddZdS)ASTNumberLiteraldatarYNcCrrrrrrrrr#r zASTNumberLiteral.__init__rcCrrrr rrrr&rzASTNumberLiteral._stringifyrrrrrrcCrr)rrdesc_sig_literal_numberrrrrr)rz#ASTNumberLiteral.describe_signature rrrrrr)rrrrrrrr" rc @sReZdZdededdfddZdedefdd Zd ed ed d ddddf ddZdS)ASTCharLiteralrrrYNcCs<||_||_|d}t|dkrt||_dSt|)Nzunicode-escaper)rrencodedecoderordrr*)rrrdecodedrrrr0s  zASTCharLiteral.__init__rcCs,|jdur d|jdS|jd|jdS)N')rrr rrrr9s zASTCharLiteral._stringifyrrrrrrcCrr)rrdesc_sig_literal_charrrrrr?rz!ASTCharLiteral.describe_signaturerrrrrr/s rc @r)ASTStringLiteralrrYNcCrrrrrrrrFr zASTStringLiteral.__init__rcCrrrr rrrrIrzASTStringLiteral._stringifyrrrrrrcCrr)rrdesc_sig_literal_stringrrrrrLrz#ASTStringLiteral.describe_signaturerrrrrr"Err"c @s\eZdZdefddZdedefddZdedefd d Z d e d ed dddddf ddZ dS)ASTIdExpressionrcCrrrrrrrrrSs zASTIdExpression.__init__rrYcC ||jSrr%r rrrrWr zASTIdExpression._stringifyrcC |j|Sr)rrrrrrrZ zASTIdExpression.get_idrrrrrrNcC|j||||dSr)rrrrrrr]z"ASTIdExpression.describe_signature) rrrrrr)rrrUrrrrrrrr$Rs r$c @sVeZdZddZdedefddZdedefdd Zd e d ed d ddddf ddZ dS) ASTParenExprcCrrexprrr.rrrrcr zASTParenExpr.__init__rrYcCd||jdSN()r-r rrrrfrzASTParenExpr._stringifyrcCr(r)r.rrrrrrir)zASTParenExpr.get_idrrrrrrNcC6|tdd7}|j|||||tdd7}dSr1rrr.rrrrrrlzASTParenExpr.describe_signature) rrrrr)rrrUrrrrrrrr,bs r,c@r) ASTPostfixOpNrrrrrr7vrr7c @sReZdZdedddfddZdedefdd Zd ed ed d ddddf ddZ dS)ASTPostfixCallExprlst)ASTParenExprListASTBracedInitListrYNcCrrr9)rr9rrrr{r zASTPostfixCallExpr.__init__rcCr'rr<r rrrr~r zASTPostfixCallExpr._stringifyrrrrrrcCr*r)r9rrrrrrr+z%ASTPostfixCallExpr.describe_signature) rrrr rr)rrrrrrrrr8zs r8c @r)ASTPostfixArrayr.rYNcCrrr-r/rrrrr zASTPostfixArray.__init__rcCr0N[]r-r rrrrrzASTPostfixArray._stringifyrrrrrrcCr4r>r5rrrrrr6z"ASTPostfixArray.describe_signature rrrrrr)rrrrrrrrr=rr=c @<eZdZdedefddZdededdd d dd f d d Zd S) ASTPostfixIncrrYcCdSNrrr rrrrzASTPostfixInc._stringifyrrrrrrNcC|tdd7}dSrErdesc_sig_operatorrrrrrz ASTPostfixInc.describe_signaturerrrr)rrrrrrrrrC rCc @rB) ASTPostfixDecrrYcCrDNrrr rrrrrFzASTPostfixDec._stringifyrrrrrrNcCrGrNrHrrrrrrJz ASTPostfixDec.describe_signaturerKrrrrrMrLrMc @DeZdZddZdedefddZdeded d d d dd f ddZd S)ASTPostfixMemberOfPointercCrrr%r&rrrrr z"ASTPostfixMemberOfPointer.__init__rrYcCd||jS)N->r%r rrrrrz$ASTPostfixMemberOfPointer._stringifyrrrrrrNcCs&|tdd7}|j|d||dS)NrRr)rrIrrrrrrrsz,ASTPostfixMemberOfPointer.describe_signature rrrrr)rrrrrrrrrP rPc @sReZdZdedeefddZdedefddZ d e d ed d d dddf ddZ dS)ASTPostfixExprr postFixescC||_||_dSr)rrV)rrrVrrrr zASTPostfixExpr.__init__rrYcCs0||jg}|jD] }|||q d|SNr)rrVappendr)rrrprrrrs   zASTPostfixExpr._stringifyrrrrrrNcCs2|j|||||jD] }|||||q dSr)rrrV)rrrrrr[rrrrs z!ASTPostfixExpr.describe_signature) rrrrrr7rr)rrrrrrrrrUs rUc @sNeZdZdedefddZdedefddZd ed ed d d dddf ddZ dS)ASTUnaryOpExpropr.cCrWrr]r.)rr]r.rrrrrXzASTUnaryOpExpr.__init__rrYcCs2|jddvr|jd||jS|j||jS)Nrcn r^r rrrrszASTUnaryOpExpr._stringifyrrrrrrNcCsZ|jddvr|t|j|j7}|t7}n |t|j|j7}|j||||dS)Nrr_)r]rrdesc_sig_spacerIr.rrrrrrs z!ASTUnaryOpExpr.describe_signature) rrrrrrr)rrrrrrrr\s r\c @rO) ASTSizeofTypecCrrtyprrdrrrrr zASTSizeofType.__init__rrYcCr0)Nzsizeof(r3rcr rrrrrzASTSizeofType._stringifyrrrrrrNcCF|tdd7}|tdd7}|j|||||tdd7}dS)Nr\r2r3rrrrdrrrrrrz ASTSizeofType.describe_signaturerSrrrrrbrTrbc @sJeZdZdefddZdedefddZded ed d d d ddf ddZ dS) ASTSizeofExprr.cCrrr-r/rrrrr zASTSizeofExpr.__init__rrYcCrQ)Nzsizeof r-r rrrrrzASTSizeofExpr._stringifyrrrrrrNcCs2|tdd7}|t7}|j||||dS)Nr\)rrrar.rrrrrrs z ASTSizeofExpr.describe_signaturerArrrrris ric @sFeZdZdddZdedefddZd ed ed d d dddf ddZdS)ASTAlignofExprrdrAcCrrrcrerrrrr zASTAlignofExpr.__init__rrYcCr0)Nzalignof(r3rcr rrrrrzASTAlignofExpr._stringifyrrrrrrNcCrf)Nrtr2r3rgrrrrrrhz!ASTAlignofExpr.describe_signature)rdrArSrrrrrjs  rjc @sNeZdZdddefddZdedefdd Zd ed ed d ddddf ddZ dS) ASTCastExprrdrAr.cCrWr)rdr.)rrdr.rrrr rXzASTCastExpr.__init__rrYcC:dg}|||j|d|||jd|SNr2r3r)rZrdr.rrrrrr   zASTCastExpr._stringifyrrrrrrNcCsH|tdd7}|j|||||tdd7}|j||||dSr1)rrrdrr.rrrrrszASTCastExpr.describe_signaturerArrrrrk s rkc @VeZdZdeedeefddZdedefddZd e d ed d d dddf ddZ dS) ASTBinOpExprexprsopscC8t|dksJt|t|dksJ||_||_dSNrrrrqrrrrqrrrrrr! zASTBinOpExpr.__init__rrYcCtg}|||jdtdt|jD] }|d||j|d|d|||j|qd|SNrrr`rrZrqrrrrrrrrrrrrr'   zASTBinOpExpr._stringifyrrrrrrNcC|jd||||tdt|jD]E}|t7}|j|d}t|dtdkr?t|dtdkr?|t||7}n|t ||7}|t7}|j|||||qdSNrraz rqrrrrrarrrrrIrrrrrrr]rrrr1 ( zASTBinOpExpr.describe_signature rrrrrrrr)rrrrrrrrp  rpc @ro)ASTAssignmentExprrqrrcCrsrtrurvrrrr@rwzASTAssignmentExpr.__init__rrYcCrxryrzr{rrrrFr|zASTAssignmentExpr._stringifyrrrrrrNcCr}r~rrrrrrPrz$ASTAssignmentExpr.describe_signaturerrrrrr?rrc @s\eZdZdefddZdedefddZdedefd d Zd e d ed dddddf ddZ dS)ASTFallbackExprr.cCrrr-r/rrrr_r zASTFallbackExpr.__init__rrYcCrrr-r rrrrbrzASTFallbackExpr._stringifyrcCs t|jSr)rr.rrrrrer zASTFallbackExpr.get_idrrrrrrNcCs|t|j|j7}dSr)r literalr.rrrrrhsz"ASTFallbackExpr.describe_signature) rrrrrr)rrUrrrrrrrr^s rc@r)ASTTrailingTypeSpecNrrrrrrqrrc @sReZdZdeeddfddZdedefddZd ed ed d d dddf ddZ dS)ASTTrailingTypeSpecFundamentalrrYNcCst|dksJ||_dSr)rr)rrrrrrvs z'ASTTrailingTypeSpecFundamental.__init__rcCs d|jS)Nr`rr rrrrzr)z)ASTTrailingTypeSpecFundamental._stringifyrrrrrrcCs:d}|jD]}|s|t7}nd}|t||7}qdS)NTF)rrradesc_sig_keyword_type)rrrrrrrrrrr}s z1ASTTrailingTypeSpecFundamental.describe_signature) rrrrrrr)rrrrrrrrus rc @sdeZdZdededdfddZedefddZd edefd d Z d e d eddddddf ddZ dS)ASTTrailingTypeSpecNamer nestedNamerYNcCrWr)rr)rrrrrrrrXz ASTTrailingTypeSpecName.__init__cCrr)rrrrrrzASTTrailingTypeSpecName.namercCs:g}|jr||j|d|||jd|S)Nr`r)rrZrrrrrrrs    z"ASTTrailingTypeSpecName._stringifyrrrrrrcCs>|jr|t|j|j7}|t7}|jj||||ddSNr)rrrrarrrrrrrs z*ASTTrailingTypeSpecName.describe_signature) rrrrrrrrr)rrrrrrrrs rc @sneZdZddddeddfddZd ed ed d defd dZdedefddZ de deddd d ddf ddZ dS)ASTFunctionParameterFargrBellipsisrYNcCrWr)rr)rrrrrrrrXzASTFunctionParameter.__init__r objectTyperrcCs|jjj|ddS)NF)prefixed)parentrrrrrrrrrrszASTFunctionParameter.get_idrcCs|jrdS||jSN...)rrr rrrrs zASTFunctionParameter._stringifyrrrrcCs:t||jr|tdd7}dS|jj||||ddSNrr)r5rrrrrrrrrrsz'ASTFunctionParameter.describe_signatureF) rrrrurrUrrr)rrrrrrrrs rc @speZdZdeedeeddfddZedeefddZd e de fd d Z d e d e ddddddf ddZ dS) ASTParametersargsattrsrYNcCrWr)rr)rrrrrrrrXzASTParameters.__init__cCrrrrrrrfunction_paramsrzASTParameters.function_paramsrcCsvg}|dd}|jD]}|s|dd}|t|q |d|jD]}|d|||q'd|S)Nr2T, Fr3r`r)rZrrrr)rrrrrattrrrrrs       zASTParameters._stringifyrrrrrrc Cst||dkr,t}|jD]}tjdddd}|j|d||d||7}q||7}n3|tdd7}d}|jD]}|sK|tdd7}|t7}d }|j|d ||dq9|td d 7}|jD] } |t7}| |qbdS) NrrTnoemphrrr2,Frr3) r5rdesc_parameterlistrdesc_parameterrrrar) rrrrr paramlistrrrrrrrrs*        z ASTParameters.describe_signature)rrrrrr#rrrr)rrrrrrrrrs rc@sleZdZdededededededeedd fd d Zdd dZde defddZ dee dd fddZ d S)ASTDeclSpecsSimplestorage threadLocalrTrXrdrHrrYNcCs.||_||_||_||_||_||_||_dSr)rrrTrXrdrHr)rrrrTrXrdrHrrrrrs zASTDeclSpecsSimple.__init__rc CsT|s|St|jp |j|jp|j|jp|j|jp|j|jp|j|jp#|j|j|jSr)rrrrTrdrHrXrrrrr mergeWiths       zASTDeclSpecsSimple.mergeWithrcsg}|fdd|jD|jr||j|jr!||j|jr)|d|jr1|d|jr9|d|jrA|dd |S)Nc3rrr)rrrrrrrz0ASTDeclSpecsSimple._stringify..rTrXrdrHr`) extendrrrZrrTrXrdrHrrrrrrs       zASTDeclSpecsSimple._stringify modifierscCsdttdtddfdd}|jD]}t|dkr|t|||q|j r1|||j |j r:|||j |j rB||d|j rJ||d|j rR||d |jr\||d dSdS) NrrrYcSs0t|dkr |t|t||dSr)rrZrrar)rrrrr_adds z3ASTDeclSpecsSimple.describe_signature.._addrrTrXrdrH)rrrrrrZrrarrrrTrXrdrH)rrrrrrrrs$       z%ASTDeclSpecsSimple.describe_signature)rrrYr) rrrrrurrrrr)rrrrrrrrs  rc @sZeZdZdededededdf ddZd edefd d Zd e d eddddddf ddZ dS) ASTDeclSpecsouter leftSpecs rightSpecstrailingrYNcCs,||_||_||_|j|j|_||_dSr)rrrrallSpecstrailingTypeSpec)rrrrrrrrr,s  zASTDeclSpecs.__init__rcCsg}||j}t|dkr|||jrCt|dkr |d|||jt|j}t|dkrCt|dkr>|d||d|SNrr`r)rrrZrrrr)rrrlrrrrr8s           zASTDeclSpecs._stringifyrrrrrrcCst|g}|j||D]}||7}q|jrKt|dkr$|t7}|jj||||dg}|j|t|dkrB|t7}|D]}||7}qDdSdS)Nrr)r5rrrrrrar)rrrrrrmrrrrHs&          zASTDeclSpecs.describe_signature) rrrrrrrr)rrrrrrrr+s$  rc @s^eZdZdedededededef ddZd ed efd d Zd e deddddd df ddZ dS)ASTArrayr]rHrdrXvlasizecCsL||_||_||_||_||_||_|r|dusJ|dur"|r$JdSdSr)r]rHrdrXrr)rr]rHrdrXrrrrrrbs zASTArray.__init__rrYcCsg}|jr |d|jr|d|jr|d|jr"|d|jr.dd|dS|jr9|||jdd|dS) Nr]rXrdrHr?r`z*]r@)r]rZrXrdrHrrr)rrelrrrros    zASTArray._stringifyrrrrrrNcst||tdd7}ddtdtdtffdd }|jr#||d|jr+||d |jr3||d |j r;||d |j rG|td d 7}n|j r[rR|t 7}|j |d |||tdd7}dS)Nr?FrrrYcs$r|t7}|t||7}dSNT)rrarrraddSpacerrrs z)ASTArray.describe_signature.._addr]rXrdrHrrr@)r5rrrrrur]rXrdrHrrrar)rrrrrrrrrrs&     zASTArray.describe_signature) rrrrurrr)rrrrrrrrras  rc@sBeZdZedefddZedeefddZde fddZ dS) ASTDeclaratorrYcCrrrrrrrrrzASTDeclarator.namecCrrrrrrrrrzASTDeclarator.function_paramscCrrrrrrrrequire_space_after_declSpecsr)z+ASTDeclarator.require_space_after_declSpecsN) rrrrrrrrrrurrrrrrs rc @seZdZdedeededdfddZedefdd Z edee fd d Z de fd d Z dedefddZdededdddddf ddZdS)ASTDeclaratorNameParamdeclIdarrayOpsrrYNcC||_||_||_dSrrrr)rrrrrrrr zASTDeclaratorNameParam.__init__cCrrrrrrrrrzASTDeclaratorNameParam.namecC|jjSr)rrrrrrrz&ASTDeclaratorNameParam.function_paramscC |jduSrrrrrrrr z4ASTDeclaratorNameParam.require_space_after_declSpecsrcCsTg}|jr |||j|jD] }|||q|jr%|||jd|SrY)rrZrrr)rrrr]rrrrs  z!ASTDeclaratorNameParam._stringifyrrrrrrcCs\t||jr|j|||||jD] }|||||q|jr,|j||||dSdSr)r5rrrr)rrrrrr]rrrrs z)ASTDeclaratorNameParam.describe_signature)rrrrrrrrrrrrrurr)rrrrrrrrrs*  rc @sneZdZdedefddZedefddZdefdd Z d e de fd d Z d e de ddddddf ddZdS)ASTDeclaratorNameBitFieldrrcCrWrrr)rrrrrrrrXz"ASTDeclaratorNameBitField.__init__rYcCrrrrrrrrrzASTDeclaratorNameBitField.namecCrrrrrrrrr z7ASTDeclaratorNameBitField.require_space_after_declSpecsrcCs>g}|jr |||j|d|||jd|S)Nz : r)rrZrrrrrrrs   z$ASTDeclaratorNameBitField._stringifyrrrrrrNcCs^t||jr|j|||||t7}|tdd7}|t7}|j||||dS)N:)r5rrrrarrrrrrrs  z,ASTDeclaratorNameBitField.describe_signature)rrrrrrrrrurr)rrrrrrrrrs rc @seZdZdedededededdf dd Zedefd d Z ede e fd d Z defddZ dedefddZdededdddddf ddZdS)ASTDeclaratorPtrnextrXrdrHrrYNcCs*|sJ||_||_||_||_||_dSrrrXrdrHr)rrrXrdrHrrrrrs  zASTDeclaratorPtr.__init__cCrr)rrrrrrrrzASTDeclaratorPtr.namecCrr)rrrrrrrrz ASTDeclaratorPtr.function_paramscCs*|jp|jp|jpt|jdkp|jSr)rHrdrXrrrrrrrrrs  z.ASTDeclaratorPtr.require_space_after_declSpecsrcCsdg}|jD] }|||qt|jdkr%|js |js |jr%|d|jr-|d|jr=|jr8|d|d|jrP|jsF|jrK|d|d|js`|js`|js`t|jdkrj|jrj|d|||jd|S)Nrrr`rXrdrHr) rrZrrXrdrHrrr)rrrrrrrr s(             zASTDeclaratorPtr._stringifyrrrrrrcCst||tdd7}|jD]}||qt|jdkr-|js'|js'|jr-|t 7}dt dt ddfdd}|jr@||d|jrQ|jrL|t 7}||d |jre|jsZ|jr`|t 7}||d |jsu|jsu|jsut|jdkr|j r|t 7}|j ||||dS) NrrrrrYcSs|t||7}dSr)rrrrrr _add_anno)z6ASTDeclaratorPtr.describe_signature.._add_annorXrdrH)r5rrrrrrXrdrHrarrrr)rrrrrrrrrrr s*             z#ASTDeclaratorPtr.describe_signature)rrrrrurrrrrrrrrr)rrrrrrrrrs&   rc @seZdZdededdfddZedefddZedee fd d Z de fd d Z d e defddZdededdddddf ddZdS)ASTDeclaratorPareninnerrrYNcCrrrr)rrrrrrr=rzASTDeclaratorParen.__init__cCrr)rrrrrrrDrzASTDeclaratorParen.namecCrr)rrrrrrrHrz"ASTDeclaratorParen.function_paramscCrDrrrrrrrLrFz0ASTDeclaratorParen.require_space_after_declSpecsrcCrlrm)rZrrrrrrrrOrnzASTDeclaratorParen._stringifyrrrrrrcCsPt||tdd7}|j|||||tdd7}|j|d||dS)Nr2r3r)r5rrrrrrrrrrVs z%ASTDeclaratorParen.describe_signature)rrrrrrrrrrrrurr)rrrrrrrrr<s rc @sReZdZdeeddfddZdedefddZd e d ed d d dddf ddZ dS)r:rqrYNcCrr)rq)rrqrrrrcr zASTParenExprList.__init__rcs"fdd|jD}dd|S)Ncg|]}|qSrrrerrr gz/ASTParenExprList._stringify..z(%s)r)rqr)rrrqrrrrfszASTParenExprList._stringifyrrrrrrcCsrt||tdd7}d}|jD]}|s$|tdd7}|t7}nd}|||||q|tdd7}dS)Nr2TrFr3)r5rrrqrarrrrrrrrrrrrjs z#ASTParenExprList.describe_signature) rrrrrrr)rrrrrrrrr:bs r:c @sVeZdZdeededdfddZdedefdd Z d e d ed d ddddf ddZ dS)r;rq trailingCommarYNcCrWr)rqrrrqrrrrrzrXzASTBracedInitList.__init__rcs4fdd|jD}|jrdnd}dd||fS)Ncrrrrrrrrrz0ASTBracedInitList._stringify..rrz{%s%s}r)rqrr)rrrqrrrrr~szASTBracedInitList._stringifyrrrrrrcCst||tdd7}d}|jD]}|s$|tdd7}|t7}nd}|||||q|jr:|tdd7}|tdd7}dS)N{TrF})r5rrrqrarrrrrrrs z$ASTBracedInitList.describe_signature) rrrrrrurr)rrrrrrrrr;ys r;c @s^eZdZ ddeeefdeddfddZdede fd d Z d e d e d dddddf ddZ dS)ASTInitializerTr hasAssignrYNcCrWrrr)rrrrrrrs zASTInitializer.__init__rcCs||j}|jr d|S|S)Nz = r)rrvalrrrrs zASTInitializer._stringifyrrrrrrcCsLt||jr|t7}|tdd7}|t7}|j|d||dS)Nrr)r5rrrarrrrrrrrs   z!ASTInitializer.describe_signatureT) rrrr r;rrurr)rrrrrrrrrs  rc @seZdZdededdfddZedefddZd e d e d d de fd dZ ede e fddZdede fddZde fddZdede ddd d ddf ddZdS)rA declSpecsdeclrYNcCrr)rr)rrrrrrrrzASTType.__init__cCrr)rrrrrrrrz ASTType.namerrrrcC||Srget_full_nested_namerrrrrrrzASTType.get_idcCrr)rrrrrrrrzASTType.function_paramsrcCsRg}||j}|||jrt|dkr|d|||jd|Sr)rrZrrrr)rrrrrrrrs    zASTType._stringifycCs|jjrdSdS)Nr`r)rrrrrrget_type_declaration_prefixsz#ASTType.get_type_declaration_prefixrrrrcCsdt||j|d|||jr!tt|jdkr!|t7}|dkr'd}|j||||dS)Nrrr) r5rrrrrrrrarrrrrs  zASTType.describe_signature)rrrrrrrrrrUrrrrrr)rrrrrrrrrAs  rAc @s~eZdZdededdfddZedefddZd e d e d d de fd dZ de de fddZ dede ddd d ddf ddZdS)rBrinitrYNcCrWr)rr)rrrrrrrrXzASTTypeWithInit.__init__cCrr)rrrrrrrrzASTTypeWithInit.namerrrrcCs|j|||Sr)rrrrrrrrzASTTypeWithInit.get_idrcC4g}|||j|jr|||jd|SrY)rZrrrrrrrr  zASTTypeWithInit._stringifyrrrrcCs:t||j|||||jr|j||||dSdSr)r5rrrrrrrr z"ASTTypeWithInit.describe_signature)rrrrArrrrrrUrrr)rrrrrrrrBs rBc @s\eZdZ  ddedededdfddZd edefd d Zd e d eddddddf ddZ dS)ASTMacroParameterFrrvariadicrYNcCrr)rrr)rrrrrrrrrzASTMacroParameter.__init__rcCs(|jrdS|jr||jdS||jSr)rrrr rrrrs  zASTMacroParameter._stringifyrrrrrrcCs\t||jr|tdd7}dS|jr"t|}|t||7}dS|jj||||ddSr) r5rrrrrrrr)rrrrrrrrrrsz$ASTMacroParameter.describe_signature)FF) rrrrrurr)rrrrrrrrrs    rc @seZdZdedeeddfddZedefddZd e d e d d de fd dZ de de fddZ dede ddd d ddf ddZdS)rCrrrYNcCrWr)rr)rrrrrrrrXzASTMacro.__init__cCrr)rrrrrrrz ASTMacro.namerrrrcCrrrrrrrrrzASTMacro.get_idrcCslg}|||j|jdur1|dd}|jD]}|s"|dd}|||q|dd|S)Nr2TrFr3r)rZrrr)rrrrrrrrrs      zASTMacro._stringifyrrrrcCsrt||j|||||jdurdSt}|jD]}tjdddd}|j|d||d||7}q||7}dS)NrTrrr)r5rrrrrr)rrrrrrrrrrrr*s    zASTMacro.describe_signature)rrrrrrrrrrUrrr)rrrrrrrrCs rCc @heZdZdeddfddZdededd defd d Zd edefd dZ de dedddd ddf ddZ dS)r=rrYNcCrrr%r&rrrr9r zASTStruct.__init__rrrrcCrrrrrrrr<rzASTStruct.get_idrcCr'rr%r rrrr?r zASTStruct._stringifyrrrrcC t||jj||||ddSrr5rrrrrrrBzASTStruct.describe_signature rrrrrrUrrr)rrrrrrrr=8 r=c @r)r>rrYNcCrrr%r&rrrrIr zASTUnion.__init__rrrrcCrrrrrrrrLrzASTUnion.get_idrcCr'rr%r rrrrOr zASTUnion._stringifyrrrrcCrrrrrrrrRrzASTUnion.describe_signaturerrrrrr>Hrr>c @r)r?rrYNcCrrr%r&rrrrYr zASTEnum.__init__rrrrcCrrrrrrrr\rzASTEnum.get_idrcCr'rr%r rrrr_r zASTEnum._stringifyrrrrcCrrrrrrrrbrzASTEnum.describe_signaturerrrrrr?Xrr?c @sleZdZdededdfddZdeded d defd d Zd e defddZ de deddd d ddf ddZ dS)r@rrrYNcCrWr)rr)rrrrrrrirXzASTEnumerator.__init__rrrrcCrrrrrrrrmrzASTEnumerator.get_idrcCrrY)rZrrrrrrrrprzASTEnumerator._stringifyrrrrcCs:t||j|||||jr|j|d||dSdS)Nr)r5rrrrrrrrwrz ASTEnumerator.describe_signature) rrrrrrrUrrr)rrrrrrrr@hs r@c @seZdZ d!dededeeefdeddf dd Zd"d d Z e de fd d Z e de efddZd#dededefddZdefddZdedefddZdededddeddf dd ZdS)$rFr directiveTyper semicolonrYNcCs(||_||_||_||_d|_d|_dSr)rrrrrenumeratorScopedSymbolrrrrrrrrrs  zASTDeclaration.__init__cCst|j|j|j|jSr)rrrrclonerrrrrrs  zASTDeclaration.clonecCstt|j}|jSr)r DeclarationTyperrrrrrrrs zASTDeclaration.namecCs |jdkrdStt|j}|jS)Nfunction)rr rArrrrrrrs  zASTDeclaration.function_paramsTrrcCsH|jdkr|jr|jj||S|j||j|j}|r"t||S|S)N enumerator)rrrrr _id_prefix)rrrid_rrrrs  zASTDeclaration.get_idcCs |tdSr)r_max_idrrrr get_newest_idr)zASTDeclaration.get_newest_idrcCs||j}|jr |d7}|S)N;)rrrrrrrs zASTDeclaration._stringifyrrrroptionscCstt||js Jd|d<t}d|_|jj |d<||7}|jdkr%n||jdkr+nv|jdkr1np|jdkrE|tdd7}|t7}n\|jd krY|td d 7}|t7}nH|jd krm|td d 7}|t7}n4|jd kr|td d 7}|t7}n |jd krt t |j }| }|t||7}|t7}nJ|j ||||j|jr|tdd7}dSdS)NT is_multiline declarator add_permalinkmemberrmacror^rarNrrFr)r5rrdesc_signature_linesphinx_line_typeisRedeclarationrrrar rArrrrr)rrrrr  mainDeclNoderrrrrrsF          z!ASTDeclaration.describe_signaturer)rYrr)rrrrr rrrurrrrrrrrUrrr)rrrrrrrrrs0    rc@s*eZdZdeddddeddfddZdS) SymbolLookupResultsymbolsr parentSymbolrrYNcCrr)rrr)rrrrrrrrrzSymbolLookupResult.__init__)rrrrrrrrrrrs rc@s8eZdZdeeeefddfddZdefddZdS) LookupKeyrrYNcCrrrrrrrrr zLookupKey.__init__cCsdddd|jDS)Nz[{}]rcss |] \}}d||VqdS)z({}, {})N)format)rrrrrrrs  z$LookupKey.__str__..)rrrrrrrrs zLookupKey.__str__) rrrrr rrrrrrrrrsrcsbeZdZdZdZdZdZddZddZe de d d fd d Z dQd dZ de de d d ffdd Zdddedede ded d f ddZdede ded d fddZdQddZdQddZde d d fd d!Zd edfd"d#Zed edfd$d%Zed edfd&d'ZdRd)d*Zd efd+d,Zded-ed.ed dfd/d0Z ded-ed.ed1ed edf d2d3Z!d4ed5e"degdfd6e d-ed.ed1ed e#fd7d8Z$d4edede ded df d9d:Z%d;ddd d fd?d@Z'd4ed dfdAdBZ(dede ded dfdCdDZ)ded-ed.ed1ed df dEdFZ*dSdGdHZ+d4edIe d-ed.ed df dJdKZ,dLed e fdMdNZ-dLed e fdOdPZ.Z/S)Trrz FcCsJrrrrrr__copy__rFzSymbol.__copy__cCs|jrJtdddddSr)rr)rmemorrr __deepcopy__szSymbol.__deepcopy__rrYNcGs ttjtjddt|dS)Nrend)printrdebug_indent_string debug_indentrrrr debug_prints zSymbol.debug_printcCs6|js|jrJ|jr JdS|jr|jsJdSdSr)rrdocnamerrrr_assert_invariantss  zSymbol._assert_invariantskeyrcs|dkrJt||S)Nchildren)super __setattr__)rr#r __class__rrr&szSymbol.__setattr__rrrr!linecCsr||_d|_d|_||_||_||_||_d|_|g|_ g|_ |jr,|jj ||jr3||j_ | dS)NF)r siblingAbove siblingBelowrrr!r)rr" _children _anonChildrenrZr_add_function_params)rrrrr!r)rrrrs  zSymbol.__init__cCs||jdus J|jdusJ|jdusJ|dusJ|dus%J|dus+J||_||j_||_||_||dSr)r"rr!r)rr.)rrr!r)rrr _fill_empty's    zSymbol._fill_emptycCstjrtjd7_td|jdurN|jjdurN|jjD]/}|jdur&q|jj}|dur/qtdd|}|j r:Jt |j dksCJ| |||j |jqtjrZtjd8_dSdS)Nrz_add_function_params: functionParam)r debug_lookuprr rrrrrrrr _add_symbolsr!r))rr[nnrrrrr.7s"     zSymbol._add_function_paramscCs6|jdurdS||jjvsJ|jj|d|_dSr)rr,removerrrrr4Ns  z Symbol.removecCsp|jD]2}|||jr5|j|kr5d|_d|_d|_|jdur%|j|j_|jdur/|j|j_d|_d|_qdSr)r, clear_docrr!r)r*r+)rr!sChildrrrr5Us      zSymbol.clear_docccs&|V|jD] }|EdHqdSr)r,get_all_symbols)rr6rrrr7cs  zSymbol.get_all_symbolsccs|jEdHdSr)r,rrrrr$hszSymbol.childrenccs0|jD]}|V|jsq|jEdHqdSr)r,rrchildren_recurse_anon)rrrrrr8ls  zSymbol.children_recurse_anonrcCstg}|}|jr|||j}|js|g}|D]}|jdur-||j|jfq||jdfqt|Sr)rrZreverserrrr)rrsr#rrrrts  zSymbol.get_lookup_keycCsRg}|}|jr|||j}|js|g}|D]}||jqt|ddS)NFr)rrZr9rr)rrr:rrrrrs  zSymbol.get_full_nested_name matchSelf recurseInAnoncCsBtjrtd|j|||dd}zt|WSty YdSw)Nz_find_first_named_symbol ->F)searchInSiblings)rr1r _find_named_symbolsr StopIteration)rrr<r=rrrr_find_first_named_symbols    zSymbol._find_first_named_symbolr>c#s:tjr@tjd7_tdtjd7_tdttjdddtd|tdtdtd |d td ffd d }|D]>}tjrftdt|tjddd|j|krtjrtjd7_tdtjd8_|Vtjrtjd7_qPtjrtjd8_dSdS)Nrz_find_named_symbols:self:rrzident: zmatchSelf: zrecurseInAnon: zsearchInSiblings: rY)rNNc3s}tjrtdt|tjddd r|Vr&|jEdHn|jEdH|jdur3dS|j}tjrJtdt|tjdddq)Nzsearching in self:rrrTzsearching in sibling:) rr1r r to_stringrr8r,r*)r:r<r=rrr candidatess$    z.Symbol._find_named_symbols..candidatesz candidate:matches)rr1rr rrCrr)rrr<r=r>rEr:rrDrr?s8          zSymbol._find_named_symbolsronMissingQualifiedSymbolancestorLookupTypec CstjrEtjd7_tdtjd7_tdt|tjdddtd|td|td|td |td ||j}|}|jrV|jrV|j}|jsP|durq|d } |jrq|j | |||d rkn|j}|jsatjrtd t|tjddd|ddD](} |j | ||d} | dur||| } | durtjrtjd8_dSd}| }qtjrtdt|tjddd|d} |j | |||d } tjrt | } tjd8_t | || S)Nrz_symbol_lookup:rBrrznestedName: zancestorLookupType:zmatchSelf: zrecurseInAnon: zsearchInSiblings: rr<r=r>zstarting point:rr<r=rHFzhandle last name from:)rr1rr rrCrrrfind_identifierrAr?listr) rrrIrJr<r=r>rr firstNamerrrrrr_symbol_lookupsp           zSymbol._symbol_lookupcsltjr+tjd7_tdtjd7_td|tdtddddtd dfd d }|j||dd d d d dusGJtj}t |dkrtjr~tdtjd7_tdj tdtdtjd8_tj j d}tjrtjd8_|Stjrtdtjd7_tdt |tjd8_stjrtdtjd8_|dSg}g} g} |D]} | j dur| | q| jr| | q| | qtjrtdt |tdt | tdt | d&fdd } t | dkrd} nM| } d'fdd }jd!kr.onMissingQualifiedSymbolFrJr<r=r>rz _add_symbols, result, no symbol:z ident: z declaration: zlocation: {}:{}rQrHz_add_symbols, result, symbols:znumber symbols:zno declarationz #noDecl: z #withDecl:z #dupDecl: cs:tjrtdtjjd}tjrtd|S)Nz begin: creating candidate symbolrQz end: creating candidate symbol)rr1r rrrrr!r) lookupResultrrmakeCandSymbolos  z+Symbol._add_symbols..makeCandSymbolr candSymbolcsJtjrtjd7_tdtjd8_tjd8_d|_t|)Nr redeclarationrHT)rr1rr rr)rrW)rrrhandleDuplicateDeclarations  z7Symbol._add_symbols..handleDuplicateDeclarationrzcandId:zoldId: z,no match, no empty, candSybmol is not None?:zAno match, but fill an empty declaration, candSybmol is not None?:)rYr)rrrWrrYN)rr1rr rrrPrNrrrrrrZrrrr4r/)rrrr!r)rIrrnoDeclwithDecldupDeclr:rVrWrYcandIdoldIdrrTrr2s                         zSymbol._add_symbolsrdocnamesrrcCstjrtjd7_td|dusJ|jD]b}|j|jddd}|dur5|j|||_| q|j rs|j |vrs|j sK| |j |j |j n(|j |j krrt|j }td}||j |j |j j|f}tj||j |j fdn ||||qtjrtjd8_dSdS)Nrz merge_with:F)rr<r=NDuplicate C declaration, also defined at %s:%s. Declaration is '.. c:%s:: %s'.location)rr1rr r,rArrZrr"rr!r/r)rrrloggerwarning merge_with)rrr_r otherChildourChildrmsgrrrres>       zSymbol.merge_withcCsHtjrtjd7_td|j|dddd}tjr"tjd8_|S)Nrz add_name:)rr!r))rr1rr r2)rrrrrradd_names zSymbol.add_namecCsptjrtjd7_td|dusJ|dusJ|dus!J|j}|||||}tjr6tjd8_|S)Nrzadd_declaration:)rr1rr rr2)rrr!r)rrrrradd_declarations    zSymbol.add_declarationcCs,tjrAtjd7_tdtjd7_td|td|td|td|t|tjdddtjd 8_|}|durtjritjd 7_td t|tjdddtjd 8_|rr|j|krr|S|rw|jn|j}|D] }|j|kr|Sq||s dS|j }|dusGdS) Nrzfind_identifier:zident: zmatchSelf: zrecurseInAnon: zsearchInSiblings:rrrHztrying:) rr1rr rrCrr8r,r*)rrr<r=r>currentr$r:rrrrMs<       zSymbol.find_identifiercCstjrtjd7_tdtjd7_|}|jD]M\}}d}|jD] }|j|kr/|}nq$|}tjrWtd|td||durRt|tjdddntd|durhtjretjd8_dSqtjrstjd8_|S) Nrzdirect_lookup:zname: zid: rrz not foundrH) rr1rr rr,rrrC)rr#r:rrrcandrrr direct_lookups6      zSymbol.direct_lookuprdcCstjrtjd7_tddddtddfdd}|j|||||d d }tjr/tjd8_|dur5dSt|j}t|d krBdS|d S) Nrzfind_declaration:rrrrYcSdSrrrRrrrrI7rz9Symbol.find_declaration..onMissingQualifiedSymbolFrSr) rr1rr rrPrNrr)rrrdr<r=rIrUrrrrfind_declaration0s.    zSymbol.find_declarationindentcCstj|g}|js|dn,|jr|t|jn|t|j|jr;|d|jr3|d|t|j|jrN|d||j|d|dd |S)Nz::z: z!!duplicate!! z (r3 r) rrrrZrrrrr!r)rrprrrrrCKs"         zSymbol.to_stringcCs6||g}|jD] }|||dq d|S)Nrr)rCr,rZrr)rrprrrrrr`s   z Symbol.dumprYN)rYr)r#rrYr)0rrrrrr1debug_show_treerr staticmethodrr r"rr&rrrUrr/r.r4r5rr7rr$r8rrrrurAr?rrrPr2rrerirjrMrmrorCr __classcell__rrr'rrs          2 H ! $     rc @seZdZedefddZeddZeddZdefdd Zde fd d Z de fd d Z de fddZ dedededeee effddZdefddZdefddZdefddZde fddZde fddZde fdd Zd!ede fd"d#Zde fd$d%Zde fd&d'Zde fd(d)Z *ddd+eed,e ge fd-ede fd.d/Z!de"fd0d1Z#de$efd2d3Z%de&fd4d5Z'de(fd6d7Z)d8ede*fd9d:Z+d;edZ-ddd;edfdRdSZ?de@fdTdUZAdeBfdVdWZCdeDfdXdYZEdZed[edeDfd\d]ZFde"fd^d_ZGde"fd`daZHde0e e6ffdbdcZIdFS)gDefinitionParserrYcCrD)NCrrrrrlanguagehrzDefinitionParser.languagecCrr)configc_id_attributesrrrr id_attributeslrzDefinitionParser.id_attributescCrr)ryc_paren_attributesrrrrparen_attributesprz!DefinitionParser.paren_attributescCs|jdkrdS|j}|jd7_d} |jr|dn|jdkr,|s,|jd7_n|jdkr4d}nd}|jd7_q|j||jS)N"rFTz$Unexpected end during inside string.\) current_charposeoffail definition)rstartPosescaperrr _parse_stringts"    zDefinitionParser._parse_stringc Cs4||dr tdS|drtdS|j}|tr-|tt|j||jSt t t t fD]}||rK|t t|j||jSq3|}|durXt|S|tr|jd}|jd}zt||WSty}z|d|WYd}~dSd}~wty|dYdSwdS) Nr Tr FrrHz8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)skip_ws skip_wordrrmatchr.r/rrr,r0r2r4r3rr"r- last_matchgrouprUnicodeDecodeErrorrr*)rrregexstringrrrrrr_parse_literalsB           zDefinitionParser._parse_literalcCsH|jdkrdS|jd7_|}||ds |dt|S)Nr2rr3z0Expected ')' in end of parenthesized expression.)rr_parse_expressionr skip_stringrr,)rrrrr_parse_paren_expressions   z(DefinitionParser._parse_paren_expressioncCsL||}|dur|S|}|dur|S|}|dur$t|SdSr)rrr_parse_nested_namer$)rrr3rrr_parse_primary_expressionsz*DefinitionParser._parse_primary_expressionropenclosecCs|||s dS||rgdfSg}d} ||}||||||r8 ||fS|dsF|d||f|j|kr]|dkr]|jd7_d} ||fSq)NNNFTrz"Error in %s, expected ',' or '%s'.rr)rskip_string_and_wsrrrZrrr)rrrrrqrr.rrr_parse_initializer_lists0     z(DefinitionParser._parse_initializer_listcCs&|ddd\}}|durdSt|S)Nzparenthesized expression-listr2r3)rr:rrrr_parse_paren_expression_lists z-DefinitionParser._parse_paren_expression_listcCs(|ddd\}}|durdSt||S)Nzbraced-init-listrr)rr;rrrr_parse_braced_init_lists z(DefinitionParser._parse_braced_init_listcCs|}g} ||dr*|}||ds"|d|t|q|drH|dr<|jd8_n | }|t |q|drT|t q|d r`|t q| }|durp|t|q t||S) NTr?r@z*Expected ']' in end of postfix expression.rRrrGrr)rrrrrrrZr=rrrPrCrMrr8rU)rrrVr.rr9rrr_parse_postfix_expressions:           z*DefinitionParser._parse_postfix_expressioncCs|tD] }|ddvr||}n||}|r&|}t||Sq|drQ|drI|jdd}||dsE| dt |S| }t |S|d rx|ds`| d |jdd}||dst| d t |S|S) Nrr_r\r2F)namedr3zExpecting ')' to end 'sizeof'.rtzExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.)r_expression_unary_opsrr_parse_cast_expressionr\skip_word_and_wsr _parse_typerrb_parse_unary_expressionrirjr)rr]rr.rdrrrr' s6               z(DefinitionParser._parse_unary_expressionc Cs|j}||drdz|d}|ds|d|}t||WStyc}z2||_z |WWYd}~Sty^}zg}| |df| |df| |d|d}~wwd}~ww|S)Nr2Fr3z Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.) rrrrrrrkr'rrZ_make_multi_error)rrrdr.exCastexUnaryerrsrrrrM s6      z'DefinitionParser._parse_cast_expressioncsfdd|dS)Nc sdttkrdtffdd }n dtffdd }g}g}|| j}d}tD]E}|dd vrD|sCq5n|sJq5|d kr\jd kr\jd8_nz|}||||d}Wn t yz|_Yq5w|s~nq(t ||S) NrrYcSr)rrrrrparsers zYDefinitionParser._parse_logical_or_expression.._parse_bin_op_expr..parsercsdS)Nrrr)_parse_bin_op_expropIdrrrrv rTFrabcnoxr) r_expression_bin_opsrrZrrrrrr'rp) rrrrqrrroneMorer]r.r)rrrrq sB          zIDefinitionParser._parse_logical_or_expression.._parse_bin_op_exprrrrrrr_parse_logical_or_expressione s %z-DefinitionParser._parse_logical_or_expression orExprHeadcCrnrr)rrrrr"_parse_conditional_expression_tail rz3DefinitionParser._parse_conditional_expression_tailcCsg}g}|}|| d}|tD]%}|ddvr%||s$qn||s+q|}||||d}q|s?nqt||S)NTFrr)rrZr_expression_assignment_opsrrr)rrqrrorExprrr]r.rrr_parse_assignment_expression s,       z-DefinitionParser._parse_assignment_expressioncCs |}|Sr)r)rrrrr_parse_constant_expression sz+DefinitionParser._parse_constant_expressioncC|Srrrrrrr sz"DefinitionParser._parse_expressionTrrallowc CsD|j}z|WSty)}z|r|js|d|||_WYd}~nd}~ww|dus0J||j}|tr@|j}n\dddd}g} |jst | dkrW|j |vrWn+|j | vrg| ||j nt | dkrx|j | dkrx| |jd7_|jrKt |dkr|jr|d ||j||j}t|S) NzBParsing of expression failed. Using fallback parser. Error was: %sr3rr@)r2rr?rrrz0Could not find end of expression starting at %d.)rr'allowFallbackExpressionParsingwarnrr _string_re matched_textrrrkeysrZpoprrstripr) rrrrprevPosrrrbracketsrrrr_parse_expression_fallback sD     z+DefinitionParser._parse_expression_fallbackcCsg}|d}|drd} ||ts|d|j}|tvr,|d||j|jjvrCd}|||jt |jjft |}| |||dsVnqt ||S)NFrTrz#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.) rrrr1rr _keywordsryc_extra_keywordsrrrZr)rrrrrhrrrrr s4        z#DefinitionParser._parse_nested_namecCs<|tr|jSdD]}||jjvr||r|Sq dS)N)rurvrw)r_simple_type_specifiers_rerryrr)rtrrr_parse_simple_type_specifier s   z-DefinitionParser._parse_simple_type_specifiercCsLg}| |}|durn |||qt|dkr"dSt|S)NTr)rrrZrr)rrrrrr_parse_simple_type_specifiers s  z.DefinitionParser._parse_simple_type_specifierscCsV||}|dur|Sd}|dD] }||r!|}nq|}t||S)N)r^rNra)rrrrr)rrrkrrrr_parse_trailing_type_spec& s  z*DefinitionParser._parse_trailing_type_spec paramModecCs||ds|dkr|dndSg}||dsh ||drA|tdd||ds@|dn'|jdd d }|t|||d rYq |dr_n |d |jq!g} |}|durtn||qkt||S) Nr2rzExpecting "(" in parameters.r3rrTz'Expected ")" after "..." in parameters.singlerrrz-Expecting "," or ")" in parameters, got "%s".) rrrrZr_parse_type_with_initr_parse_attributer)rrrrrrrrr_parse_parameters9 sJ          z"DefinitionParser._parse_parametersrtypedc Cs8d}d}d}d}d}d}g} ||s=|dkr)|dr!d}q|dr)d}q|dvr=|dr5d}q|dr=d}q|dkrS|sS|d rKd }q|d rSd }q|d kra|sa|d }|raq|sm|rm|d }|rmq|sy|ry|d}|ryq|s|r|d}|rq|} | r| | q t||||||| S)zJust parse the simple ones.Nrr rDrW)r rr]rOrzrrrrTrXrdrH)rrrrZr) rrrrrrTrXrdrHrrrrr_parse_decl_specs_simplee sn             z)DefinitionParser._parse_decl_specs_simplecCsT|r |dvr td||||}d}|r!|}|||}nd}t||||S)Nrr r#Internal error, unknown outer "%s".)rrrr)rrrrrrrrr_parse_decl_specs s  z"DefinitionParser._parse_decl_specsrc s"|dvsJ|dkrCtr@jtvrdjjjjvr3d}|jtjjftj}t |gdd}n d}n |rJ }nd}g} |r؈ dr؈ d}d} d} d} |sq d rqd }qf| s{ d r{d } qf| s d rd } qf| s d rd } qf |rdnd} | r dsdd} n# drd} nfdd}dg|}  dsˈd|t|| | | | | nnqO|}|dur t|dkr |r |dkr |r  dr } t|| dSt|||dS)N)TFrrz$Expected identifier, got keyword: %srFr;rr?Tr]rHrdrXrr@z&Expected ']' in end of array operator.crr)rrrrrr rz>DefinitionParser._parse_declarator_name_suffix..parserrrrrr)rr1rrrryrrrrrrrrrrrZrrrrrr)rrrrrhrrrr]rHrdrXrrrrrrr_parse_declarator_name_suffix s                  -  z.DefinitionParser._parse_declarator_name_suffixc Cs<|dvr td|g}||ra|dra|d}d}d}g} |s.|d}|r.q#|s8|d}|r8q#|sB|d}|rBq#|} | durP|| q# ||||} t| ||||d S|r|jd kr|j } z | |||} | WSt y} zpd }|d kr|d 7}|| |f| |_ z2|jd ksJ|d ||||}|ds| d|jdd|d} t || dWWYd} ~ St y}z| |_ d}|d kr|d7}|||fd}||||d}~wwd} ~ ww|j } z| |||WSt y}z| |_ ||dfd}||||d}~ww)N)rrz'Internal error, unknown paramMode '%s'.rFrrXrdrHrr2z If declarator-id with parametersrz (e.g., 'void f(int arg)')r3z$Expected ')' in "( ptr-declarator )"rrrrrz"If parenthesis in noptr-declaratorz% (e.g., 'void (*f(int arg))(double)')zError in declaratorzIf declarator-idz!Error in declarator or parameters)rrrrrrZ_parse_declaratorrrrrr'rrr)rrrr prevErrorsrXrdrHrrrrr exParamQualrhr exNoPtrParenheaderrrrrr s       z"DefinitionParser._parse_declaratorN allowFallbackcs|dkr dsdS}|durt|S|dkr#g}n|dur,ddg}nd|fdd }j|||d }t|S) Nr F)rrrr3z;Internal error, initializer for outer '%s' not implemented.crrrrrrrrf rz3DefinitionParser._parse_initializer..parser)r)rrrrrr)rrr bracedInit fallbackEndrrrrr_parse_initializerO s"    z#DefinitionParser._parse_initializerc Csb|r|dvr td||sJ|dkrg}|j}z|j|dd}|jd|dd}|jddWn{ty}zHd }|||f||_z|j|d }|jd|d }Wn&tyy} z||_d }|| |f d } | d7} ||| | d} ~ wwWYd}~n,d}~ww|dkr|j|d }|jd|d }nd} |dkrd}|j|d }|j|| 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 rrrF)rrTr)allowSemicolonzIf just a namer)rrzIf typedef-like declarationz%Type must be either just a name or a ztypedef-like declaration.Nrr ) rrrr assert_endr'rZrrA) rrrrrrr exUntypeddescexTypedrrrrrrrl sT      zDefinitionParser._parse_typecCs4|r|dvsJ|j||d}|j|d}t||S)Nrrr)rrrB)rrrrrrrrr s    z&DefinitionParser._parse_type_with_initcCs>||}|dur|d||dst|dS|dr)t|gSg} ||drL|tdd||dsK|dnN|t sV|dt t |j gd d }||dr|t|d d||ds|dn|t||d rq+|drn|d q,t||S) Nz(Expected identifier in macro definition.r2r3rrTz-Expected ")" after "..." in macro parameters.z(Expected identifier in macro parameters.Fr;rz9Expected identifier, ')', or ',' in macro parameter list.) rrrrrCrrZrrr1rrr)rrrr3rrr _parse_macro sH                 zDefinitionParser._parse_macrocC|}t|Sr)rr=r&rrr _parse_struct zDefinitionParser._parse_structcCrr)rr>r&rrr _parse_union rzDefinitionParser._parse_unioncCrr)rr?r&rrr _parse_enum rzDefinitionParser._parse_enumcsV}d}dr&dtffdd }g|}t|}t||S)NrrYcrr)rrrrrr rz2DefinitionParser._parse_enumerator..parser)rrrrrrr@)rrrrinitValrrr_parse_enumerator s   z"DefinitionParser._parse_enumeratorcCsl|d}|drd}|}n|drd}|}n|dr*d}|}n|dt|||dS)Nr^rarNzTCould not parse pre-v3 type directive. Must start with 'struct', 'union', or 'enum'.F)rrrrrrr)rrrdrrrparse_pre_v3_type_definition s       z-DefinitionParser.parse_pre_v3_type_definitionrrcCs|dvr td||dvrtd|d}|dkr"|jddd}nG|dkr.|jddd}n;|d kr7|}n2|d kr@|}n)|d krI|}n |d krR|}n|d kr[|}n|dkrg|jddd}nJ|d krw|| d}nd}t ||||S)N)rr rr^rarNrrz(Internal error, unknown objectType "%s".) rr varrr^rarNrrz+Internal error, unknown directiveType "%s".r T)rrrrr^rarNrrFr) rrrrrrrrrrrrrrrparse_declaration s6        z"DefinitionParser.parse_declarationcCrr)rrrrrparse_namespace_object# rz'DefinitionParser.parse_namespace_objectcCs&|}||d||S)Nz())rrrrr&rrrparse_xref_object& s  z"DefinitionParser.parse_xref_objectc Cs|j}d}z|}||W|Sty_}z?||_z|d}||Wn%tyS}zd}g}||df||df||||d}~wwWYd}~|Sd}~ww)NFz%Error when parsing (type) expression.z If expressionzIf type)rrrrr'rrZr)rrrexExprexTyperrrrrparse_expression. s2     z!DefinitionParser.parse_expressionrrr)Jrrrrrrxr{r}rrrrrrr rrurr:rr;rrUrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrArrBrrCrr=rr>rr?rr@rrrrrrrrrrrrvgs  &   ,&3   + ,:  R Q ;("rvrYcCsttdgddS)NPhonyNameDueToErrorFr;)rrrrrr_make_phony_error_nameD rrcseZdZUdZdejiZeed<de ddfddZ de d e d e ddfd d Z ede fd dZede fddZde de fddZdede fddZdede fddZd e de deddfddZdeeffdd Zd e d e de fddZd&d d!Zd&d"d#Zde de fd$d%ZZS)'CObjectz- Description of a C language object. noindexentry option_specastrYNcCs|jdksJ|j}|sJ|jdusJ|j}|sJ|jdur#dS|j}|dur,dS|jdkr3dS|jdkr:dS|j}|j|jdddd}|durMdS|j}||_t ||j||j j | dddS)NrrNFTrKrrQ) rrrrrrrMrrrrr!get_source_info)rrrr parentDecl targetSymbolr: declClonerrr_add_enumerator_to_parentQ s6      z!CObject._add_enumerator_to_parentsigrc Csg}tdtdD]}z |j|d}||Wq ty'|tks%JYq wtt|}|d}|s6J|j d}||j j j vrs|sKJ|d||ddD]}|s]qX||j j j vrk|d|qX|j j |d|jvr||} |jdd| |d dfdSdS) Nr)rrridsrentriesrr)rrrrZr(rNreversedrrrlstripstatedocumentrnote_explicit_targetr get_index_text indexnode) rrrrrridnewestIdr indexTextrrradd_target_and_indexv s4     zCObject.add_target_and_indexcCstr)rrrrr object_type rzCObject.object_typecCrr)rrrrrdisplay_object_type rzCObject.display_object_typercCstd||jfS)Nz %s (C %s))rrr&rrrr  rzCObject.get_index_textrcCs||j|jSr)rrobjtyperrrrrparse_definition rzCObject.parse_definitioncCs|Sr)rrrrrr rz$CObject.parse_pre_v3_type_definitionr cCs||d|j|dS)Nr)rr)rrrr rrrr r+zCObject.describe_signaturecsP|jjjj}d|jvr|jdd}||jd<||jd<d|jd<t S)Nc:parent_symbolr root_symbolr c:last_symbol) r r settingsr temp_data domaindatar ref_contextr%run)rrrootr'rrr s     z CObject.runc Cs8|jjd}t|||jjd}z`z ||}|WnRtym}zF|jjds*|jdkr0z ||}|Wn tyD|w|j |_ |jjdrcd}| t j ||j ||}tj||dWYd}~nd}~wwWn$ty}ztj||dt} || } | |jjd<t|d}~wwz<|j||jj|d d } | jdusJ| jdusJ|jjd| _| jdur| jjdusJ| | j_| |jjd<Wn2ty}z%|j|jjd<td }||jj|jj|j|f}tj||dWYd}~nd}~ww|j d kr||t|j} | ||| |S) Nrrbryc_allow_pre_v3rc_warn_on_allowed_pre_v3zl{}: Pre-v3 C type directive '.. c:type:: {}' converted to '.. c:{}:: {}'. The original parsing error was: {}rarr)r!r)r`r)!rrrvryrrr'rrrrrrrrcrdrri ValueErrorrjr!rr*r+rrrr)rrdictr r) rrrrrreOrigrhrrrr rrrhandle_signature st                zCObject.handle_signaturecCsP|jjd}|s J|jjd|_|jjd|_||jjd<||jjd<dS)Nrrr)rroldParentSymbolr oldParentKeyr)r lastSymbolrrrbefore_content s  zCObject.before_contentcCs |j|jjd<|j|jjd<dS)Nrr)r(rrr)rrrrr after_content szCObject.after_contentcCsd|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. rrr&rrr make_old_id szCObject.make_old_idrr)rrr__doc__rflagrr;__annotations__rrrrrrrrr rvrrrrrrrr'r+r,r-rurrr'rrH s6   %     @ rc@s"eZdZdZedefddZdS) CMemberObjectr rYcCs|jdvsJ|jS)N)r r)rrrrrr sz!CMemberObject.display_object_typeN)rrrrrrrrrrrr1 sr1 parameter Parameters)rr2rargumentr.)r)labelr typerolename typenamesretvalz Return values)retvalsr8T)r5r can_collapse returnvalueReturnsF)returnsrY)r5has_argr returntypez Return type)rtypec@eZdZdZeZdS)CFunctionObjectrNrrrr_function_doc_field_typescopydoc_field_typesrrrrrB%  rBc@rA) CMacroObjectrNrCrrrrrH+ rGrHc@eZdZdZdS) CStructObjectr^NrrrrrrrrrJ1 rJc@rI) CUnionObjectraNrKrrrrrM5 rLrMc@rI) CEnumObjectrNNrKrrrrrN9 rLrNc@rI)CEnumeratorObjectrNrKrrrrrO= rLrOc@rI) CTypeObjectrNrKrrrrrPA rLrPc@s@eZdZUdZdZdZdZdZiZe e d<de e fdd Z d S) CNamespaceObjectzb This directive is just to tell Sphinx that we're documenting stuff in namespace foo. FrrTrrYc Cs|jjdd}|jddvr|}g}n?t|jd||jjd}z |}|Wnt yL}zt j ||dt }WYd}~nd}~ww| |}|g}||jjd<||jjd<||jjd <gS) NrrrNULL0nullptrr!rarc:namespace_stackr)rr argumentsrrv get_locationryrrr'rcrdrrirrr)r rootSymbolrstackrrrrrrrQ s,     zCNamespaceObject.runN)rrrr. has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacerr;r0rrrrrrrrQE s  rQc@s<eZdZUdZdZdZdZiZee d<de e fddZ d S) CNamespacePushObjectFrrTrrYc Cs|jddvr gSt|jd||jjd}z |}|WntyA}zt j ||dt }WYd}~nd}~ww|jj dd}|sT|jjdd}||}|jj dg}||||jj d<||jj d<||jjd <gS) NrrRr!rarrrrVr)rWrrvrXrryrrr'rcrdrrgetrrirZrr)rrrr oldParentrrZrrrro s0      zCNamespacePushObject.runN rrrr[r\r]r^rr;r0rrrrrrrr_h   r_c@s<eZdZUdZdZdZdZiZee d<de e fddZ dS) CNamespacePopObjectFrTrrYcCs|jjdd}|rt|dkrtjd|dg}n|t|dkr+|d}n|jjdd}||jjd<||jjd<| |jj d <gS) NrVrz;C namespace pop on empty stack. Defaulting to global scope.rarrrrz cp:parent_key) rrr`rrcrdrXrrrr)rrZrrrrr s    zCNamespacePopObject.runNrbrrrrrd rcrdc sFeZdZ  d dedededddeddf fd d Zdd d ZZ S) AliasNodeNr aliasOptionsr rr parentKeyrYcszt||_||_||_|dur2d|jvr*|jdd}||jd<||jd<|jd|_ dS|dus8J||_ dS)Nrrrr) r%rrrfr rrrrrg)rrrfr rrgr r'rrr s     zAliasNode.__init__cCs|j|j|j|jd|jdS)N)rrg)r(rrfr rgrrrrrE szAliasNode.copyr)rYre) rrrrr%rrrrErurrr'rre s rec@sReZdZejdZdededededede de e fd d Z d e dd fd dZ d S)AliasTransformrr:maxdepthskipThisrf renderOptionsr rYc Cs|dkrd}n |dkrd}n|d8}d}g}|s-tdd} || |j| d|j||r|r4|} n"t} t} | | || _d| d<d | d <| d <d| d <| } |j D]} | jduraqY|j | |d|||d }| |qY|st | j dkr|| |S)NrTrFrrrdomainaliasrdesctypenoindexrirjrfrkr ) rdesc_signaturerZrrr desc_contentrr r$_render_symbolrr)rr:rirjrfrkr recurser rchildContainercontentrr6 childNodesrrrrs sD       zAliasTransform._render_symbolkwargsNc Ks|jtD]}tt|}|j}|j}zt|||jjd}| }Wnt y=}zt j ||dd}WYd}~nd}~ww|durZt |d}||t ||7}||q|jjdjd} | |} | s{td|td|t| d| sJ| j|d d d d } | durt |d}||||t ||7}t j d ||d||q|jd s| jdurt |d}||||t ||7}t j d||d||q|j| |jd|jd |jt|jd} || qdS)Nr!rarrrTarget: ParentKey: ranyTrLz,Could not find C declaration for alias '%s'.norootzACan not render C declaration for alias '%s'. No such declaration.rirp)r traverserer rrgrvrryrr'rcrdrrqclearr replace_selfdomainsrrmrrrorZrfrrsr%) rrxrrrgrrrrrYrr:r rrrapply sv               zAliasTransform.apply)rrrr!default_priorityrrUrur%rrrrsrrrrrrh s  ,rhc@s6eZdZUejejdZeed<de e fddZ dS) CAliasObjectrir|rrYc Csd|jvr|jdd\|_|_nd|j|_|_t}|jj|_|j|d<|j|d<|d<d|d<g|_|j d dd |j vd }|d rW|d dkrWt j d | d |}t|D]\}}|t|||jj|jdq_|gS)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. rrrrlrrnTrorir|rzError 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)rsplitrlrrrr r rr r`rcrdrXget_signatures enumeraterZrer)rrrf signaturesrrrrrr,s(    zCAliasObject.runN) rrrrnonnegative_intr/rr;r0rrrrrrrr&s rcs\eZdZdedededededeeeff ddZdee e e e fffd d Z Z S) CXRefRolerrefnodehas_explicit_titletitletargetrYcCsv|j|j|stdt|}|s7|d}|dddkr7|dd}|d}|dkr7||dd}||fS)Nrrrrrr) attributesupdaterr+subrr rfind)rrrrrrdotrrr process_linkPs   zCXRefRole.process_linkc sD|jjds tS|jdd}t|||jjd}z |tWSt y}znd|_ z| }Wnt yLtYWYd}~Swgd}|jj dd}|dure|jjdd }tj|d }||d |j||jjd rd }|d7}|tj|||}tj||d|ggfWYd}~Sd}~ww)Nr"rqr`r!r)xrefrc-texprzcpp:parent_symbolrrclassesrr#zB{}: Pre-v3 C type role ':c:type:`{}`' converted to ':c:expr:`{}`'.z# The original parsing error was: {}ra)rryr%rrreplacervrXrr'rrrr`rr rTrrrrrcrd) rrrr&rrrrrhr'rrrds<        z CXRefRole.run)rrrrrrurr rrrrrrurrr'rrOs   *rcsDeZdZdeddffdd ZdeeeeeffddZ Z S) CExprRoleasCoderYNcs"t|r d|_dSd|_dS)Nzc-exprr)r%r class_type)rrr'rrrs   zCExprRole.__init__c Cs|jdd}t|||jjd}z|}Wn+tyC}ztj d|||dt j d|||j gdggfWYd}~Sd}~ww|jj dd}|durX|jjdd }t j d|j gd}||d |j||ggfS) Nrqr`r!zUnparseable C expression: %r %srarrrrr)rrrvrXrryrr'rcrdr desc_inlinerrr`rr)rrrrexrrrrrrs&   ( z CExprRole.run) rrrrurr rrrrrurrr'rrs& rc@sxeZdZUdZdZdZeedddddeedddddeed d dd eed d deed d dd eedddd eedddd eedddeed dd eedddddd Ze e e e e e eeeeeeed Zeeeeddeeeeeeeddeddd ZedddddidZeeeeeeeeeeffffed<deddfddZ d e!ded!e"j#ddfd"d#Z$d$e%ddfd%d&Z&d'e'ed(eddfd)d*Z(d e!d+ed,e)d-ed.ed/e%d0e*dee+e*e+effd1d2Z,d e!d+ed,e)d-ed.ed/e%d0e*de+e*fd3d4Z-d e!d+ed,e)d.ed/e%d0e*de'eee*ffd5d6Z.de/eeeeeee0ffd7d8Z1dS)9CDomainzC language domain.rrwr rrrvariablerfuncrrr^rarNrzfunction parameter) r rrrr^rarNrrr0) r rrrr^rarNrr namespaceznamespace-pushz namespace-poprmT) fix_parens)rF) r rrrrr^rarNrrr.texprN)robjects initial_datar!rYcCstjrtd|tdt|jddtd|jd}||tjr@tdt|jddtdtd|dSdS) Nz clear_doc:z before:rrz before endz after:z after endzclear_doc end:)rrsrrrr5)rr!rYrrrr5s   zCDomain.clear_docrr cCs6tjrtd|t|jddtd|dSdS)Nz process_doc:rrzprocess_doc end:)rrsrrr)rrr!r rrr process_docs  zCDomain.process_docrcCs|j|jjdSr)rrrr)rrrrrprocess_field_xrefrzCDomain.process_field_xrefr_ otherdatacCstjr.tdtdt|jddtdtdt|ddtdtd|jd|d||j|jd }|d D]\}\}}}||vr\||vr\|||f||<qFdS) Nzmerge_domaindata:z self:rrz self endz other:z other endzmerge_domaindata endr)rrsrrrreritems)rr_r ourObjectsfullnamefnrrrrrmerge_domaindatas& zCDomain.merge_domaindata fromdocnamebuilderrdrrcontnodec Cst|||jd}z|} Wnty*} ztjd|| |dWYd} ~ dSd} ~ ww|dd} |jd} | rU| | } | sPt d|t d| t | d | sTJn| } | j | |d d d }|dusi|j durkdS|j }| }|j}|syJt|||||||jfS) Nr!z$Unparseable C cross-reference: %r %srarrrryrzrTrL)rvryrr'rcrdr`rrmrrrorrr!r:rr)rrrrrdrrrrrrrgrYrr:r displayNamer!rrr_resolve_xref_inner sD         zCDomain._resolve_xref_innerc Cs||||||||dSr)r)rrrrrdrrrrrr resolve_xref0s zCDomain.resolve_xrefc Cs^t||||d|||\}}Wdn1swY|r-d|||fgSgS)Nr{zc:)r"suppress_loggingrrole_for_objtype) rrrrrrrretnoderrrrresolve_any_xref6s   zCDomain.resolve_any_xrefc cs|jd}|D]4}|jdurq |jsJ|}t|d}|d}|jj}|j}|j }|||||dfVq dS)Nrrr) rr7rr!rrr rrr) rrYrfullNestedNamerdispnamerr!rrrr get_objects@s     zCDomain.get_objects)2rrrr.rr5rr object_typesr1rBrHrJrMrNrOrPrQr_rdrrrrrolesrrrrr r r0r5rr r rrrrrrrrrrrrrUrrrrrrs 0   %  & rappcCsh|t|dgd|dgd|dtd|t|ddd|dddd d ddd S) Nrzrr|rr"Fr#TbuiltinrH)r env_versionparallel_read_safeparallel_write_safe) add_domainradd_config_value_macroKeywordsadd_post_transformrh)rrrrsetupOs  r)r.retypingrrrrrrrr r r r docutilsr docutils.nodesrrrrdocutils.parsers.rstrsphinxrsphinx.addnodesrsphinx.applicationrsphinx.buildersrsphinx.deprecationrsphinx.directivesrsphinx.domainsrrsphinx.environmentr sphinx.localerr sphinx.rolesrrsphinx.transformsr !sphinx.transforms.post_transformsr! sphinx.utilr"sphinx.util.cfamilyr#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5sphinx.util.docfieldsr6r7r8sphinx.util.docutilsr9sphinx.util.nodesr:sphinx.util.typingr; getLoggerrrcr<rrrrrrrrcompileSrrrrrrrrrrrrr"r$r,r7r8r=rCrMrPrUr\rbrirjrkrprrrrrrrrrrrrrrrr:r;rrArBrrCr=r>r?r@rrrrrvrrr1rDrBrHrJrMrNrOrPrQr_rdrerhrrrrrrrrrrs8 4            T         /Q      3?6; )!I&/(Z dF    #o)7 *