o uaq @sUdZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z ddlmZddlmZmZmZmZddlmZddlmZddlmZmZdd lmZdd lmZdd l m!Z!dd l"m#Z#m$Z$dd l%m&Z&ddl'm(Z(ddl)m*Z*m+Z+ddl,m-Z-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHddlImJZJmKZKddlLmMZMddlNmOZOddlPmQZQe4ReSZTe dZU eVdZWeVdejXZYeVdZZeVdZ[eVdZ\gdZ]eVd Z^d!Z_gd"Z`d#d#d$d%d%d&d'd'd(d)d* Zad+d,d-d.d/d0d1Zbid2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSidTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~Zcidd/dd)dd#dddddddddddddddddddddddddd%dd%idd%dddddd'dd'dd'dd'dd0dd0ddddddddddddddddiddddddddddddddddddddddddddddddddœddǓddiZdid2dʓd4d˓d6d̓d8d͓d:dΓddΓddѓd@dғdBdӓdDdԓdFdՓddՓdHdדddדdJdٓddٓidLdۓdNdܓdPdݓdRdޓdTdߓdVddXddddZdddd\dddd^dd`ddbdddddfdidhddddjddlddnddpddd+drddddtddddddddddddddddddddZedddd d d ddddΐd Zfd#d#dddd Zgee ehehfeid<ddgdtdgdHdgdJdgdFdggdgdd^d`gdggdddgg Zjgd ZkgdZldddddZmGdddenZoGddde7ZpGdddepZqGdd d epZrGd!d"d"epZsGd#d$d$epZtGd%d&d&etZuGd'd(d(euZvGd)d*d*euZwGd+d,d,euZxGd-d.d.euZyGd/d0d0euZzGd1d2d2euZ{Gd3d4d4etZ|Gd5d6d6etZ}Gd7d8d8etZ~Gd9d:d:etZGd;d<dd>eZGd?d@d@eZGdAdBdBeZGdCdDdDeZGdEdFdFeZGdGdHdHeZGdIdJdJetZGdKdLdLetZGdMdNdNetZGdOdPdPetZGdQdRdRetZGdSdTdTetZGdUdVdVetZGdWdXdXetZGdYdZdZetZGd[d\d\etZGd]d^d^etZGd_d`d`etZGdadbdbetZGdcddddepZGdedfdfetZGdgdhdhetZGdidjdjetZGdkdldlepZGdmdndneZGdodpdpeZGdqdrdreZGdsdtdtepZGdudvdvepZGdwdxdxepZGdydzdzeZGd{d|d|eZGd}d~d~eZGdddeZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddetZGddde8ZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddepZGdddeZGdddeZGdddeZGdd„deZGdÐdĄdepZGdŐdƄdepZGdǐdȄdepZGdɐdʄdepZGdːd̄depZGd͐d΄depZGdϐdЄdepZGdѐd҄d҃ZGdӐdԄdԃZGdՐdքdփZGdאd؄de9ZΐdesfdڐdۄZGdܐd݄de!eZGdސd߄deЃZGdddeЃZGdddeЃZGdddeЃZGdddeЃZGdddeЃZGdddeЃZGdddeЃZGdddeMZGdddeMZGdddeMZGdddejZGddde0ZGddde!ZGddde.ZGddde-ZGddde#ZdedeeheffddZdS(z sphinx.domains.cpp ~~~~~~~~~~~~~~~~~~ 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)desc_signature pending_xref)Sphinx)Builder)ObjectDescription)DomainObjType)BuildEnvironment)NoUri)___) 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)SphinxDirective) make_refnode) OptionSpecTzN(?x) [a-zA-Z_][a-zA-Z0-9_]*\b # note, no word boundary in the beginning z>[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")z\b(public|private|protected)\bz(?x) \[\s*\] | \(\s*\) | \+\+ | -- | ->\*? | \, | (<<|>>)=? | && | \|\| | <=> | [!<>=/*%+|&^~-]=? | (\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq)\b) zx(?x) ->\* | \.\* | \, | (<<|>>)=? | && | \|\| | != | [<>=/*%+|&^~-]=? )Yalignasalignofandand_eqasmautobitandbitorboolbreakcasecatchcharchar8_tchar16_tchar32_tclasscomplconceptconst consteval constexpr constinit const_castcontinuedecltypedefaultdeletedodouble dynamic_castelseenumexplicitexportexternfalsefloatforfriendgotoifinlineintlongmutable namespacenewnoexceptnotnot_eqnullptroperatororor_eqprivate protectedpublicregisterreinterpret_castrequiresreturnshortsignedsizeofstatic static_assert static_caststructswitchtemplatethis thread_localthrowtruetrytypedeftypeidtypenameunionunsignedusingvirtualvoidvolatilewchar_twhilexorxor_eqa (?x) \b( auto|void|bool |signed|unsigned |short|long |char|wchar_t|char(8|16|32)_t |int |__int(64|128) # extension |float|double |__float80|_Float64x|__float128|_Float128 # extension |_Complex|_Imaginary # extension )\b )N_CPPv2_CPPv3_CPPv4cCiUlLb) rI signed char unsigned charrh signed int unsigned intri signed long unsigned longrEssosisiosvm)z std::stringz std::ostreamz std::istreamz std::iostreamz std::vectorzstd::maprlz new-operatornew[]znew-array-operatorrXzdelete-operatordelete[]zdelete-array-operator~z inv-operator+z add-operator-z sub-operator*z mul-operator/z div-operator%z mod-operator&z and-operator|z or-operator^z xor-operator=zassign-operator+=zadd-assign-operator-=zsub-assign-operator*=zmul-assign-operator/=zdiv-assign-operator%=zmod-assign-operator&=zand-assign-operator|=zor-assign-operator^=zxor-assign-operatorz<>zrshift-operator<<=zlshift-assign-operator>>=zrshift-assign-operator==z eq-operator!=z neq-operatorz gt-operator<=z lte-operator>=z gte-operator!z not-operator&&z sand-operatorz sor-operatorz inc-operatorz dec-operatorzcomma-operatorzpointer-by-pointer-operatorzpointer-operatorz call-operatorzsubscript-operator)||++--,->*->()[]rrErIrarhrwrLDirKDsrJDur{sz short intz signed shortzsigned short intzunsigned shorttzunsigned short intrhr|rrjrrizlong intrzsigned long intrzunsigned long intz long longxz long long intzsigned long longzsigned long long int__int64zunsigned long longyzunsigned long long int__int128nzsigned __int128zunsigned __int128orbfrZdz long doublee __float80 _Float64x __float128g _Float128z_Complex floatCfz_Complex doubleCdz_Complex long doubleCez_Imaginary floatz_Imaginary doublez_Imaginary long doublerBDadecltype(auto)Dczstd::nullptr_tDnnwnadldacorNplmimldvrmanrCrrrDeoraSpLmImLdVrMaNr@oRrseOrlsrslSrSeqneroltgtlege<=>ntrnaar?roorpprmmrcmrpmptclixds)rrr.*pp_mm_deadpsng) rrrrrrrrnrrN)Nu8urr_id_char_from_prefix)rrro)rrrrr)rrrr)rrrrrrrrrr@rrrrsdcscccrc)r[rrTrxc@s$eZdZd ddZdefd d ZdS) _DuplicateSymbolErrorsymbolSymbol declarationASTDeclarationrzNcC |sJ|sJ||_||_dSN)r,r.)selfr,r.r34/usr/lib/python3/dist-packages/sphinx/domains/cpp.py__init__D z_DuplicateSymbolError.__init__cCsd|jdS)Nz'Internal C++ duplicate symbol error: %sr)r,dumpr2r3r3r4__str__Jz_DuplicateSymbolError.__str__)r,r-r.r/rzN)__name__ __module__ __qualname__r5strr9r3r3r3r4r+Cs r+c@ eZdZdS)ASTBaseNr;r<r=r3r3r3r4r@Nr@c@seZdZdeddfddZdefddZdedefd d Zdefd d Z defd dZ de dedddededdddfddZ dS) ASTIdentifier identifierrzNcCs&|dusJt|dksJ||_dSNr)lenrDr2rDr3r3r4r5Vs  zASTIdentifier.__init__cCs|jddkS)Nr@rDr8r3r3r4is_anon[zASTIdentifier.is_anonversioncCs|r |dkr t|dkr|jdkrdS|jS|jdkr dS|jddkr)d S|r=d t|jd|jddfStt|j|jS) Nsize_trstdStrrD0zUt%d_%s)rJr)rDrFr>r2rLr3r3r4get_id^s   zASTIdentifier.get_idcC|jSr1rIr8r3r3r4r9szASTIdentifier.__str__cCs|rdS|jS)N [anonymous])rJrDr8r3r3r4get_display_stringvz ASTIdentifier.get_display_stringsignodemodeenvrprefix templateArgsr,r-c CsTt||rtjdd}nt|j|j}|dkr=||j|}tjddd|ddd} || d<| |7} || 7}dS|d krOt} | |7} || 7}dS|d krY||7}dS|d krj|d d ||7}dS|dkrt |dksvJt |dks~J|rJd|j}tjddd|ddd} || d<| |7} || 7}dSt d|)NrW)textmarkTypercpprD refdomainreftype reftargetmodname classnamecpp:parent_key lastIsName noneIsNameparamclassesz sig-paramudlr operator""Unknown description mode: %s) r6rJr desc_sig_namerDrget_lookup_key desc_nameappendrF Exception) r2rZr[r\r]r^r,node targetTextpnodenameNoder3r3r4describe_signatureysJ          z ASTIdentifier.describe_signature) r;r<r=r>r5rErJrhrTr9rXrryr3r3r3r4rCUsrCc @s~eZdZdeedfddddfddZdefd d Zd ede fd d Z de de fddZ de de ddde ddddf ddZdS)ASTNestedNameElement identOrOp ASTOperatorr^ASTTemplateArgsrzNcC||_||_dSr1r{r^)r2r{r^r3r3r4r5 zASTNestedNameElement.__init__cCdSNFr3r8r3r3r4 is_operatorz ASTNestedNameElement.is_operatorrLcCs&|j|}|jr||j|7}|Sr1)r{rTr^r2rLresr3r3r4rTs zASTNestedNameElement.get_id transformcC"||j}|jr|||j7}|Sr1rr2rrr3r3r4 _stringify zASTNestedNameElement._stringifyrZr[r\rr]r,r-cCsR|jdur t|jnd}|j|||||||jdur'|j|d||dSdS)Nrr`)r^r>r{ry)r2rZr[r\r]r,tArgsr3r3r4rys  z'ASTNestedNameElement.describe_signature)r;r<r=r rCr5rErrhr>rTr*rrryr3r3r3r4rzs$  rzc @seZdZdeedeededdfddZeddd Zde fd d Z dd e de de fddZ de de fddZdede ddddddf ddZdS) ASTNestedNamenames templatesrootedrzNcCs>t|dksJ||_||_t|jt|jksJ||_dSrE)rFrrr)r2rrrr3r3r4r5s  zASTNestedName.__init__cCs|Sr1r3r8r3r3r4namezASTNestedName.namecCs,d}|jD]}|r q|jr|d7}q|SNrrN)rrr^)r2countrr3r3r4 num_templatess zASTNestedName.num_templatesrrL modifierscsdkrt|}|tvrt|Sdfdd|jDSg}t|jdks,t|dkr1|d|||jD] }||q9t|jdksQt|dkrV|dd|S) NrN::c3|]}|VqdSr1rT).0rrLr3r4 z'ASTNestedName.get_id..rNEr)r>_id_shorthands_v1joinrrFrsrT)r2rLrttrrr3rr4rTs     zASTNestedName.get_idrcCshg}|jr |dtt|jD]}|j|}|j|r'|d||q|||qd|S)Nrz template r)rrsrangerFrrr)r2rrrrr3r3r4rs    zASTNestedName._stringifyrZr[r\rr,r-cCst||dkr:|jrJdtt|jD]!}|dkr Jd|j|}|j|r.Jd||||d |qdS|d kre|jrGJt |t|jd ksPJ|jdrWJ|jd|d |d |dS|d ksr|d ksr|dkrig}|d kr|dus~J|j j dur|j j j}d}d } d } d} |d kr|jddn|j} |} |d krt } |jr| d7} |d krt| dkr|t dd7}n| t dd7} tt| D]Z}| |}|j|}| s| t dd7} | d7} |r| t dd7} | t 7} d} t |}|d kr'|jr|t|kr| t ||7} |d 7}|| d || | || |7} q|d krgt|jd krE| t dd7} || 7}|jdrY|t dd7}|t 7}|jd|||d |dSdStd|)NrjFzCan this happen?rrz::blahr rrkrNr`rimarkNameTro)r6rr TextrrFrrryr>r.templatePrefixr desc_addnamedesc_sig_punctuationdesc_sig_keyworddesc_sig_spacer^rt)r2rZr[r\r,rrtemplateParamsiTemplateParamstemplateParamsPrefixr]firstrdestnnertxt_nner3r3r4rys               z ASTNestedName.describe_signature)rzr)r)r;r<r=rrzrEr5propertyrrhrr>rTr*rrryr3r3r3r4rs(     rc @<eZdZdedefddZdededdd d dd f d d Zd S) ASTExpressionrLrzcC tt|r1NotImplementedErrorreprrSr3r3r4rTJ zASTExpression.get_idrZr[r\rr,r-NcCrr1rr2rZr[r\r,r3r3r4ryM z ASTExpression.describe_signaturer;r<r=rhr>rTrryr3r3r3r4rI rc@r?) ASTLiteralNrAr3r3r3r4rUrBrc @NeZdZdedefddZdedefddZded ed d d d ddf ddZ dS)ASTPointerLiteralrrzcCrNrpr3r2rr3r3r4rZrzASTPointerLiteral._stringifyrLcCr)NLDnEr3rSr3r3r4rT]rzASTPointerLiteral.get_idrZr[r\rr,r-NcC|tdd7}dSrrrrr3r3r4ry`z$ASTPointerLiteral.describe_signature r;r<r=r*r>rrhrTrryr3r3r3r4rY rc @`eZdZdeddfddZdedefddZd edefd d Z d e d eddddddf ddZ dS)ASTBooleanLiteralvaluerzNcC ||_dSr1rr2rr3r3r4r5f zASTBooleanLiteral.__init__rcC|jrdSdS)Nrrarrr3r3r4rizASTBooleanLiteral._stringifyrLcCr)NL1EL0ErrSr3r3r4rTorzASTBooleanLiteral.get_idrZr[r\rr,r-cCs|tt|t|7}dSr1)rrr>rr3r3r4ryuz$ASTBooleanLiteral.describe_signature) r;r<r=rEr5r*r>rrhrTrryr3r3r3r4res rc @`eZdZdeddfddZdedefddZd edefd d Zd e d eddddddf ddZ dS)ASTNumberLiteraldatarzNcCrr1rr2rr3r3r4r5{rzASTNumberLiteral.__init__rcCrUr1rrr3r3r4r~rVzASTNumberLiteral._stringifyrLcCsd|jddS)NzL%sE'r)rreplacerSr3r3r4rTzASTNumberLiteral.get_idrZr[r\rr,r-cC|t|j|j7}dSr1)rdesc_sig_literal_numberrrr3r3r4ryz#ASTNumberLiteral.describe_signature r;r<r=r>r5r*rrhrTrryr3r3r3r4rz rc @r)ASTStringLiteralrrzNcCrr1rrr3r3r4r5rzASTStringLiteral.__init__rcCrUr1rrr3r3r4rrVzASTStringLiteral._stringifyrLcCsdt|jdS)NzLA%d_KcE)rFrrSr3r3r4rTrzASTStringLiteral.get_idrZr[r\rr,r-cCrr1)rdesc_sig_literal_stringrrr3r3r4ryrz#ASTStringLiteral.describe_signaturerr3r3r3r4rrrc @sdeZdZdededdfddZdedefdd Zd edefd d Zd e deddddddf ddZ dS)ASTCharLiteralr]rrzNcCsR||_||_|tvs Jt||_|d}t|dkr%t||_dSt |)Nzunicode-escaperN) r]rr&typeencodedecoderFordrr+)r2r]rdecodedr3r3r4r5s   zASTCharLiteral.__init__rcCs,|jdur d|jdS|jd|jdSNr)r]rrr3r3r4rs zASTCharLiteral._stringifyrLcCs|jt|jSr1)rr>rrSr3r3r4rTszASTCharLiteral.get_idrZr[r\rr,r-cCs@|jdur|t|j|j7}d|jd}|t||7}dSr)r]rrrdesc_sig_literal_char)r2rZr[r\r,txtr3r3r4rys z!ASTCharLiteral.describe_signaturerr3r3r3r4rs  rc @s`eZdZdedefddZdedefddZd e defd d Z d e d eddddddf ddZ dS)ASTUserDefinedLiteralliteralidentcCr~r1rr)r2rrr3r3r4r5 zASTUserDefinedLiteral.__init__rrzcC||j||jSr1rrr3r3r4rz ASTUserDefinedLiteral._stringifyrLcCsd|j||j|S)Nz clL_Zli{}E{}E)formatrrTrrSr3r3r4rTrzASTUserDefinedLiteral.get_idrZr[r\rr,r-NcCs,|j|||||j|d|dd|dS)Nrmr)rryrrr3r3r4rysz(ASTUserDefinedLiteral.describe_signature) r;r<r=rrCr5r*r>rrhrTrryr3r3r3r4rs rc @r)ASTThisLiteralrrzcCrNrr3rr3r3r4rrzASTThisLiteral._stringifyrLcCr)NfpTr3rSr3r3r4rTrzASTThisLiteral.get_idrZr[r\rr,r-NcCrrrrr3r3r4ryrz!ASTThisLiteral.describe_signaturerr3r3r3r4rrrc @sheZdZdedededdfddZdedefd d Zd edefd d Z de deddddddf ddZ dS) ASTFoldExprleftExprop rightExprrzNcCs*|dus |dus J||_||_||_dSr1)rrr)r2rrrr3r3r4r5s zASTFoldExpr.__init__rcCsdg}|jr|||j|d||j|d|d|jr>|d||j|d|||j|dd|S)N(r...)r)rrsrrrrr3r3r4rs         zASTFoldExpr._stringifyrLcCs|dksJ|dkrt|Sg}|jdur|dn|jdur&|dn|d|t|j|jr?||j||jrK||j|d|S)NrMflfrfLr)r>rrsr_id_operator_v2rrTrrr3r3r4rTs       zASTFoldExpr.get_idrZr[r\rr,r-cCs|tdd7}|jr*|j|||||t7}|t|j|j7}|t7}|tdd7}|jrT|t7}|t|j|j7}|t7}|j|||||tdd7}dS)Nrrr)rrrryrdesc_sig_operatorrrrr3r3r4rys    zASTFoldExpr.describe_signature) r;r<r=rr>r5r*rrhrTrryr3r3r3r4rs"  rc @\eZdZdefddZdedefddZdedefd d Z d e d ed dddddf ddZ dS) ASTParenExprexprcCrr1r r2r r3r3r4r5rzASTParenExpr.__init__rrzcCd||jdSNrrr rr3r3r4rrYzASTParenExpr._stringifyrLcC |j|Sr1r rTrSr3r3r4rTrzASTParenExpr.get_idrZr[r\rr,r-NcC6|tdd7}|j|||||tdd7}dSr rrr ryrr3r3r4ry zASTParenExpr.describe_signature r;r<r=rr5r*r>rrhrTrryr3r3r3r4r rc @r)ASTIdExpressionrcCrr1rr2rr3r3r4r5( zASTIdExpression.__init__rrzcC ||jSr1rrr3r3r4r,rzASTIdExpression._stringifyrLcCrr1rrTrSr3r3r4rT/rzASTIdExpression.get_idrZr[r\rr,r-NcC|j||||dSr1)rryrr3r3r4ry2z"ASTIdExpression.describe_signature r;r<r=rr5r*r>rrhrTrryr3r3r3r4r's rc @s@eZdZdededefddZdededd d d dd f d dZd S) ASTPostfixOpidPrefixrLrzcCrr1rr2rrLr3r3r4rT;rzASTPostfixOp.get_idrZr[r\rr,r-NcCrr1rrr3r3r4ry>rzASTPostfixOp.describe_signature)r;r<r=r>rhrTrryr3r3r3r4r:s rc @`eZdZdefddZdedefddZded edefd d Z d e d eddddddf ddZ dS)ASTPostfixArrayr cCrr1r r r3r3r4r5DrzASTPostfixArray.__init__rrzcCr N[]r rr3r3r4rGrYzASTPostfixArray._stringifyrrLcCd||j|S)Nrrr r3r3r4rTJrzASTPostfixArray.get_idrZr[r\rr,r-NcCrr#rrr3r3r4ryMrz"ASTPostfixArray.describe_signaturerr3r3r3r4r"C r"c @r!)ASTPostfixMemberrcCrr1rrr3r3r4r5UrzASTPostfixMember.__init__rrzcCd||jS)N.rrr3r3r4rXrKzASTPostfixMember._stringifyrrLcCr&)Ndtrr r3r3r4rT[rzASTPostfixMember.get_idrZr[r\rr,r-NcC&|tdd7}|j|d||dS)Nr*rj)rrrryrr3r3r4ry^z#ASTPostfixMember.describe_signaturerr3r3r3r4r(Tr'r(c @r!)ASTPostfixMemberOfPointerrcCrr1rrr3r3r4r5erz"ASTPostfixMemberOfPointer.__init__rrzcCr))Nrrrr3r3r4rhrKz$ASTPostfixMemberOfPointer._stringifyrrLcCr&)Nrrr r3r3r4rTkrz ASTPostfixMemberOfPointer.get_idrZr[r\rr,r-NcCr,)Nrrj)rrrryrr3r3r4rynr-z,ASTPostfixMemberOfPointer.describe_signaturerr3r3r3r4r.dr'r.c @ReZdZdedefddZdededefddZd ed ed d d dddf ddZ dS) ASTPostfixIncrrzcCrNrr3rr3r3r4rurzASTPostfixInc._stringifyrrLcCd|S)Nrr3r r3r3r4rTxzASTPostfixInc.get_idrZr[r\rr,r-NcCrr1rrrr3r3r4ry{rz ASTPostfixInc.describe_signaturerr3r3r3r4r0t r0c @r/) ASTPostfixDecrrzcCrNrr3rr3r3r4rrzASTPostfixDec._stringifyrrLcCr2)Nrr3r r3r3r4rTr3zASTPostfixDec.get_idrZr[r\rr,r-NcCrr7r4rr3r3r4ryrz ASTPostfixDec.describe_signaturerr3r3r3r4r6r5r6c @sheZdZdedddfddZdedefdd Zd ed edefd d Z de deddddddf ddZ dS)ASTPostfixCallExprlstASTParenExprListASTBracedInitListrzNcCrr1r9)r2r9r3r3r4r5rzASTPostfixCallExpr.__init__rcCrr1r=rr3r3r4rrzASTPostfixCallExpr._stringifyrrLcCs:d|g}|jjD] }|||q|dd|S)Nrrr)r9exprsrsrTr)r2rrLrrr3r3r4rTs    zASTPostfixCallExpr.get_idrZr[r\rr,r-cCrr1)r9ryrr3r3r4ryrz%ASTPostfixCallExpr.describe_signature) r;r<r=r r5r*r>rrhrTrryr3r3r3r4r8s r8c @sdeZdZdddeefddZdedefdd Zd e defd d Z d e deddddddf ddZ dS)ASTPostfixExprr]ASTType postFixescCr~r1)r]rA)r2r]rAr3r3r4r5rzASTPostfixExpr.__init__rrzcCs0||jg}|jD] }|||q d|SNr)r]rArsr)r2rrpr3r3r4rs   zASTPostfixExpr._stringifyrLcCs(|j|}|jD]}|||}q |Sr1)r]rTrA)r2rLidrCr3r3r4rTs  zASTPostfixExpr.get_idrZr[r\rr,r-NcCs2|j|||||jD] }|||||q dSr1)r]ryrA)r2rZr[r\r,rCr3r3r4rys z!ASTPostfixExpr.describe_signature) r;r<r=rrr5r*r>rrhrTrryr3r3r3r4r?s r?c @sdeZdZdedddefddZdedefd d Zd edefd d Z de deddddddf ddZ dS)ASTExplicitCastr typr@r cCs"|tvsJ||_||_||_dSr1)_id_explicit_castr rFr )r2r rFr r3r3r4r5s  zASTExplicitCast.__init__rrzcCsP|jg}|d|||j|d|||j|dd|S)Nrz>(rr)r rsrFr rrr3r3r4rs    zASTExplicitCast._stringifyrLcCs"t|j|j||j|Sr1)rGr rFrTr rSr3r3r4rTs   zASTExplicitCast.get_idrZr[r\rr,r-NcCs||t|j|j7}|tdd7}|j|||||tdd7}|tdd7}|j|||||tdd7}dS)Nrrrr)rrr rrFryr rr3r3r4rysz"ASTExplicitCast.describe_signature r;r<r=r>rr5r*rrhrTrryr3r3r3r4rEs rEc @sheZdZdedefdefddZdedefdd Z d e defd d Z d e deddddddf ddZ dS) ASTTypeId typeOrExprr@isTypecCr~r1)rJrK)r2rJrKr3r3r4r5rzASTTypeId.__init__rrzcCr )Nztypeid(r)rJrr3r3r4rrYzASTTypeId._stringifyrLcCs|jrdnd}||j|S)Ntite)rKrJrT)r2rLr]r3r3r4rTszASTTypeId.get_idrZr[r\rr,r-NcCF|tdd7}|tdd7}|j|||||tdd7}dS)Nrrr)rrrrJryrr3r3r4ryzASTTypeId.describe_signature)r;r<r=r rrEr5r*r>rrhrTrryr3r3r3r4rIs rIc @s`eZdZdedefddZdedefddZd edefd d Z d e d eddddddf ddZ dS)ASTUnaryOpExprrr cCr~r1rr )r2rr r3r3r4r5rzASTUnaryOpExpr.__init__rrzcCs2|jddvr|jd||jS|j||jS)NrcnrrQrr3r3r4rszASTUnaryOpExpr._stringifyrLcCst|j|j|Sr1)_id_operator_unary_v2rr rTrSr3r3r4rTszASTUnaryOpExpr.get_idrZr[r\rr,r-NcCsZ|jddvr|t|j|j7}|t7}n |t|j|j7}|j||||dS)NrrR)rrrrrr ryrr3r3r4rys z!ASTUnaryOpExpr.describe_signaturerHr3r3r3r4rPs rPc @r)ASTSizeofParamPackrDcCrr1rIrGr3r3r4r5rzASTSizeofParamPack.__init__rrzcCr )Nz sizeof...(rrIrr3r3r4r rYzASTSizeofParamPack._stringifyrLcCd|j|S)NsZ)rDrTrSr3r3r4rT r:zASTSizeofParamPack.get_idrZr[r\rr,r-NcCs\|tdd7}|tdd7}|tdd7}|jj|d||ddd|tdd7}dS)Nr}rrr`r)r,r]r^r)rrrrDryrr3r3r4rys z%ASTSizeofParamPack.describe_signature) r;r<r=rCr5r*r>rrhrTrryr3r3r3r4rTrrTc @XeZdZdddZdedefddZd edefd d Zd e d eddddddf ddZ dS) ASTSizeofTyperFr@cCrr1rFr2rFr3r3r4r5rzASTSizeofType.__init__rrzcCr )Nzsizeof(rrYrr3r3r4rrYzASTSizeofType._stringifyrLcCrU)NstrFrTrSr3r3r4rT!r:zASTSizeofType.get_idrZr[r\rr,r-NcCrN)Nr}rrrrrrFryrr3r3r4ry$rOz ASTSizeofType.describe_signaturerFr@ r;r<r=r5r*r>rrhrTrryr3r3r3r4rX  rXc @r) ASTSizeofExprr cCrr1r r r3r3r4r5-rzASTSizeofExpr.__init__rrzcCr))Nzsizeof r rr3r3r4r0rKzASTSizeofExpr._stringifyrLcCrU)NszrrSr3r3r4rT3r:zASTSizeofExpr.get_idrZr[r\rr,r-NcC2|tdd7}|t7}|j||||dS)Nr}rrrr ryrr3r3r4ry6 z ASTSizeofExpr.describe_signaturerr3r3r3r4ra,rrac @rW)ASTAlignofExprrFr@cCrr1rYrZr3r3r4r5>rzASTAlignofExpr.__init__rrzcCr )Nzalignof(rrYrr3r3r4rArYzASTAlignofExpr._stringifyrLcCrU)Natr\rSr3r3r4rTDr:zASTAlignofExpr.get_idrZr[r\rr,r-NcCrN)Nr>rrr]rr3r3r4ryGrOz!ASTAlignofExpr.describe_signaturer^r_r3r3r3r4rf=r`rfc @r)ASTNoexceptExprr cCrr1r r r3r3r4r5PrzASTNoexceptExpr.__init__rrzcCr )N noexcept(rr rr3r3r4rSrYzASTNoexceptExpr._stringifyrLcCrU)NnxrrSr3r3r4rTVr:zASTNoexceptExpr.get_idrZr[r\rr,r-NcCrN)Nrmrrrrrr ryrr3r3r4ryYrOz"ASTNoexceptExpr.describe_signaturerr3r3r3r4rhOrrhc @speZdZdededddedddf d d Zd edefd d Zde defddZ de deddddddf ddZ dS) ASTNewExprr isNewTypeIdrFr@initListr:rzNcC||_||_||_||_dSr1)rrmrFrn)r2rrmrFrnr3r3r4r5b zASTNewExpr.__init__rcCs^g}|jr |d|d|jr|||jnJ|jdur*|||jd|S)Nrznew Fr)rrsrmrFrnrrr3r3r4ris    zASTNewExpr._stringifyrLcCsTdg}|d||j||jdur ||j|n|dd|S)Nrrrr)rsrFrTrnrrr3r3r4rTws    zASTNewExpr.get_idrZr[r\rr,r-cCst|jr |tdd7}|tdd7}|t7}|jr&|j||||nJ|jdur8|j||||dSdS)Nrrl) rrrrrrmrFryrnrr3r3r4rys  zASTNewExpr.describe_signature) r;r<r=rEr r5r*r>rrhrTrryr3r3r3r4rlas  rlc @sdeZdZdededefddZdedefdd Zd e defd d Z d e deddddddf ddZ dS) ASTDeleteExprrarrayr cC||_||_||_dSr1)rrrr )r2rrrr r3r3r4r5 zASTDeleteExpr.__init__rrzcCsHg}|jr |d|d|jr|d|||jd|S)Nrzdelete z[] r)rrsrrr rrr3r3r4rs    zASTDeleteExpr._stringifyrLcCs |jrd}nd}||j|S)Nrr)rrr rTr2rLrDr3r3r4rTszASTDeleteExpr.get_idrZr[r\rr,r-NcCsj|jr |tdd7}|tdd7}|t7}|jr*|tdd7}|t7}|j||||dS)NrrXr)rrrrrrrr ryrr3r3r4rys  z ASTDeleteExpr.describe_signature) r;r<r=rErr5r*r>rrhrTrryr3r3r3r4rqs rqc @s`eZdZdddefddZdedefdd Zd edefd d Z d e deddddddf ddZ dS) ASTCastExprrFr@r cCr~r1)rFr )r2rFr r3r3r4r5rzASTCastExpr.__init__rrzcC:dg}|||j|d|||jd|SNrrr)rsrFr rrr3r3r4r   zASTCastExpr._stringifyrLcCsd|j||j|S)Ncv)rFrTr rSr3r3r4rTszASTCastExpr.get_idrZr[r\rr,r-NcCsH|tdd7}|j|||||tdd7}|j||||dSr )rrrFryr rr3r3r4ryszASTCastExpr.describe_signaturerr3r3r3r4rvs rvc @sheZdZdeedeefddZdedefddZd e defd d Z d e d eddddddf ddZ dS) ASTBinOpExprr>opscC8t|dksJt|t|dksJ||_||_dSrrFr>r|r2r>r|r3r3r4r5 zASTBinOpExpr.__init__rrzcCtg}|||jdtdt|jD] }|d||j|d|d|||j|qd|SNrrNrrrsr>rrFr|rr2rrrr3r3r4r   zASTBinOpExpr._stringifyrLcCsn|dksJg}tt|jD]}|t|j|||j||q||jd|d|S)NrrrrrFr|rsrr>rTrr2rLrrr3r3r4rTs  zASTBinOpExpr.get_idrZr[r\rr,r-NcC|jd||||tdt|jD]E}|t7}|j|d}t|dtdkr?t|dtdkr?|t||7}n|t ||7}|t7}|j|||||qdSNrrNrz r>ryrrFrrr|rrrr2rZr[r\r,rrr3r3r4ry ( zASTBinOpExpr.describe_signature) r;r<r=rrr>r5r*rrhrTrryr3r3r3r4r{s r{c @speZdZdeeedfdeddfddZdede fdd Z d e de fd d Z d e de ddddddf ddZdS)r<r> trailingCommarzNcCr~r1)r>rr2r>rr3r3r4r5rzASTBracedInitList.__init__rLcddfdd|jDS)Nzil%sErc3rr1rrrrr3r4rrz+ASTBracedInitList.get_id..rr>rSr3rr4rTzASTBracedInitList.get_idrcs4fdd|jD}|jrdnd}dd||fS)Ncg|]}|qSr3r3rrr3r4 z0ASTBracedInitList._stringify..rrz{%s%s}, )r>rr)r2rr>rr3rr4rszASTBracedInitList._stringifyrZr[r\rr,r-cCst||tdd7}d}|jD]}|s$|tdd7}|t7}nd}|||||q|jr:|tdd7}|tdd7}dS)N{TrF})r6rrr>rryrr2rZr[r\r,rrr3r3r4rys z$ASTBracedInitList.describe_signature)r;r<r=rr rrEr5rhr>rTr*rrryr3r3r3r4r<s  r<c @speZdZdeeeefdeefddZde defddZ d e defd d Z d e d eddddddf ddZdS)ASTAssignmentExprr>r|cCr}rr~rr3r3r4r5rzASTAssignmentExpr.__init__rrzcCrrrrr3r3r4rrzASTAssignmentExpr._stringifyrLcCsbg}tt|jD]}|t|j|||j||q ||jd|d|S)Nrrrrr3r3r4rT's  zASTAssignmentExpr.get_idrZr[r\rr,r-NcCrrrrr3r3r4ry/rz$ASTAssignmentExpr.describe_signature)r;r<r=rr rr<r>r5r*rrhrTrryr3r3r3r4rs" rc @s`eZdZdeefddZdedefddZde defd d Z d e d ed dddddf ddZ dS) ASTCommaExprr>cCst|dksJ||_dSrE)rFr>r2r>r3r3r4r5>s zASTCommaExpr.__init__rrzcdfdd|jDS)Nrc3|]}|VqdSr1r3rrr3r4rCz*ASTCommaExpr._stringify..rrr3rr4rBzASTCommaExpr._stringifyrLcCsdtd}g}tt|jdD]}||||j||q||jd|d|S)NrrNrr)rrrFr>rsrTr)r2rLid_rrr3r3r4rTEs  zASTCommaExpr.get_idrZr[r\rr,r-NcCsb|jd||||tdt|jD]}|tdd7}|t7}|j|||||qdS)NrrNr)r>ryrrFrrr)r2rZr[r\r,rr3r3r4ryNs  zASTCommaExpr.describe_signature) r;r<r=rrr5r*r>rrhrTrryr3r3r3r4r=s rc @s\eZdZdefddZdedefddZdedefd d Zd e d ed dddddf ddZ dS)ASTFallbackExprr cCrr1r r r3r3r4r5XrzASTFallbackExpr.__init__rrzcCrUr1r rr3r3r4r[rVzASTFallbackExpr._stringifyrLcCs t|jSr1)r>r rSr3r3r4rT^rzASTFallbackExpr.get_idrZr[r\rr,r-NcCrr1)r rr rr3r3r4ryarz"ASTFallbackExpr.describe_signaturerr3r3r3r4rWrrc@s~eZdZdefddZdefddZdedefddZd e d e d d d dddf ddZ d e ded d deded dddfddZ dS)r|rzcCrrr3r8r3r3r4rJnrzASTOperator.is_anoncCrNTr3r8r3r3r4rqrzASTOperator.is_operatorrLcCtr1rrSr3r3r4rTtrVzASTOperator.get_idrZ identnoder\rr,r-NcCr)zARender the prefix into signode, and the last part into identnode.rr2rZrr\r,r3r3r4_describe_identifierwsz ASTOperator._describe_identifierr[r]r^c Cst||dkrt}|||||||7}dS|dkrU|t||}tjddd|ddd} || d<t} ||| ||| } | t| | 7} || 7}dSt } || | |||| 7}dS)Nrir`rrarDrbrh) r6rrrrr>rrqr rastextr) r2rZr[r\r]r^r,mainNamervrw containerraddNamer3r3r4ry|s*    zASTOperator.describe_signature) r;r<r=rErJrrhr>rTrrryr3r3r3r4r|ms,  r|c @s`eZdZdeddfddZdedefddZd edefd d Zd e d e ddddddf ddZ dS)ASTOperatorBuildInrrzNcCrr1r)r2rr3r3r4r5rzASTOperatorBuildIn.__init__rLcCsD|dkrt}|j|vrtnt}|j|vrtd|j||jS)NrNzBInternal error: Built-in operator "%s" can not be mapped to an id.)_id_operator_v1rr)rrt)r2rLidsr3r3r4rTs   zASTOperatorBuildIn.get_idrcCs,|jdvs |jddvrd|jSd|jS)NrlrrXrrabcnox operator rqrrr3r3r4rs  zASTOperatorBuildIn._stringifyrZrr\rr,r-cCsL|tdd7}|jdvs|jddvr|t7}|t|j|j7}dS)Nrqrrr)rrrrrrr3r3r4rs z'ASTOperatorBuildIn._describe_identifier) r;r<r=r>r5rhrTr*rrrr3r3r3r4rs rc @s`eZdZdeddfddZdedefddZd edefd d Z d e d e ddddddf ddZ dS)ASTOperatorLiteralrDrzNcCrr1rIrGr3r3r4r5rzASTOperatorLiteral.__init__rLcCs|dkrtd|j|S)NrNli)r)rDrTrSr3r3r4rTszASTOperatorLiteral.get_idrcCr))NrnrIrr3r3r4rrKzASTOperatorLiteral._stringifyrZrr\rr,r-cCs:|tdd7}|tdd7}|j|d|dd|dS)Nrq""r`r)rrrrDryrr3r3r4rsz'ASTOperatorLiteral._describe_identifier) r;r<r=rCr5rhr>rTr*rrrr3r3r3r4rs rc @sfeZdZdddZdedefdd Zd edefd d Zdefd dZ de de ddddddf ddZ dS)ASTOperatorTyperr@rzNcCrr1)r)r2rr3r3r4r5rzASTOperatorType.__init__rLcCs(|dkr d|j|Sd|j|S)NrNzcastto-%s-operatorrz)rrTrSr3r3r4rTzASTOperatorType.get_idrcCsdd||jgS)Nrr)rrrr3r3r4rrzASTOperatorType._stringifycCst|Sr1r>r8r3r3r4get_name_no_templater3z$ASTOperatorType.get_name_no_templaterZrr\rr,r-cCs2|tdd7}|t7}|j|d||dS)Nrqr`)rrrrryrr3r3r4rrez$ASTOperatorType._describe_identifier)rr@rzN) r;r<r=r5rhr>rTr*rrrrr3r3r3r4rs  rc @r)ASTTemplateArgConstantrrzNcCrr1rrr3r3r4r5rzASTTemplateArgConstant.__init__rcCrr1rrr3r3r4rrz!ASTTemplateArgConstant._stringifyrLcCsD|dkr t|ddS|dkrdt|dSd|j|dS)NrNrrrXr)r>rrrTrSr3r3r4rTs zASTTemplateArgConstant.get_idrZr[r\rr,r-cCst||j||||dSr1)r6rryrr3r3r4rysz)ASTTemplateArgConstant.describe_signaturerr3r3r3r4rs rc @speZdZdeedefdeddfddZdede fd d Z d e de fd d Z de de ddddddf ddZdS)r}argsr@ packExpansionrzNcCs|dusJ||_||_dSr1)rr)r2rrr3r3r4r5s  zASTTemplateArgs.__init__rLcsdkr%g}|d|dfdd|jD|dd|Sg}|dt|jdkr`|jdd D] }||q:|jrM|d ||jd |jr`|d |d d|S) NrN:r*c3rr1rrrrr3r4rrz)ASTTemplateArgs.get_id..rIrrJr)rsrrrFrTr)r2rLrrr3rr4rTs$         zASTTemplateArgs.get_idrcs4dfdd|jD}|jr|d7}d|dS)Nrc3rr1r3rrr3r4rrz-ASTTemplateArgs._stringify..rrr)rrrrr3rr4rs zASTTemplateArgs._stringifyrZr[r\rr,r-cCst||tdd7}d}|jD]}|s#|tdd7}|t7}d}|j|d||dq|jr:|tdd7}|tdd7}dS) NrTrFr`r,rr)r6rrrrryr)r2rZr[r\r,rrr3r3r4rys  z"ASTTemplateArgs.describe_signature)r;r<r=rr rrEr5rhr>rTr*rrryr3r3r3r4r}s  r}c @r)ASTTrailingTypeSpecrLrzcCrr1rrSr3r3r4rT-rzASTTrailingTypeSpec.get_idrZr[r\rr,r-NcCrr1rrr3r3r4ry0rz&ASTTrailingTypeSpec.describe_signaturerr3r3r3r4r,rrc @sleZdZdeedeeddfddZdedefdd Zd edefd d Z d e deddddddf ddZ dS)ASTTrailingTypeSpecFundamentalr canonNamesrzNcCs<t|dksJt|t|ksJ||f||_||_dSrE)rFrr)r2rrr3r3r4r56s z'ASTTrailingTypeSpecFundamental.__init__rcCs d|jS)Nr)rrrr3r3r4r=rz)ASTTrailingTypeSpecFundamental._stringifyrLcCsl|dkr"g}|jD]}|tvr|t|q ||q d|Sd|j}|tvr2td|t|S)NrNrrzSemi-internal error: Fundamental type "%s" can not be mapped to an ID. Is it a true fundamental type? If not so, the parser should have rejected it.)r_id_fundamental_v1rsr_id_fundamental_v2rt)r2rLrrrr3r3r4rT@s    z%ASTTrailingTypeSpecFundamental.get_idrZr[r\rr,r-cCs:d}|jD]}|s|t7}nd}|t||7}qdS)NTF)rrrdesc_sig_keyword_type)r2rZr[r\r,rrr3r3r4ryRs z1ASTTrailingTypeSpecFundamental.describe_signature) r;r<r=rr>r5r*rrhrTrryr3r3r3r4r5s rc @r)ASTTrailingTypeSpecDecltypeAutorrzcCr)Nrr3rr3r3r4r^rz*ASTTrailingTypeSpecDecltypeAuto._stringifyrLcCs|dkrtdS)NrNr)r)rSr3r3r4rTasz&ASTTrailingTypeSpecDecltypeAuto.get_idrZr[r\rr,r-NcCsD|tdd7}|tdd7}|tdd7}|tdd7}dS)NrVrrBr)rrrrr3r3r4ryfsz2ASTTrailingTypeSpecDecltypeAuto.describe_signaturerr3r3r3r4r] rc @r)ASTTrailingTypeSpecDecltyper cCrr1r r r3r3r4r5orz$ASTTrailingTypeSpecDecltype.__init__rrzcCr )Nz decltype(rr rr3r3r4rrrYz&ASTTrailingTypeSpecDecltype._stringifyrLcCs"|dkrtd|j|dS)NrNDTr)r)r rTrSr3r3r4rTusz"ASTTrailingTypeSpecDecltype.get_idrZr[r\rr,r-NcCrN)NrVrrrkrr3r3r4ryzrOz.ASTTrailingTypeSpecDecltype.describe_signaturerr3r3r3r4rns rc @s~eZdZdededeeddfddZedefdd Zd e defd d Z d e defddZ de deddddddf ddZdS)ASTTrailingTypeSpecNamer] nestedNameplaceholderTyperzNcCrsr1)r]rr)r2r]rrr3r3r4r5 z ASTTrailingTypeSpecName.__init__cCrUr1rr8r3r3r4rzASTTrailingTypeSpecName.namerLcCrr1)rrTrSr3r3r4rTrzASTTrailingTypeSpecName.get_idrcCsZg}|jr||j|d|||j|jdur(|d||jd|S)Nrr)r]rsrrrrr3r3r4rs      z"ASTTrailingTypeSpecName._stringifyrZr[r\rr,r-cCs|jr|t|j|j7}|t7}|jj||||d|jdurc|t7}|jdkr7|tdd7}dS|jdkr^|tdd7}|tdd7}|tdd7}|tdd7}dSJ|jdS)NrrBrrVrr)r]rrrrryrrrr3r3r4rys      z*ASTTrailingTypeSpecName.describe_signature)r;r<r=r>rrr5rrrhrTr*rrryr3r3r3r4rs"   rc @sveZdZ ddeddeddfddZdd ed ed d defd dZde defddZ de deddd d ddf ddZ dS)ASTFunctionParameterFarg)ASTTypeWithInit'ASTTemplateParamConstrainedTypeWithInitellipsisrzNcCr~r1)rr)r2rrr3r3r4r5s zASTFunctionParameter.__init__rL objectTyper,r-cCs,|r |jjj|ddS|jrdS|j|S)NFprefixedr)parentr.rTrrr2rLrr,r3r3r4rTs  zASTFunctionParameter.get_idrcCs|jrdS||jSNr)rrrr3r3r4rs zASTFunctionParameter._stringifyrZr[r\rcCs:t||jr|tdd7}dS|jj||||ddS)Nrr)r6rrrrryrr3r3r4rysz'ASTFunctionParameter.describe_signatureFNN) r;r<r=r rEr5rhr>rTr*rrryr3r3r3r4rs    rc @sNeZdZdeefddZdedefddZde d ed d d d ddf ddZ dS)ASTNoexceptSpecr cCrr1r r r3r3r4r5rzASTNoexceptSpec.__init__rrzcC|jr d||jdSdS)Nrirrmr rr3r3r4rszASTNoexceptSpec._stringifyrZr[r\rr,r-NcCsP|tdd7}|jr&|tdd7}|j|d|||tdd7}dSdS)Nrmrr`rrrr rryrr3r3r4rys z"ASTNoexceptSpec.describe_signature r;r<r=rrr5r*r>rrryr3r3r3r4rrrc@seZdZdeedededeededdded ed ee d eed d fddZ e d eefddZ de d efddZde d efddZded efddZdededdddd d f d d!Zd S)"ASTParametersQualifiersrrrPrefQual exceptionSpectrailingReturnr@overridefinalattrs initializerrzNc Cs@||_||_||_||_||_||_||_||_| |_| |_ dSr1) rrrPrrrrrrr) r2rrrPrrrrrrrr3r3r4r5s z ASTParametersQualifiers.__init__cCrUr1rr8r3r3r4function_paramsrz'ASTParametersQualifiers.function_paramsrLcCslg}|jr |d|jr|dkr|dn|d|jdkr'|dn |jdkr1|dd |S) NVrNrKrOrRr)rrsrPrrrr3r3r4get_modifiers_ids        z(ASTParametersQualifiers.get_modifiers_idcsddkrt|jdkr dSddfdd|jDSt|jdkr%dSdfd d|jDS) NrNrrrr*c3rr1rrrr3r4r rz7ASTParametersQualifiers.get_param_id..rc3rr1rrrr3r4rr)rFrrrSr3rr4 get_param_idsz$ASTParametersQualifiers.get_param_idrcCs.g}|dd}|jD]}|s|dd}|t|q |d|jr,|d|jr4|d|jrB|d||j|jrR|d|||j|jrb|d |||j|jrj|d |j rr|d |j D]}|d|||qu|j r|d ||j d |S)NrTrFrz volatilez constrz ->  finalz override = r) rsrr>rrPrrrrrrrr)r2rrrrattrr3r3r4rsB                 z"ASTParametersQualifiers._stringifyrZr[r\rr,r-c Cs:t||dkr,t}|jD]}tjdddd}|j|d||d||7}q||7}n3|tdd7}d}|jD]}|sK|tdd7}|t7}d }|j|d ||dq9|td d 7}d td t ddfdd} |j rr| |d|j rz| |d|j r|t7}|t|j |j 7}|j r|t7}|j |||||jr|t7}|tdd7}|t7}|j|||||jr| |d|jr| |d|jD] } |t7}| |q|jr|t7}|tdd7}|t7}|jdvsJ|jdkr|tdd7}dS|t|j|j7}dSdS)NrirT)noemphrkrrrFr`rrZr_rzcSs |t7}|t||7}dSr1rrrrZr_r3r3r4 _add_annoIs z=ASTParametersQualifiers.describe_signature.._add_annorrPrrrr0rXrWr)r6rdesc_parameterlistrdesc_parameterryrrrr>rrPrrrrrrrrrr) r2rZr[r\r, paramlistrrkrrrr3r3r4ry3sb                   z*ASTParametersQualifiers.describe_signature)r;r<r=rrrErr>rr$r5rrrhrrr*rrryr3r3r3r4rs<  #rc@sNeZdZdeeddfddZdedefddZd e d d d d ddfddZ dS)ASTExplicitSpecr rzNcCrr1r r r3r3r4r5orzASTExplicitSpec.__init__rcCs>dg}|jdur|d|||j|dd|S)Nr^rrr)r rsrrr3r3r4rrs     zASTExplicitSpec._stringifyrZr\rr,r-cCsT|tdd7}|jdur(|tdd7}|j|d|||tdd7}dSdS)Nr^rr`rr)r2rZr\r,r3r3r4ryzs  z"ASTExplicitSpec.describe_signaturerr3r3r3r4rnsrc@seZdZdededededeedededed ed ed ed eed dfddZ dddZ de d efddZ de ddddd dfddZdS)ASTDeclSpecsSimplestorage threadLocalrgr explicitSpecrQrRrSrrPrdrrzNc CsL||_||_||_||_||_||_||_||_| |_| |_ | |_ | |_ dSr1) rrrgrrrQrRrSrrPrdr) r2rrrgrrrQrRrSrrPrdrr3r3r4r5s zASTDeclSpecsSimple.__init__othercCs|s|St|jp |j|jp|j|jp|j|jp|j|jp|j|jp#|j|jp(|j|jp-|j|j p2|j |j p7|j |j p<|j |j |j  Sr1) rrrrgrrrQrRrSrrPrdr)r2rr3r3r4 mergeWiths            zASTDeclSpecsSimple.mergeWithrcsg}|fdd|jD|jr||j|jr |d|jr(|d|jr0|d|jr8|d|jrC||j|j rK|d|j rS|d|j r[|d |j rc|d |j rk|d d |S) Nc3rr1r3)rrrr3r4rrz0ASTDeclSpecsSimple._stringify..rrgrdrrQrRrSrrPr)extendrrrsrrgrdrrrQrRrSrrPrrr3rr4rs2           zASTDeclSpecsSimple._stringifyrZr\rr,r-csd|jD]}r|t7}d||qdtdtdtffdd }|jr-|||j|jr5||d|j r=||d |j rE||d |j rM||d |j rbrX|t7}|j |||d|j rj||d |jrr||d |jrz||d|jr||d|jr||ddSdS)NFTrZr_rzcs$r|t7}|t||7}dSrrraddSpacer3r4_adds z3ASTDeclSpecsSimple.describe_signature.._addrrgrdrrQrRrSrrP)rrrryrr>rErrrgrdrrrQrRrSrrP)r2rZr\r,rr r3r r4rysB             z%ASTDeclSpecsSimple.describe_signature)rrrzr)r;r<r=r>rErrrr$r5r r*rrryr3r3r3r4rs: rc @sleZdZdededededdf ddZd edefd d Zd e defd dZ de deddddddf ddZ dS) ASTDeclSpecsouter leftSpecs rightSpecstrailingrzNcCs,||_||_||_|j|j|_||_dSr1)rrrr allSpecstrailingTypeSpec)r2rrrrr3r3r4r5s  zASTDeclSpecs.__init__rLcCs|dkr&g}||j||jjr|d|jjr!|dd|Sg}|jjr1|d|jjr:|d|jdurH||j|d|S)NrNrrrr)rsrrTrrrPrrr3r3r4rTs        zASTDeclSpecs.get_idrcCsg}||j}t|dkr|||jrCt|dkr |d|||jt|j}t|dkrCt|dkr>|d||d|SNrrr)rrFrsrr>rr)r2rrrrr3r3r4r s           zASTDeclSpecs._stringifyrZr[r\rr,r-cCst|t|}|j|||t||k}|jrP|r!|t7}t|}|jj||||dt||k}tt|jdkrR|rF|t7}|j|||dSdSdS)Nrr) r6rFrryrrrr>r)r2rZr[r\r, numChildrenr r3r3r4ry s$     zASTDeclSpecs.describe_signature) r;r<r=r>rrr5rhrTr*rrryr3r3r3r4rs&   rc @r)ASTArraysizecCrr1r)r2rr3r3r4r52 rzASTArray.__init__rrzcCr)Nr$r%rrrr3r3r4r5 szASTArray._stringifyrLcCsN|dkrdS|dkr|jrdt|jdSdS|jr%d|j|dSdS)NrNArrA_)rr>rTrSr3r3r4rT; szASTArray.get_idrZr[r\rr,r-NcCsDt||tdd7}|jr|j|d|||tdd7}dS)Nr$r`r%)r6rrrryrr3r3r4ryH s zASTArray.describe_signaturerr3r3r3r4r1 s rc @seZdZedefddZejdeddfddZedefddZede e fd d Z ed$d d Z defddZ dedefddZdedefddZdedefddZdededefddZdefddZdededdd d!ddf d"d#ZdS)% ASTDeclaratorrzcCrr1rr8r3r3r4rR rzASTDeclarator.namerNcCrr1rrr3r3r4rV rcCrr1rr8r3r3r4isPackZ rzASTDeclarator.isPackcCrr1rr8r3r3r4r^ rzASTDeclarator.function_paramsr@cCrr1rr8r3r3r4rb rzASTDeclarator.trailingReturncCrr1rr8r3r3r4require_space_after_declSpecsf rz+ASTDeclarator.require_space_after_declSpecsrLcCrr1rrSr3r3r4ri rzASTDeclarator.get_modifiers_idcCrr1rrSr3r3r4rl rzASTDeclarator.get_param_idcCrr1rrSr3r3r4get_ptr_suffix_ido rzASTDeclarator.get_ptr_suffix_id returnTypeIdcCrr1rr2rLr!r3r3r4 get_type_idr rzASTDeclarator.get_type_idcCrr1rr8r3r3r4is_function_typeu rzASTDeclarator.is_function_typerZr[r\rr,r-cCrr1rrr3r3r4ryx rz ASTDeclarator.describe_signaturerzr@)r;r<r=rrrsetterrErrrrrrrhr>rrr r#r$rryr3r3r3r4rQ s0  rc @s"eZdZdedeededdfddZedefdd Z e j d eddfd d Z ede fd d Z edee fddZed,ddZdedefddZdedefddZdedefddZdededefddZde fddZde fdd Zd!edefd"d#Zd$ed%ed&d'd(d)ddf d*d+ZdS)-ASTDeclaratorNameParamQualdeclIdarrayOps paramQualrzNcCrsr1r(r)r*)r2r(r)r*r3r3r4r5~ s z#ASTDeclaratorNameParamQual.__init__cCrUr1r(r8r3r3r4r rzASTDeclaratorNameParamQual.namercCrr1r,rr3r3r4r rcCrrr3r8r3r3r4r rz!ASTDeclaratorNameParamQual.isPackcC|jjSr1)r*rr8r3r3r4r z*ASTDeclaratorNameParamQual.function_paramsr@cCr-r1)r*rr8r3r3r4r r.z)ASTDeclaratorNameParamQual.trailingReturnrLcCs|jr |j|Std|)Nz,This should only be called on a function: %s)r*rrtrSr3r3r4r s  z+ASTDeclaratorNameParamQual.get_modifiers_idcCs|jr |j|SdSrB)r*rrSr3r3r4r s z'ASTDeclaratorNameParamQual.get_param_idcr)Nrc3rr1rrrr3r4r rz?ASTDeclaratorNameParamQual.get_ptr_suffix_id..)rr)rSr3rr4r  rz,ASTDeclaratorNameParamQual.get_ptr_suffix_idr!cCsz|dksJg}||||jr3||||d||||||dn||d|S)NrFrr)rsr r*rrrr2rLr!rr3r3r4r# s      z&ASTDeclaratorNameParamQual.get_type_idcC |jduSr1r,r8r3r3r4r rz8ASTDeclaratorNameParamQual.require_space_after_declSpecscCr1r1)r*r8r3r3r4r$ rz+ASTDeclaratorNameParamQual.is_function_typercCsTg}|jr |||j|jD] }|||q|jr%|||jd|SrB)r(rsr)r*r)r2rrrr3r3r4r s  z%ASTDeclaratorNameParamQual._stringifyrZr[r\rr,r-cCs\t||jr|j|||||jD] }|||||q|jr,|j||||dSdSr1)r6r(ryr)r*)r2rZr[r\r,rr3r3r4ry s z-ASTDeclaratorNameParamQual.describe_signaturer%)r;r<r=rrrrr5rrr&rErrrrrhr>rrr r#rr$r*rrryr3r3r3r4r'} s@   r'c @seZdZdedefddZedefddZejdedd fd dZd e de fd d Z d e de fddZ de fddZde fddZdede fddZdede dddddd f ddZd S)ASTDeclaratorNameBitFieldr(rcCr~r1r(r)r2r(rr3r3r4r5 rz"ASTDeclaratorNameBitField.__init__rzcCrUr1r,r8r3r3r4r rzASTDeclaratorNameBitField.namerNcCrr1r,rr3r3r4r rrLcCrrBr3rSr3r3r4r rz&ASTDeclaratorNameBitField.get_param_idcCrrBr3rSr3r3r4r  rz+ASTDeclaratorNameBitField.get_ptr_suffix_idcCr1r1r,r8r3r3r4r rz7ASTDeclaratorNameBitField.require_space_after_declSpecscCrrr3r8r3r3r4r$ rz*ASTDeclaratorNameBitField.is_function_typercCs>g}|jr |||j|d|||jd|S)N : r)r(rsrrrr3r3r4r s   z$ASTDeclaratorNameBitField._stringifyrZr[r\rr,r-cCs^t||jr|j|||||t7}|tdd7}|t7}|j||||dS)Nr)r6r(ryrrrrrr3r3r4ry s  z,ASTDeclaratorNameBitField.describe_signature)r;r<r=rrr5rrr&rhr>rr rErr$r*rrryr3r3r3r4r2 s$ r2c @seZdZdedededeeddf ddZede fd d Z e j d e ddfd d Z edee fd dZ ed+ddZdefddZdedefddZdedefddZdedefddZdedefddZdededefdd Zdefd!d"Zd#ed$ed%d&d'd(ddf d)d*ZdS),ASTDeclaratorPtrnextrrPrrzNcCs$|sJ||_||_||_||_dSr1r6rrPr)r2r6rrPrr3r3r4r5 s  zASTDeclaratorPtr.__init__cCr-r1r6rr8r3r3r4r r.zASTDeclaratorPtr.namercC ||j_dSr1r8rr3r3r4r rcCr-r1r6rr8r3r3r4r r.z ASTDeclaratorPtr.function_paramsr@cCr-r1r6rr8r3r3r4r r.zASTDeclaratorPtr.trailingReturncC |jSr1r6rr8r3r3r4r rz.ASTDeclaratorPtr.require_space_after_declSpecsrcCsdg}|jD] }|||qt|jdkr"|js|jr"|d|jr*|d|jr:|jr5|d|d|jsG|jsGt|jdkrQ|jrQ|d|||jd|S)NrrrrrPr)rrsrFrrPr6rrr2rrrr3r3r4r s         zASTDeclaratorPtr._stringifyrLcCrr1r6rrSr3r3r4r1 rz!ASTDeclaratorPtr.get_modifiers_idcCrr1r6rrSr3r3r4r4 rzASTDeclaratorPtr.get_param_idcCs|dkr%dg}|jr|d|jr|d||j|d|S|j|g}|d|jr9|d|jrA|dd|S)NrNPrrr)rrsrPr6r rrr3r3r4r 7 s       z"ASTDeclaratorPtr.get_ptr_suffix_idr!cCsFdg}|jr |d|jr|d|||jj|d|dS)NrArrrr!)rrsrPr6r#rr0r3r3r4r#I s   zASTDeclaratorPtr.get_type_idcCr<r1r6r$r8r3r3r4r$S rz!ASTDeclaratorPtr.is_function_typerZr[r\rr,r-cCst||tdd7}|jD]}||qt|jdkr*|js$|jr*|t7}dt dt ddfdd}|jr=||d|jrN|jrI|t7}||d |js[|js[t|jdkrf|j rf|t7}|j ||||dS) NrrrZr_rzcS|t||7}dSr1rrr3r3r4r_ rz6ASTDeclaratorPtr.describe_signature.._add_annorrP) r6rrrryrFrrPrrr>r6r)r2rZr[r\r,rrr3r3r4ryV s"        z#ASTDeclaratorPtr.describe_signaturer%)r;r<r=rrErr$r5rrrr&rrrrr*r>rrhrrr r#r$rryr3r3r3r4r5 s8   r5c @seZdZdedeeddfddZedefddZ e j d eddfd dZ ede fd d Z edee fd dZed+ddZde fddZdedefddZdedefddZdedefddZdedefddZdededefdd Zde fd!d"Zd#ed$ed%d&d'd(ddf d)d*ZdS),ASTDeclaratorRefr6rrzNcC|sJ||_||_dSr1r6r)r2r6rr3r3r4r5n  zASTDeclaratorRef.__init__cCr-r1r8r8r3r3r4rs r.zASTDeclaratorRef.namercCr9r1r8rr3r3r4rw rcCrrr3r8r3r3r4r{ rzASTDeclaratorRef.isPackcCr-r1r:r8r3r3r4r r.z ASTDeclaratorRef.function_paramsr@cCr-r1r;r8r3r3r4r r.zASTDeclaratorRef.trailingReturncCr<r1r=r8r3r3r4r rz.ASTDeclaratorRef.require_space_after_declSpecsrcCs\dg}|jD] }|||qt|jdkr!|jr!|d|||jd|S)Nrrrr)rrsrFr6rrr>r3r3r4r s   zASTDeclaratorRef._stringifyrLcCrr1r?rSr3r3r4r rz!ASTDeclaratorRef.get_modifiers_idcCrr1r@rSr3r3r4r rzASTDeclaratorRef.get_param_idcC(|dkr d|j|S|j|dS)NrNrr6r rSr3r3r4r  rz"ASTDeclaratorRef.get_ptr_suffix_idr!cC |dksJ|jj|d|dS)NrrrBr6r#r"r3r3r4r#  zASTDeclaratorRef.get_type_idcCr<r1rCr8r3r3r4r$ rz!ASTDeclaratorRef.is_function_typerZr[r\rr,r-cCsht||tdd7}|jD]}||qt|jdkr)|jr)|t7}|j||||dS)Nrr) r6rrrryrFr6rr)r2rZr[r\r,rr3r3r4ry s   z#ASTDeclaratorRef.describe_signaturer%)r;r<r=rrr$r5rrrr&rErrrrrr*r>rrhrrr r#r$rryr3r3r3r4rEm s4   rEc @seZdZdeddfddZedefddZejdeddfd dZede e fd d Z ed(d dZ de fddZdedefddZdedefddZdedefddZdedefddZdededefddZde fddZd ed!ed"d#d$d%ddf d&d'ZdS))ASTDeclaratorParamPackr6rzNcC|sJ||_dSr1r6)r2r6r3r3r4r5  zASTDeclaratorParamPack.__init__cCr-r1r8r8r3r3r4r r.zASTDeclaratorParamPack.namercCr9r1r8rr3r3r4r rcCr-r1r:r8r3r3r4r r.z&ASTDeclaratorParamPack.function_paramsr@cCr-r1r;r8r3r3r4r r.z%ASTDeclaratorParamPack.trailingReturncCrrr3r8r3r3r4r rz4ASTDeclaratorParamPack.require_space_after_declSpecsrcCs"||j}|jjr d|}d|S)Nrrr8rr3r3r4r s z!ASTDeclaratorParamPack._stringifyrLcCrr1r?rSr3r3r4r rz'ASTDeclaratorParamPack.get_modifiers_idcCrr1r@rSr3r3r4r rz#ASTDeclaratorParamPack.get_param_idcCrI)NrNDprJrSr3r3r4r  rz(ASTDeclaratorParamPack.get_ptr_suffix_idr!cCrK)NrrRrBrLr"r3r3r4r# rMz"ASTDeclaratorParamPack.get_type_idcCr<r1rCr8r3r3r4r$ rz'ASTDeclaratorParamPack.is_function_typerZr[r\rr,r-cCsBt||tdd7}|jjr|t7}|j||||dSr)r6rrr6rrryrr3r3r4ry s  z)ASTDeclaratorParamPack.describe_signaturer%r;r<r=rr5rrrr&rrrrrErr*r>rrhrrr r#r$rryr3r3r3r4rN s0  rNc @seZdZdededededdf ddZedefd d Zej d eddfd d Zede e fd dZ ed+ddZ defddZdedefddZdedefddZdedefddZdedefddZdededefdd Zdefd!d"Zd#ed$ed%d&d'd(ddf d)d*ZdS),ASTDeclaratorMemPtr classNamerPrr6rzNcCs,|sJ|sJ||_||_||_||_dSr1)rUrPrr6)r2rUrPrr6r3r3r4r5 s  zASTDeclaratorMemPtr.__init__cCr-r1r8r8r3r3r4r r.zASTDeclaratorMemPtr.namercCr9r1r8rr3r3r4r rcCr-r1r:r8r3r3r4r r.z#ASTDeclaratorMemPtr.function_paramsr@cCr-r1r;r8r3r3r4r r.z"ASTDeclaratorMemPtr.trailingReturncCrrr3r8r3r3r4r rz1ASTDeclaratorMemPtr.require_space_after_declSpecsrcCs|g}|||j|d|jr|d|jr'|jr"|d|d|jr1|d|||jd|S)Nz::*rrrPr)rsrUrrPr6rrrr3r3r4r s       zASTDeclaratorMemPtr._stringifyrLcC|dkrt|j|SNrN)r)r6rrSr3r3r4r  z$ASTDeclaratorMemPtr.get_modifiers_idcCrVrW)r)r6rrSr3r3r4r rXz ASTDeclaratorMemPtr.get_param_idcCs|dkrttrW)r)rr6r rSr3r3r4r % sz%ASTDeclaratorMemPtr.get_ptr_suffix_idr!cCsZ|dksJd}|jr|d7}|jr|d7}|d7}||j|7}||7}|j||S)NrrrrM)rrPrUrTr6r#)r2rLr!nextReturnTypeIdr3r3r4r#, s zASTDeclaratorMemPtr.get_type_idcCr<r1rCr8r3r3r4r$9 rz$ASTDeclaratorMemPtr.is_function_typerZr[r\rr,r-cCst||j|d|||tdd7}|tdd7}dtdtddfdd}|jr0||d |jrA|jr<|t 7}||d |j rL|t 7}|j ||||dS) Nr`rrrZr_rzcSrDr1rrr3r3r4rC rz9ASTDeclaratorMemPtr.describe_signature.._add_annorrP) r6rUryrrrr>rrPrr6r)r2rZr[r\r,rr3r3r4ry< s     z&ASTDeclaratorMemPtr.describe_signaturer%)r;r<r=rrErr5rrr&rrrrrr*r>rrhrrr r#r$rryr3r3r3r4rT s@    rTc @seZdZdededdfddZedefddZejd eddfd dZede e fd d Z ed)ddZ de fddZdedefddZdedefddZdedefddZdedefddZdededefddZde fdd Zd!ed"ed#d$d%d&ddf d'd(ZdS)*ASTDeclaratorPareninnerr6rzNcCr0r1r\r6)r2r\r6r3r3r4r5Q r6zASTDeclaratorParen.__init__cCr-r1r\rr8r3r3r4rX r.zASTDeclaratorParen.namercCr9r1r^rr3r3r4r\ rcCr-r1)r\rr8r3r3r4r` r.z"ASTDeclaratorParen.function_paramsr@cCr-r1)r\rr8r3r3r4rd r.z!ASTDeclaratorParen.trailingReturncCrrr3r8r3r3r4rh rz0ASTDeclaratorParen.require_space_after_declSpecsrcCrwrx)rsr\r6rrr3r3r4rk ryzASTDeclaratorParen._stringifyrLcCrr1)r\rrSr3r3r4rr rz#ASTDeclaratorParen.get_modifiers_idcCrr1)r\rrSr3r3r4ru rzASTDeclaratorParen.get_param_idcCs&|dkrt|j||j|SrW)r)r6r r\rSr3r3r4r x s   z$ASTDeclaratorParen.get_ptr_suffix_idr!cCs*|dksJ|j||}|jj||dS)NrrB)r6r#r\)r2rLr!nextIdr3r3r4r# s zASTDeclaratorParen.get_type_idcCr<r1)r\r$r8r3r3r4r$ rz#ASTDeclaratorParen.is_function_typerZr[r\rr,r-cCsPt||tdd7}|j|||||tdd7}|j|d||dS)Nrrrj)r6rrr\ryr6rr3r3r4ry s z%ASTDeclaratorParen.describe_signaturer%rSr3r3r3r4r[P s0   r[c @sdeZdZdeeeffddZdedefddZ de defd d Z d e d ed dddddf ddZ dS)ASTPackExpansionExprr cCrr1r r r3r3r4r5 rzASTPackExpansionExpr.__init__rrzcCs||jdSrr rr3r3r4r rKzASTPackExpansionExpr._stringifyrLcCs|j|}d|S)Nsprrur3r3r4rT s zASTPackExpansionExpr.get_idrZr[r\rr,r-NcCs&|j|||||tdd7}dSr)r ryrrrr3r3r4ry sz'ASTPackExpansionExpr.describe_signature)r;r<r=r rr<r5r*r>rrhrTrryr3r3r3r4r` s r`c @sleZdZdeeeefddfddZdede fddZ d e de fd d Z d e d e ddddddf ddZdS)r;r>rzNcCrr1)r>rr3r3r4r5 rzASTParenExprList.__init__rLcr)Nzpi%sErc3rr1rrrr3r4r rz*ASTParenExprList.get_id..rrSr3rr4rT rzASTParenExprList.get_idrcs"fdd|jD}dd|S)Ncrr3r3rrr3r4r rz/ASTParenExprList._stringify..z(%s)r)r>r)r2rr>r3rr4r szASTParenExprList._stringifyrZr[r\rr,r-cCsrt||tdd7}d}|jD]}|s$|tdd7}|t7}nd}|||||q|tdd7}dS)NrTrFr)r6rrr>rryrr3r3r4ry s z#ASTParenExprList.describe_signature)r;r<r=rr rr<r5rhr>rTr*rrryr3r3r3r4r; s r;c @s^eZdZ ddeeefdeddfddZdede fd d Z d e d e d dddddf ddZ dS)ASTInitializerTr hasAssignrzNcCr~r1rrc)r2rrcr3r3r4r5 rzASTInitializer.__init__rcCs||j}|jr d|S|SNrrd)r2rvalr3r3r4r s zASTInitializer._stringifyrZr[r\rr,r-cCsLt||jr|t7}|tdd7}|t7}|j|d||dS)Nrr`)r6rcrrrrryrr3r3r4ry s   z!ASTInitializer.describe_signatureT) r;r<r=r rr<rEr5r*r>rrryr3r3r3r4rb s  rbc @seZdZdededdfddZedefddZej d eddfd dZede fd d Z ede e fd dZed"ddZ  d#dededddefddZdedefddZdefddZdededdddddf d d!ZdS)$r@ declSpecsdeclrzNcCr0r1)rhri)r2rhrir3r3r4r5 r6zASTType.__init__cCr-r1rirr8r3r3r4r r.z ASTType.namercCr9r1rjrr3r3r4r rcCr-r1)rirr8r3r3r4r r.zASTType.isPackcCr-r1)rirr8r3r3r4r r.zASTType.function_paramscCr-r1)rirr8r3r3r4r r.zASTType.trailingReturnrLrr,r-c Cs|dkryg}|rQ|dkr<|||||j|||j||jjjs6|jj r;|jj jr;|dn8|dkrK|||n)t |J|j rYt ||j|||j |||j|d|Sg}|r|dkr|j|}|||||dkr|jj}|dur|j |}|jr|j|}n|j|}||||||j|n'|dkr|||nt |J|j|}|j||}||d|S)NrNfunctionCErFrr)rsget_full_nested_namerTrirrrhrrRrprintr$r)r rr.rrr#) r2rLrr,rrtempltypeIdr!r3r3r4rT s^            zASTType.get_idrcCsRg}||j}|||jrt|dkr|d|||jd|Sr)rhrsrirrFr)r2rrrhr3r3r4r+ s    zASTType._stringifycCs|jjrdSdS)Nrr)rhrr8r3r3r4get_type_declaration_prefix4 sz#ASTType.get_type_declaration_prefixrZr[r\rcCsdt||j|d|||jr!tt|jdkr!|t7}|dkr'd}|j||||dS)Nr`rrj) r6rhryrirrFr>rrrr3r3r4ry: s  zASTType.describe_signaturer%r)r;r<r=rrr5rrrr&rErrrrrrhr>rTr*rrqrryr3r3r3r4r@ s8   8 r@c @seZdZdededdfddZedefddZedefd d Z dd e d e d dde fddZ de de fddZdede ddd dddf ddZdS)rrinitrzNcCrFr1rrrr2rrrr3r3r4r5I rHz0ASTTemplateParamConstrainedTypeWithInit.__init__cCr-r1rrr8r3r3r4rN r.z,ASTTemplateParamConstrainedTypeWithInit.namecCr-r1rrr8r3r3r4rR r.z.ASTTemplateParamConstrainedTypeWithInit.isPackrLrr,r-cC.|dksJ|r|jjj|ddS|j|SNrFr)rr.rTrrr3r3r4rTV   z.ASTTemplateParamConstrainedTypeWithInit.get_idrcCs*||j}|jr|d7}|||j7}|Srersrr3r3r4r_ s z2ASTTemplateParamConstrainedTypeWithInit._stringifyrZr[r\rcCsZ|j|||||jr+|t7}|tdd7}|t7}|j||||dSdS)Nr)rryrrrrrrr3r3r4ryf s  z:ASTTemplateParamConstrainedTypeWithInit.describe_signaturer)r;r<r=r@r5rrrrErrhr>rTr*rrryr3r3r3r4rH s rc @seZdZdededdfddZedefddZede fd d Z  dd e d e d dde fddZ dede fddZdede ddd dddf ddZdS)rrrrrzNcCr~r1rsrtr3r3r4r5q rzASTTypeWithInit.__init__cCr-r1rur8r3r3r4ru r.zASTTypeWithInit.namecCr-r1rvr8r3r3r4ry r.zASTTypeWithInit.isPackrLrr,r-cCsJ|dkr |j||S|dkr||d|j|S||S)NmemberrNr)rrTrmrr3r3r4rT} s zASTTypeWithInit.get_idrcC4g}|||j|jr|||jd|SrB)rsrrrrrr3r3r4r  zASTTypeWithInit._stringifyrZr[r\rcCs:t||j|||||jr|j||||dSdSr1)r6rryrrrr3r3r4ry z"ASTTypeWithInit.describe_signaturer)r;r<r=r@rbr5rrrrErrhr>rTr*rrryr3r3r3r4rp s*   rc @seZdZdededdfddZ  ddeded d defd d Zd e defddZ defddZ de deddd d ddf ddZ dS) ASTTypeUsingrrrzNcCr~r1)rrr2rrr3r3r4r5 rzASTTypeUsing.__init__rLrr,r-cC|dkrt||SrWr)rmrTrr3r3r4rT zASTTypeUsing.get_idrcCs>g}|||j|jr|d|||jd|S)Nrr)rsrrrrr3r3r4r s   zASTTypeUsing._stringifycCr)Nrr3r8r3r3r4rq rz(ASTTypeUsing.get_type_declaration_prefixrZr[r\rcCft||jj||||d|jr1|t7}|tdd7}|t7}|jj|d||ddSdS)Nrrr`)r6rryrrrrrr3r3r4ry s  zASTTypeUsing.describe_signaturer)r;r<r=rr@r5rhr>rTr*rrqrryr3r3r3r4r~ s$   r~c @seZdZdededdfddZedefddZ  dd ed e d d de fd dZ de de fddZ de de ddd d ddf ddZdS) ASTConceptrrrzNcCr~r1rrr2rrr3r3r4r5 rzASTConcept.__init__cCrUr1rr8r3r3r4r rzASTConcept.namerLrr,r-cCrrWrrr3r3r4rT rzASTConcept.get_idrcCrr1rrr3r3r4r rzASTConcept._stringifyrZr[r\rcCs2|j|||||jr|j||||dSdSr1)rryrrr3r3r4ry szASTConcept.describe_signaturer)r;r<r=rrbr5rrrhr>rTr*rrryr3r3r3r4r s&   rc @sZeZdZdededededdf ddZd edefd d Zd e d eddddddf ddZ dS) ASTBaseClassr visibilityrpackrzNcCror1)rrrr)r2rrrrr3r3r4r5 rpzASTBaseClass.__init__rcCs^g}|jdur||j|d|jr|d|||j|jr*|dd|S)Nrzvirtual rr)rrsrrrrrr3r3r4r s      zASTBaseClass._stringifyrZr[r\rr,r-cCst||jdur|t|j|j7}|t7}|jr*|tdd7}|t7}|jj|d||d|jrA|t dd7}dSdS)Nrr`rr) r6rrrrrrryrrrr3r3r4ry s    zASTBaseClass.describe_signature) r;r<r=rr>rEr5r*rrryr3r3r3r4r s    rc @steZdZdededeeddfddZded e d d de fd d Z de de fddZ de de ddd d ddf ddZdS)ASTClassrrbasesrzNcCrsr1)rrr)r2rrrr3r3r4r5 rtzASTClass.__init__rLrr,r-cCs||Sr1)rmrTrr3r3r4rT rKzASTClass.get_idrcCsvg}|||j|jr|dt|jdkr6|dd}|jD]}|s,|dd}|||q#d|S)Nrrr4TrFr)rsrrrFrr)r2rrrrr3r3r4r s     zASTClass._stringifyrZr[r\rcCst||jj||||d|jr|t7}|tdd7}t|jdkra|t7}|t dd7}|t7}|jD]}|j||||d|t dd7}|t7}q=| | dSdS)Nrrrrr) r6rryrrrrrFrrpop)r2rZr[r\r,rr3r3r4ry s      zASTClass.describe_signature)r;r<r=rrErrr5rhr>rTr*rrryr3r3r3r4r s rc @sheZdZdeddfddZdededd defd d Zd edefd dZ de dedddd ddf ddZ dS)ASTUnionrrzNcCrr1rrr3r3r4r5$ rzASTUnion.__init__rLrr,r-cCrrWrrr3r3r4rT' zASTUnion.get_idrcCrr1rrr3r3r4r, rzASTUnion._stringifyrZr[r\rcCs t||jj||||ddS)Nr)r6rryrr3r3r4ry/ zASTUnion.describe_signature) r;r<r=rr5rhr>rTr*rrryr3r3r3r4r# s rc @speZdZdedededdfddZded ed d defd d Zde defddZ de deddd d ddf ddZ dS)ASTEnumrscopedunderlyingTyperzNcCrsr1)rrr)r2rrrr3r3r4r56 rzASTEnum.__init__rLrr,r-cCrrWrrr3r3r4rT< rzASTEnum.get_idrcCsZg}|jr||j|d|||j|jr(|d|||jd|S)Nrr4r)rrsrrrrr3r3r4rA s    zASTEnum._stringifyrZr[r\rcCr)Nrrrj)r6rryrrrrrr3r3r4ryL s    zASTEnum.describe_signature) r;r<r=rr>r@r5rhrTr*rrryr3r3r3r4r5 s   rc @sleZdZdededdfddZdeded d defd d Zd e defddZ de deddd d ddf ddZ dS) ASTEnumeratorrrrrzNcCr~r1)rrr)r2rrrr3r3r4r5Z rzASTEnumerator.__init__rLrr,r-cCrrWrrr3r3r4rT^ rzASTEnumerator.get_idrcCr{rB)rsrrrrrr3r3r4rc r|zASTEnumerator._stringifyrZr[r\rcCs:t||j|||||jr|j|d||dSdS)Nr`)r6rryrrrr3r3r4ryj r}z ASTEnumerator.describe_signature) r;r<r=rrbr5rhr>rTr*rrryr3r3r3r4rY s rc @sJeZdZdefddZdedefddZdeded d d d dd f ddZ d S)ASTTemplateParamrzcCrr1rr8r3r3r4get_identifierz rzASTTemplateParam.get_identifierrLcCrr1rrSr3r3r4rT} rzASTTemplateParam.get_id parentNoder[r\rr,r-NcCrr1r)r2rr[r\r,r3r3r4ry rz#ASTTemplateParam.describe_signature) r;r<r=rCrrhr>rTrryr3r3r3r4ry s rc @szeZdZdededededdf ddZdefd d Zd e defd d Z de defddZ de deddddddf ddZdS) ASTTemplateKeyParamPackIdDefaultkeyrD parameterPackrWrzNcCs4|sJ|r |dus J||_||_||_||_dSr1)rrDrrW)r2rrDrrWr3r3r4r5 s  z)ASTTemplateKeyParamPackIdDefault.__init__cCrUr1rIr8r3r3r4r rVz/ASTTemplateKeyParamPackIdDefault.get_identifierrLcCs6|dksJg}|jr|dn|dd|S)NrrRrr)rrsrrr3r3r4rT s    z'ASTTemplateKeyParamPackIdDefault.get_idrcCsx|jg}|jr|jr|d|d|jr'|js|d|||j|jr7|d|||jd|S)Nrrrr)rrrDrsrWrrr3r3r4r s     z+ASTTemplateKeyParamPackIdDefault._stringifyrZr[r\rr,r-cCs|t|j|j7}|jr|jr|t7}|tdd7}|jr5|js*|t7}|j|||dd||jrW|t7}|tdd7}|t7}|j|d||dSdS)Nrrrr`) rrrrrDrrryrWrr3r3r4ry s    z3ASTTemplateKeyParamPackIdDefault.describe_signature)r;r<r=r>rCrEr@r5rrhrTr*rrryr3r3r3r4r s$    rc @seZdZdeddfddZedefddZedefdd Z de fd d Z dd e d e ddde fddZdede fddZdede ddddddf ddZdS)ASTTemplateParamTyperrzNcCrOr1rrr3r3r4r5 rQzASTTemplateParamType.__init__cC |}tt|dgdgddSNFrrrrzr2rDr3r3r4r rzASTTemplateParamType.namecCr-r1rrr8r3r3r4r r.zASTTemplateParamType.isPackcCr<r1rrr8r3r3r4r rz#ASTTemplateParamType.get_identifierrLrr,r-cCrwrx)rr.rTrrr3r3r4rT ryzASTTemplateParamType.get_idrcCrr1rrr3r3r4r rzASTTemplateParamType._stringifyrZr[r\rcCrr1)rryrr3r3r4ry rz'ASTTemplateParamType.describe_signaturerr;r<r=rr5rrrrErrCrrhr>rTr*rrryr3r3r3r4r s  rc @seZdZdddeddfddZedefdd Zedefd d Z de fd d Z dde de ddde fddZdede fddZdede ddddddf ddZdS)ASTTemplateParamTemplateType nestedParamsASTTemplateParamsrrzNcCr0r1rr)r2rrr3r3r4r5 s z%ASTTemplateParamTemplateType.__init__cCrrrrr3r3r4r rz!ASTTemplateParamTemplateType.namecCr-r1rr8r3r3r4r r.z#ASTTemplateParamTemplateType.isPackcCr<r1rr8r3r3r4r rz+ASTTemplateParamTemplateType.get_identifierrLrr,r-cCs:|dksJ|r|jjj|ddS|j||j|S)Nrr)rr.rTrrrr3r3r4rT s z#ASTTemplateParamTemplateType.get_idrcCrr1rrr3r3r4r rz'ASTTemplateParamTemplateType._stringifyrZr[r\rcCs4|j|d|||t7}|j||||dS)Nrj)rryrrrrr3r3r4rys z/ASTTemplateParamTemplateType.describe_signaturerrr3r3r3r4r s(  rc @seZdZdeeefddfddZedefddZ ede fdd Z de fd d Z dd ed edddefddZdedefddZdededdddddf ddZdS)ASTTemplateParamNonTyperkrzNcCrOr1rk)r2rkr3r3r4r5s z ASTTemplateParamNonType.__init__cCrrrrr3r3r4rrzASTTemplateParamNonType.namecCr-r1)rkrr8r3r3r4rr.zASTTemplateParamNonType.isPackcCs`|jj}|r.t|jdksJ|jdjsJ|jdjrJ|jdj}t|ts,J|SdS)NrNr)rkrrFrr{r^ isinstancerC)r2rrr3r3r4rs z&ASTTemplateParamNonType.get_identifierrLrr,r-cCs2|dksJ|r|jjj|ddSd|j|S)Nrrr)rr.rTrkrr3r3r4rT#s zASTTemplateParamNonType.get_idrcCrr1rrr3r3r4r,rz"ASTTemplateParamNonType._stringifyrZr[r\rcCrr1)rkryrr3r3r4ry/rz*ASTTemplateParamNonType.describe_signaturer)r;r<r=r rrr5rrrrErrCrrhr>rTr*rrryr3r3r3r4rs,   rc @seZdZdeeddfddZdedefddZd e defd d Z d e d eddddddf ddZ de d edddddeddf ddZdS)rparamsrzNcCs|dusJ||_dSr1)r)r2rr3r3r4r55s  zASTTemplateParams.__init__rLcCsJ|dksJg}|d|jD] }|||q|dd|S)Nrrrr)rsrrTrr2rLrrkr3r3r4rT9s     zASTTemplateParams.get_idrcsBg}|d|dfdd|jD|dd|S)Nz template.z> r)rsrrrr3rr4rBs     zASTTemplateParams._stringifyrZr[r\rr,r-cCsx|tdd7}|tdd7}d}|jD]}|s'|tdd7}|t7}d}|||||q|tdd7}dS)NrrTrFr)rrrrrry)r2rZr[r\r,rrkr3r3r4ryIs  z$ASTTemplateParams.describe_signaturerlineSpecc Csdtdtjfdd}||}|tdd7}|tdd7}d}|jD]"} |s5|tdd7}|t7}d }|r=||}| ||||q#|rN|sN||}|td d 7}dS) NrrzcSst}||7}d|_|S)Nr)rdesc_signature_linesphinx_line_type)rrZr3r3r4makeLineYszDASTTemplateParams.describe_signature_as_introducer..makeLinerrTrFr)rrrrrrrry) r2rr[r\r,rrlineNoderrkr3r3r4 describe_signature_as_introducerVs   z2ASTTemplateParams.describe_signature_as_introducer)r;r<r=rrr5rhr>rTr*rrryrrErr3r3r3r4r4s0   rc @seZdZdededdfddZedefddZedefd d Z defd d Z dd e de ddde fddZ d e de fddZdede fddZdede ddddddf ddZdS) ASTTemplateIntroductionParameterrDrrzNcCr~r1)rDr)r2rDrr3r3r4r5srz)ASTTemplateIntroductionParameter.__init__cCrrrrr3r3r4rwrz%ASTTemplateIntroductionParameter.namecCrUr1)rr8r3r3r4r|rz'ASTTemplateIntroductionParameter.isPackcCrUr1rIr8r3r3r4rrVz/ASTTemplateIntroductionParameter.get_identifierrLrr,r-cCs0|dksJ|r|jjj|ddS|jrdSdS)NrrrRr)rr.rTrrr3r3r4rTs z'ASTTemplateIntroductionParameter.get_idcCs*|dksJ|j|}|jrd|S|S)Nrra)rDrTrrr3r3r4 get_id_as_args  z.ASTTemplateIntroductionParameter.get_id_as_argrcCs.g}|jr |d|||jd|SNrr)rrsrDrrr3r3r4rs   z+ASTTemplateIntroductionParameter._stringifyrZr[r\rcCs0|jr |tdd7}|j|||dd|dSr)rrrrDryrr3r3r4rysz3ASTTemplateIntroductionParameter.describe_signaturer)r;r<r=rCrEr5rrrrrrhr>rTrr*rrryr3r3r3r4rrs"  rc @sleZdZdedeeddfddZdedefdd Z d e defd d Z d e deddddde ddf ddZdS)ASTTemplateIntroductionrOrrzNcCs t|dksJ||_||_dSrE)rFrOr)r2rOrr3r3r4r5s z ASTTemplateIntroduction.__init__rLcCs|dksJg}|d|jD] }|||q|d|d||j||d|jD] }|||q6|d|dd|S)Nrrrrr)rsrrTrOrrrr3r3r4rTs          zASTTemplateIntroduction.get_idrcsRg}||j|d|dfdd|jD|dd|S)Nrrc3rr1r3)rrkrr3r4rrz5ASTTemplateIntroduction._stringify..z} r)rsrOrrrr3rr4rs     z"ASTTemplateIntroduction._stringifyrr[r\rr,r-rc Cst}||7}d|_|j|d|||tdd7}d}|jD]}|s3|tdd7}|t7}d}|||||q!|tdd7}dS)NtemplateIntroductionr`rTrFr)rrrrOryrrr) r2rr[r\r,rrZrrkr3r3r4rs  z8ASTTemplateIntroduction.describe_signature_as_introducer)r;r<r=rrrr5rhr>rTr*rrrErr3r3r3r4rs* rc @speZdZdeeeefddfddZdede fddZ d e de fd d Z d e d e dddddeddf ddZdS)ASTTemplateDeclarationPrefixrrzNcCrr1)r)r2rr3r3r4r5 z%ASTTemplateDeclarationPrefix.__init__rLcCs6|dksJg}|jD] }|||q d|S)Nrr)rrsrTr)r2rLrrr3r3r4rTs   z#ASTTemplateDeclarationPrefix.get_idrcCs(g}|jD] }|||qd|SrB)rrsr)r2rrrr3r3r4rs  z'ASTTemplateDeclarationPrefix._stringifyrZr[r\rr,r-rcCs*t||jD] }||d|||qdSNri)r6rr)r2rZr[r\r,rrr3r3r4rys z/ASTTemplateDeclarationPrefix.describe_signature)r;r<r=rr rrr5rhr>rTr*rrrEryr3r3r3r4rs&  rc @sPeZdZdeddfddZdedefddZd ej d ed d d dddf ddZ dS)ASTRequiresClauser rzNcCrr1r r r3r3r4r5rzASTRequiresClause.__init__rcCr))Nz requires r rr3r3r4rrKzASTRequiresClause._stringifyrZr[r\rr,r-cCrc)Nryrdrr3r3r4ryrez$ASTRequiresClause.describe_signature) r;r<r=rr5r*r>rrrryr3r3r3r4rs rc@seZdZ d%dededededededed ed d fd d Zd&ddZ e d e fddZ e d e efddZd'deded efddZd efddZded efddZdeded d!d"ed d f d#d$Zd S)(r/Fr directiveTyperrrequiresClauser.trailingRequiresClause semicolonrzNc Cs@||_||_||_||_||_||_||_||_d|_d|_ dSr1) rrrrrr.rrr,enumeratorScopedSymbol) r2rrrrrr.rrr3r3r4r5 s zASTDeclaration.__init__c Cs`|jr|jnd}|jr|jnd}|jr|jnd}t|j|j|j|||j||j Sr1) rclonerrr/rrrr.r)r2templatePrefixClonerequiresClasueClonetrailingRequiresClasueCloner3r3r4rs  zASTDeclaration.clonecCr-r1)r.rr8r3r3r4r&r.zASTDeclaration.namecCs|jdkrdS|jjS)Nrk)rr.rr8r3r3r4r*s zASTDeclaration.function_paramsTrLrcCs.|dkr#|jr t|jdkr|jr|jj|S|j||j|jS|jdkr3|jr3|jj||S|r;t|g}ng}|jrI||j||j sO|j r|dkrVt|d|j rf|j rf|d|j rs||j j ||j r||j j ||d||j||j|jd |S)NrN enumeratorrIQrrr) rr)rrr.rTr, _id_prefixrsrrr r)r2rLrrr3r3r4rT0s4       zASTDeclaration.get_idcCs |tdSr)rT_max_idr8r3r3r4 get_newest_idNrzASTDeclaration.get_newest_idrcCsg}|jr|jdkr||j|d|jr |||j|jr0|||j|d|||j|jrH|d|||j|jrP|dd|S)Nrvr;r)rrsrrr.rrrrr3r3r4rQs       zASTDeclaration._stringifyrZr[r\roptionsc Cst||js Jd|d<t}d|_|jj |d<|jr-|jj||||j|dd|j rFt}d|_| ||j |d||j||7}|j rb|j d krb|t |j |j 7}|t 7}|jd kr{|j}|t ||7}|t 7}n|jd kr|t d d 7}|t 7}n|jd krn|jd krn|jdkr|jdvsJ|t |j|j7}|t 7}nw|jdkr|t dd7}|t 7}nc|jdkr|t dd7}|t 7}|jdkr|t dd7}|t 7}n;|jdkr |t dd7}|t 7}n&|jdksJ|jn|jdkr*|t dd7}|t 7}nJ|j|j||||j|}|jrWt} d| _| | | }|j| d||j|jre|tdd7}dSdS)NT is_multiline declarator add_permalinktparam-line-spec)r,rrr`rvrrOrzrkrMrMrrr] enum-class enum-structrrFrr)r6r,rrrisRedeclarationrrygetrrsrrrrr.rqrrrr) r2rZr[r\r mainDeclNodereqNoder] lastDeclNodetrailingReqNoder3r3r4rycs                   z!ASTDeclaration.describe_signaturer)rzr/rg)r;r<r=r>rrrrEr5rrrrrrrrhrTrr*rrrryr3r3r3r4r/ s<   r/c@s4eZdZdededdfddZdedefdd ZdS) ASTNamespacerrrzNcCr~r1)rr)r2rrr3r3r4r5rzASTNamespace.__init__rcCs4g}|jr |||j|||jd|SrB)rrsrrrr3r3r4rs  zASTNamespace._stringify) r;r<r=rrr5r*r>rr3r3r3r4rs rc @s:eZdZdeddddeeefdededdf d d Z dS) SymbolLookupResultsymbolsr- parentSymbolr{rr^rzNcCs"||_||_||_||_||_dSr1)rrr{rr^)r2rrr{rr^r3r3r4r5s  zSymbolLookupResult.__init__) r;r<r=rr rCr|rr}r5r3r3r3r4rs rc@s4eZdZdeeeeeefe fddfddZ dS) LookupKeyrrzNcCrr1rrr3r3r4r5rzLookupKey.__init__) r;r<r=rr rzr rrr>r5r3r3r3r4rsrcs eZdZdZdZdZdZddZddZe de d d fd d Z dYd dZ de de d d ffdd Zdddeeefdeeefde dede ded d fddZdede ded d fddZdYddZdYd d!Zde d d fd"d#Zd ee fd$d%Zed ed&fd'd(ZdZd*d+Z d e!fd,d-Z"deeefde de#d.e$d/e$d0e$d1e$d dfd2d3Z%deeefde de#d.e$d/e$d0e$d1e$d4e$d edfd5d6Z&d7e!d8e'e d9e(deeefe e#gdfd:e$d;e d.e$d/e$d0e$d1e$d4e$d e)fdd?Z+d@ddAe'e dBdCd d fdDdEZ, d[d7e!dFe-d dfdGdHZ.dede ded dfdIdJZ/deeefd/e$d0e$d4e$d df dKdLZ0d\dMdNZ1d7e!d8e'e dOe d.e$d/e$d0e$d4e$d e2e'de ffdPdQZ3dedOe d.e$d/e$d0e$d df dRdSZ4dTed e fdUdVZ5dTed e fdWdXZ6Z7S)]r-rz FcCsJr1r3r8r3r3r4__copy__rzSymbol.__copy__cCs|jrJtdddddddSr1)rr-)r2memor3r3r4 __deepcopy__szSymbol.__deepcopy__rrzNcGs ttjtjddt|dS)Nrend)rnr-debug_indent_string debug_indentrr3r3r4 debug_prints zSymbol.debug_printcCsT|js|jrJ|jr J|jrJ|jrJ|jrJdS|jr&|js(JdSdSr1)rr{rr^r.docnamer8r3r3r4_assert_invariantss     zSymbol._assert_invariantsrrcs|dkrJt||S)Nchildren)super __setattr__)r2rr __class__r3r4rszSymbol.__setattr__rr{rr^r.rlinecCs~||_d|_d|_||_||_||_||_||_||_d|_ | g|_ g|_ |jr2|jj ||jr9||j_|dSr)r siblingAbove siblingBelowr{rr^r.rrrr _children _anonChildrenrsr,!_add_template_and_function_params)r2rr{rr^r.rrr3r3r4r5s$ zSymbol.__init__cCs||jdus J|jdusJ|jdusJ|dusJ|dus%J|dus+J||_||j_||_||_||dSr1)rr.rrr,r)r2r.rrr3r3r4 _fill_emptys    zSymbol._fill_emptyc Cs6tjrtjd7_td|jrI|jjD]2}|sq|jr+tddddd|d}nd}t |d}t |gdgdd}| |g||j |j q|jdur|jjdur|jjD]4}|jdur`qX|jj}|duriqXtddddd|d}|jrxJt|jdksJ| |g||j |j qXtjrtjd8_dSdS)NrNz"_add_template_and_function_params: templateParamFr functionParam)r- debug_lookuprrrrrr.r/rzr _add_symbolsrrrrrrrFr)r2tprirnnfpr3r3r4r s6     z(Symbol._add_template_and_function_paramscCs6|jdurdS||jjvsJ|jj|d|_dSr1)rrremover8r3r3r4rDs  z Symbol.removecCsg}|jD]7}|||jr7|j|kr7d|_d|_d|_|jdur'|j|j_|jdur1|j|j_d|_d|_||q||_dSr1)r clear_docr.rrrrrs)r2r newChildrensChildr3r3r4rKs        zSymbol.clear_docccs&|V|jD] }|EdHqdSr1)rget_all_symbols)r2rr3r3r4r\s  zSymbol.get_all_symbols)r-NNccs0|jD]}|V|jsq|jEdHqdSr1)rr{rJchildren_recurse_anon)r2rr3r3r4ras  zSymbol.children_recurse_anonrcCsg}|}|jr|||j}|js|g}|D]$}t|j|j}|jdur5|||j|jfq|||jdfqt |Sr1) rrsreverserzr{r^r.rrr)r2rrrrr3r3r4rqjs  zSymbol.get_lookup_keycCsjg}|}|jr|||j}|js|g}g}|D]}|t|j|j|dqt||ddSr)rrsrrzr{r^r)r2rrrrr3r3r4rm~s  zSymbol.get_full_nested_nametemplateShorthand matchSelf recurseInAnoncorrectPrimaryTemplateArgsc CsJtjrtd|j|||||||dd}zt|WSty$YdSw)Nz_find_first_named_symbol ->F)searchInSiblings)r-rr_find_named_symbolsr6 StopIteration) r2r{rr^rrrrrr3r3r4_find_first_named_symbols    zSymbol._find_first_named_symbolrc #stjrXtjd7_tdtjd7_tdttjdddtdtdtdtd td td td |td |dtffdd } |rqdurqdurq| sqddddtffdd } dttddfffdd } | D]=} tjrtdt| tjddd| | rtjrtjd7_tdtjd8_| Vtjrtjd7_qtjrtjd8_dSdS)NrNz_find_named_symbols:self:rrzidentOrOp: ztemplateParams: ztemplateArgs: ztemplateShorthand: zmatchSelf: zrecurseInAnon: zcorrectPrimaryTemplateAargs:zsearchInSiblings: rzcstjtjkr dStjdkrdSttjD]3}j|}j|}t|j}t|}|d}|j|kr>dS|rF|ddn|}||krOdSqdS)NTrrF)rFrrrr>rendswithr)rrkr paramNameargTxtisArgPackExpansionargName)r^rr3r4isSpecializations"     z4Symbol._find_named_symbols..isSpecializationrr-cs|jkrdS|jdudukrdurdSsdSr't|jtkr'dS|jdudukr2dS|jr@t|jtkr@dSdS)NFT)r{rr>r^r)r{r^rrr3r4matchess z+Symbol._find_named_symbols..matchesc3s}tjrtdt|tjddd r|Vr&|jEdHn|jEdH|jdur3dS|j}tjrJtdt|tjdddq)Nzsearching in self:rNrrTzsearching in sibling:) r-rrrn to_stringrrrrr)rrr2r3r4 candidatess$    z.Symbol._find_named_symbols..candidates candidate:rrMr)r-rrrrnrrEr) r2r{rr^rrrrrrrrrr3)r{rrr2r^rrr4rsL              zSymbol._find_named_symbolsr templateDeclsonMissingQualifiedSymbolstrictTemplateParamArgListsancestorLookupTypec  Csrtjretjd7_tdtjd7_tdt|tjdddtd|tddd d |Dtd |td |td |td|td|td| td| |r||t|ks{|dt|ks{Jn t||dksJ|j } |} |j r| j r| j } | j s|dur| d} | s| j r| j | j||| drt| dkr|dkr|r| j r| j j| jkrnn| j } | j stjrtdt| tjdddd}| ddD]g}|j}|j}|r|r |t|ksJ||}|d7}nd}n|r"|t|kr"||}|d7}nd}| j||||||| d}|durO|| |||}|durOtjrLtjd8_dSd}|} qtjritdt| tjddd| d}|j}|j}|t|kr|dt|ksJ||}n |t|ksJd}| j||||||d| d}tjrt|}tjd8_t|| |||S)NrNz_symbol_lookup:r rrznestedName: ztemplateDecls: rcs|]}t|VqdSr1rrrr3r3r4rrz(Symbol._symbol_lookup..zstrictTemplateParamArgLists:zancestorLookupType:ztemplateShorthand: zmatchSelf: zrecurseInAnon: zcorrectPrimaryTemplateArgs: zsearchInSiblings: rrrrrMzstarting point:rrrrrrFzhandle last name from:)rrrrr)r-rrrrnrrrrFrrrrfind_identifierr{r^rrlistr)r2rrrrrrrrrrrr firstName iTemplateDeclrr{r^rr,rr3r3r4_symbol_lookups                 zSymbol._symbol_lookupc stjr9tjd7_tdtjd7_tdddd|Dtd|tdtd d d d tttfd t dt dd f dd}|j |||dddddddd dusaJt j }t|dkrtjrtdtjd7_tdjtdjtdjtdtdtjd8_tjjjjd}tjrtjd8_|Stjrtdtjd7_tdt|tjd8_stjrtd tjd8_|dSg} g} g} |D]} | jdur | | q| jr| | q| | qtjr6td!t| td"t| td#t| d1fd$d% } t| dkrJd}nY| }d2fd(d) }jd*krjt| dkscJ|| d|}tjrxtd+|| D](}|jjd*kr||||j}tjrtd,|||kr|||qzt| dkrtjrtd-|durtd.ntd/tjd8_|dur|S| Stjrtd0|dutjd8_|dur|| d}||S)3NrNz _add_symbols:ztdecls:rcsrr1rrr3r3r4rrz&Symbol._add_symbols..z nn: z decl: zlocation: {}:{}rr-r{rr^rzc Ssttjr/tjd7_tdtjd7_td|td|td|tjd8_t||||ddddS)NrNz'_add_symbols, onMissingQualifiedSymbol:templateParams:identOrOp: ztemplateARgs: rrr{rr^r.rr)r-rrrrr{rr^r3r3r4rs    z5Symbol._add_symbols..onMissingQualifiedSymbolTFrrrrrrrrz _add_symbols, result, no symbol:r#r$ztemplateArgs: zdeclaration: zlocation: {}:{}r%rz_add_symbols, result, symbols:znumber symbols:zno declarationz #noDecl: z #withDecl:z #dupDecl: c sBtjrtdtjjjjd}tjrtd|S)Nz begin: creating candidate symbolr%z end: creating candidate symbol)r-rrrr{rr^rr.rr lookupResultr3r4makeCandSymbols  z+Symbol._add_symbols..makeCandSymbolr, candSymbolcsJtjrtjd7_tdtjd8_tjd8_d|_t|)NrN redeclarationrT)r-rrrrr+)r,r+r.r3r4handleDuplicateDeclarations  z7Symbol._add_symbols..handleDuplicateDeclarationrkzcandId:zoldId: zno match, no emptyz$result is already created candSymbolzresult is makeCandSymbol()zAno match, but fill an empty declaration, candSybmol is not None?:)rzr-)r,r-r+r-rzN)r-rrrrrr rCr|rr}r"rrrFrr{r^rr.rsrrrrr)r2rrr.rrrrr,noDeclwithDecldupDeclrr*r+r.candIdoldIdr3r(r4rs                              zSymbol._add_symbolsrdocnamesr\rc Cstjrtjd7_td|dusJdd}tjr#tjd7_|jD]:}tjr=td|tjtjd7_|jrU|||tjrTtdtjd8_q&|j|j|j |j dddddd}t |}tjrttd t |d d |D}tjrtd t |t |d kr|||tjrtjd8_q&d} |j durtjrtd|d } n9|j } tjrtd| |D](} | j durtjrtd| } q| j } tjrtd| | | kr| } nqtjrtjd8_| dur|||q&|j rZ|j|vrZ| j s| |j |j|jnD| j|jkr>t| j } td}|| j| j| j j| f}tj||j|jfdnd}|d| d7}|d|d7}tj||jd| |||q&tjrotjd8_dSdS)NrNz merge_with:cSs|j|||_|dSr1)rrsrr)r2 otherChildr3r3r4unconditionalAddCs  z+Symbol.merge_with..unconditionalAddz otherChild: rF)r{rr^rrrrrzraw candidate symbols:cSsg|]}|js|qSr3)rrrr3r3r4r`sz%Symbol.merge_with..z non-duplicate candidate symbols:rzno declaration in other childz queryId: zempty candidaterRDuplicate C++ declaration, also defined at %s:%s. Declaration is '.. cpp:%s:: %s'.locationz1Internal C++ domain error during symbol merging. z ourChild: z otherChild: r)r-rrrrrrrr{rr^rrFr.rrrrr>rrloggerwarning merge_with)r2rr4r\r6r5 candiateIterrrourChildqueryIdr,r2rmsgr3r3r4r=<s                   zSymbol.merge_withrcCsZtjrtjd7_td|r|j}ng}|j||dddd}tjr+tjd8_|S)NrNz add_name:)r.rr)r-rrrrr)r2rrrrr3r3r4add_names zSymbol.add_namecCstjrtjd7_td|dusJ|dusJ|dus!J|j}|jr,|jj}ng}||||||}tjrAtjd8_|S)NrNzadd_declaration:)r-rrrrrrr)r2r.rrrrrr3r3r4add_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) NrNzfind_identifier:zidentOrOp: zmatchSelf: zrecurseInAnon: zsearchInSiblings:rrrztrying:) r-rrrrnrr{rrr)r2r{rrrcurrentrrr3r3r4rs<       zSymbol.find_identifierc Cs6tjrtjd7_tdtjd7_|}|jD]s\}}}|dur@d}|jD]}|jdur1q)|j|kr<|}nq)|}n|j}|j } |j ||| ddddd}tjr}td|td|td||durxt | tjddd ntd |durtjrtjd 8_dSqtjrtjd 8_|S) NrNzdirect_lookup:Frzname: r#zid: rrz not foundr) r-rrrrrr.rr{r^rrnr) r2rrrrrrcandr{r^r3r3r4 direct_lookupsP       zSymbol.direct_lookuprFc stjrQtjd7_tdtjd7_tdt|tjdddtd|td|td|td |td |td |td |Gd ddtdddttt fdt dt ddf fdd }z|j |||d||||d|d } Wn yYdSw| durtjrtjd8_dSt | j} t| dkrtjrtjd8_| dfS| jjdur| jjjdkrdS| jj| jdd|||dd} tjrtjd8_| dur| gdfSdS)NrNz find_name:r rrznestedName: ztemplateDecls: ztyp: ztemplateShorthand:zmatchSelf: zrecurseInAnon: zsearchInSiblings: c@r?)z8Symbol.find_name..QualifiedSymbolIsTemplateParamNrAr3r3r3r4QualifiedSymbolIsTemplateParamrBrGrr-r{rr^rzcs |jdur|jjdkrdS)Nr)r.rr&rGr3r4rs  z2Symbol.find_name..onMissingQualifiedSymbolFr')NtemplateParamInQualifiedrrrrr)r-rrrrnrrtr rCr|rr}r"rrrFrr.rrr{) r2rrrFrrrrrr)rr,r3rHr4 find_namesv                zSymbol.find_namec Cs tjrtjd7_td|j}|jr|jj}ng}dddttt fdt dt ddf d d }|j |||d ||||d d d } tjrHtjd8_| durNdSt | j} t| d kr[dSt| j| j| j| j|ddd} |} | D]} | jdurxqp| j}|| kr| | Sqp| dS)NrNzfind_declaration:rr-r{rr^rzcSdSr1r3r&r3r3r4r`sz9Symbol.find_declaration..onMissingQualifiedSymbolFr'rfakeDocnameForQuery*r%)r-rrrrrrr rCr|rr}r"rrrFrr{rr^rr.r)r2r.rFrrrrrrr)r querySymbolr@r,r2r3r3r4find_declarationTsh         zSymbol.find_declarationindentcCstj|g}|js|dnO|jr'|t|j|d|tj||jr3|t|jn|t|j|jrF|t|j|jr^|d|j rV|d|t|j|j rq|d||j |d|dd |S)Nr z: z!!duplicate!! z (rr) r-rrrsrr>r{r.r^rrr)r2rPrr3r3r4rs.          zSymbol.to_stringcCs6||g}|jD] }|||dq d|S)NrNr)rrrsr7r)r2rPrrr3r3r4r7s   z Symbol.dumprzN)rzrr1)rrrzr-)8r;r<r=rrrdebug_show_treerr staticmethodrrrr>rr rCr|rrr/rhr5rrrrrrrrrrqrrmr}rErrrrrr"rr=rrBrCrrFr rJrOrr7 __classcell__r3r3rr4r-s"      $   j  6 c   ) M 6r-c @seZdZedefddZeddZeddZdefdd Zde fd d Z de fd d Z de fddZ dedededeeee efeffddZdefddZdee effddZdefddZdeeeffddZdefddZde fdd Zde fd!d"Zd#ede fd$d%Zd&edd'fd(d)Zd#ede fd*d+Z d#ede fd,d-Z!de fd.d/Z" 0d}d1eed2e#ge fd3ede fd4d5Z$de%fd6d7Z&de'fd8d9Z(d~d;ede)fdd?Z,de-fd@dAZ.dBede/fdCdDZ0dEedFede1fdGdHZ2d}dEedFede3fdIdJZ4dKeeefdBedFedee5e6ffdLdMZ7 0d}dKeeefdBedFede8fdNdOZ9ddEedPede:fdQdRZ;ddKeeefdEedee?ffdUdVZ@deAfdWdXZBdeCfdYdZZDdeEfd[d\ZFdeGfd]d^ZHdeIfd_d`ZJdeKfdadbZLdeMfdcddZNdeOfdedfZPdeQfdgdhZRdeSeTfdidjZUdkedeSeVfdldmZW :d~dne)doeVdpedqedeVf drdsZXdkedtedeYfdudvZZde[fdwdxZ\deee[eYfeffdydzZ]dee e._udlrprTraFrNrz8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)rskip_ws skip_wordrrrarhr/r0rrdr-r1r3r5r4rgrr. last_matchgrouprUnicodeDecodeErrorrcr+) r2rkra hasSuffixfloatLitregexintLitstringr]rcharLitrr3r8r4_parse_literalsV               zDefinitionParser._parse_literalc Cs|jdkrdS|jd7_||dr8|ts!|d|j}|}| ds2|dt d||S|j}z)||}||tsR|d|j}||dsc|dWnGt y}z;||_z| }|| ds|d Wnt y}z | |d f|d fgd |d}~wwt|WYd}~Sd}~ww| drt ||dS|ts|d ||jkr|d||jf|}|| ds|dt |||S)NrrNrz6Expected fold operator after '...' in fold expression.rz'Expected ')' in end of fold expression.z@Expected fold operator after left expression in fold expression.z6Expected '...' after fold operator in fold expression.z0Expected ')' in end of parenthesized expression.zIf fold expressionzIf parenthesized expressionz5Error in fold expression or parenthesized expression.z=Expected fold operator or ')' after '...' in fold expression.z6Operators are different in binary fold: '%s' and '%s'.z+Expected ')' to end binary fold expression.)r`rarlskip_string_and_wsrh_fold_operator_rercrj_parse_cast_expression skip_stringrr(_parse_expression_make_multi_errorr)r2rrrareFoldreExprr3r3r4_parse_fold_or_paren_expressionsv                     z0DefinitionParser._parse_fold_or_paren_expressioncCsd||}|dur|S||drtS|}|dur$|S|}|dur0t|SdSr)rlrwrmrr_parse_nested_namer)r2rrr3r3r4_parse_primary_expressionCs z*DefinitionParser._parse_primary_expressionropenclosecCs|||s dS||rgdfSg}d} ||}||dr2|t|n|||||rE ||fS|dsS|d||f|j|krj|dkrj|jd7_d} ||fSq) NrFTrrz"Error in %s, expected ',' or '%s'.rrN) rlrxr{_parse_initializer_clausersr`rcr`ra)r2rrrr>rr r3r3r4_parse_initializer_listZs4      z(DefinitionParser._parse_initializer_listcCs&|ddd\}}|durdSt|S)Nzparenthesized expression-listrr)rr;rr3r3r4_parse_paren_expression_list|s z-DefinitionParser._parse_paren_expression_listcCs |}|dur |S|jddSNF inTemplate)_parse_braced_init_list_parse_assignment_expression)r2bracedInitListr3r3r4rs z*DefinitionParser._parse_initializer_clausecCs(|ddd\}}|durdSt||S)Nzbraced-init-listrr)rr<rr3r3r4rs z(DefinitionParser._parse_braced_init_listcCs|}|dur |S|Sr1)rr)r2parenr3r3r4*_parse_expression_list_or_braced_init_listsz;DefinitionParser._parse_expression_list_or_braced_init_listc sLd}d}d}tD] }|r|}nq |dursd}ds*d|d}ds?d|dsKd|d tffd d }d g|}d skd |t |||}ndrd}dsdj }zd}t |dd}d sdWnt y} zX|_ z"d tffdd }d g|}t |dd}d s̈dWn,t y} z |_ d} | d7} g} | | df| | df| | | d} ~ wwWYd} ~ ntd} ~ wwj }z}d}Wnct ys} zV|_ zdd}d}jdkr:jdkr:dWn-t yh}z |_ d} | d7} g} | | d f| |df| | |d}~wwWYd} ~ nd} ~ wwg} |d!vrd"r}d#sd$| t|qvd%rшd&rj d'8_ nd(rĈj d)8_ n }| t|qvd*rd&rj d)8_ n }| t|qvd+r| tqvd,r| tqv}|dur | t|qv t||S)-Nr rzExpected '<' after '%s'.Frz Expected '>' after type in '%s'.rzExpected '(' in '%s'.rzcSr1r|r3r8r3r4parserr3z:DefinitionParser._parse_postfix_expression..parserrzExpected ')' to end '%s'.rzExpected '(' after 'typeid'.T)rKz%Expected ')' to end 'typeid' of type.crr1rr3r8r3r4rr3z+Expected ')' to end 'typeid' of expression.zError in 'typeid(...)'.z Expected type or expression.If type If expressionr  operatorCasttypeOperatorCastrz3Expecting '(' or '{' after type in cast expression.zError in postfix expression,z% expected primary expression or type.zIf primary expression)r r rr$r%z*Expected ']' in end of postfix expression.r*rrz..rMrrr)rlrGskip_word_and_wsr{rc _parse_typerxr_parse_expression_fallbackrErarIr(rsr}rr`r|r"rr(r.r0r6rr8r?)r2 prefixTyper]r rrFrr raeTyperheadererrorseOutereInnerrArr9r3r8r4_parse_postfix_expressions                                 z*DefinitionParser._parse_postfix_expressionc Cs|tD] }|ddvr||}n||}|r&|}t||Sq|dr|dr\|ds;|d| t sE|dt |j }||dsX|d t |S|dry|jd d }||dsu|d t|S|}t|S|d r|ds|d|jd d }||ds|dt|S|dr|ds|d|}||ds|dt|S|j}|d}||ds||_n/d}|dr|d|r|jdd} |jd dd} n|d|} t||t| | | S|j}|d}||ds*||_|S|d} | r=|ds=|d|}t|| |S)NrrRr}rrz Expecting '(' after 'sizeof...'.z%Expecting identifier for 'sizeof...'.rz!Expecting ')' to end 'sizeof...'.FnamedzExpecting ')' to end 'sizeof'.r>zExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.rmzExpecting '(' after 'noexcept'. Expecting ')' to end 'noexcept'.rrlTzYSorry, neither new-placement nor parenthesised type-id in new-epression is supported yet.rr paramModezASorry, parenthesised type-id in new expression not yet supported.rXr$r%z(Expected ']' in array delete-expression.)rl_expression_unary_opsrmr{rzrPrrxrcrhr2rCrjrTrrX_parse_unary_expressionrarfr|rhra_parse_decl_specs_parse_declaratorrrlr@rqr) r2rrr rrFrarrmrhrir9rrr3r3r4r4s                                       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)NrFrz Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.) rarlr{rrcrzrvr(rrsr})r2rarFr exCastexUnaryerrsr3r3r4rzs6      z'DefinitionParser._parse_cast_expressionrcs,dtdtdtdtffdd |d|dS) Nr2opIdrrzc s(dttkrdtdtffdd }n dtdtffdd }g}g}|||d |r:jd kr:nUj}d }tD]G}|d d vrR|sQqCn |sXqC|d krjjd krjjd8_n!z||d} || ||d}Wn t y|_YqCw|snq.t ||S)NrNrrzcrr1)rzrr8r3r4rr3zYDefinitionParser._parse_logical_or_expression.._parse_bin_op_expr..parsercsd|dS)NrNrr3r)_parse_bin_op_exprrr2r3r4rrYrTrFrrr) rF_expression_bin_opsrErrsrlr`rarmr{r(r{) r2rrrr>r|raoneMorerr r)rr2r4rsF          zIDefinitionParser._parse_logical_or_expression.._parse_bin_op_exprrr)rVrhrEr)r2rr3rr4_parse_logical_or_expressions (z-DefinitionParser._parse_logical_or_expression orExprHeadNcCrKr1r3)r2rr3r3r4"_parse_conditional_expression_tailrz3DefinitionParser._parse_conditional_expression_tailcCsg}g}|j|d}|| d}|tD]%}|ddvr'||s&qn||s-q|}||||d}q|sAnqt|dkrJ|St||S)NrTFranox) rrsrl_expression_assignment_opsrmr{rrFr)r2rr>r|orExprrrr r3r3r4rs0          z-DefinitionParser._parse_assignment_expressioncCs|j|d}|SNr)r)r2rrr3r3r4_parse_constant_expression s z+DefinitionParser._parse_constant_expressioncCsT|jddg} ||dsn ||jddqt|dkr&|dSt|S)NFrTrrNr)rrlr{rsrFrrr3r3r4r|s  z"DefinitionParser._parse_expressionTrrallowc CsF|j}z|WSty)}z|r|js|d|||_WYd}~nd}~ww|dus0J||j}|tr@|j}n]ddddd}g} |jst | dkrX|j |vrXn+|j | vrh| ||j nt | dkry|j | dkry| |jd 7_|jrLt |dkr|jr|d ||j||j}t|S) NzBParsing of expression failed. Using fallback parser. Error was: %srrr%r)rrr$rrrrNz0Could not find end of expression starting at %d.)rar(allowFallbackExpressionParsingwarnrlrh _string_rerjrbrFr`keysrsrrcrdstripr) r2rrrprevPosrrerbracketsrr3r3r4rsD    z+DefinitionParser._parse_expression_fallbackcCs||trt|jSdD],}||sq||dr7||ds3|d|d|d7}t|S|drY||tsP|dt |j}t |S|j d d d }t |S) N)rlrXr$r%zExpected "]" after "operator z["rrz%Expected user-defined literal suffix.Frrr) rlrh _operator_rerrjrmr{rcr2rCrrr)r2rrDrr3r3r4_parse_operatorIs*          z DefinitionParser._parse_operatorc Cs||ds dS|drtgdSg}g}d} |j}d}d}z:|jdd}||drBd}d}|dsA|dn|drJd}n |d rRd}n|d ||Wnxty}zl||d f||_z<|j dd } ||drd}d}|ds|dn|drd}n |d rd}n|d |t | Wnty}z||_||d fd} | || |d}~wwWYd}~nd}~ww|r|rJn|rJqt||S)NrrFrNrrTz3Expected ">" after "..." in template argument list.rz6Expected "...>", ">" or "," in template argument list.zIf type argumentrzIf non-type argumentz(Error in parsing template argument list.) rlrxr{r}rarrcrsr(rrr}) r2 prevErrorsr^rra parsedComma parsedEndrrrrr3r3r4_parse_template_argument_listisz                   /z.DefinitionParser._parse_template_argument_listF memberPointerc CsJg}g}|d}|drd} |t|dkr"|d}nd}||d}|dr5|}n)|tsL|rGt|dkrG|nX| d|j }|t vrZ| d |t |}|j }z|} Wnty} z||_ d} |j| WYd} ~ nd} ~ ww|t|| ||ds|r| d nqt|||S) NFrTrNrrrqz#Expected identifier in nested name.z3Expected identifier in nested name, got keyword: %sz.Expected '::' in pointer to member (function).)rlr{rFrrsrrhr2rrcrj _keywordsrCrarr( otherErrorsrzr) r2rrrrrr{rDrar^exr3r3r4rsV            &z#DefinitionParser._parse_nested_namecCsd}d}g}d}g}||tr|j}|||dvr/|dur,|d|||}nc|dvrC|dur@|d|||}nO|dkr^t|dkrX|d||d||n4|dkrt|dkry|ddkry|d||d||n|dvr|dur|d|||}||tst|dkrdS|dvr|dur|d|||dur|d||t|dkr|d|d |n|d kr|dur|d||t|dkr|d|d |n|d kr |dur |d||n|d vr3|dur|d||t|dkr2|d|d |n|d krZ|durF|d||t|dkrY|d|d |n[|dkr|durm|d||t|dkr|d|d |t|dkr|ddkr|d|d |n|dur|dur|d|nJd|g}|dur|||dur||| ||dur||t ||S)N)rBrrErIrrJrKrLrhrrrbrZrrrrzCan not have both {} and {}.)r|rr{rri) _Imaginary_Complex) rBrrErrJrKrLrrrrrrIrh)rrrbrZrNz.Can not have {} without a floating point type.FzUnhandled type {}) rlrh_simple_type_specifiers_rerjrsrcrrFrr r)r2modifier signednesswidthrFrrrr3r3r4_parse_simple_type_specifierss                          z.DefinitionParser._parse_simple_type_specifierscCs4||}|dur|S||drI|ds!|d|dr3|ds0|dtS|}||dsE|dt|Sd}|dD] }||r\|}nqQ| }|d}| drod}n%|dr|ds~|d |ds|d |ds|d d }t |||S) NrVrzExpected '(' after 'decltype'.rBrz#Expected ')' after 'decltype(auto'.z%Expected ')' after 'decltype('.)rMrr]rrzDefinitionParser._parse_declarator_name_suffix..parserz&Expected ']' in end of array operator.rrrr3r+)rarr(rhr2rCrjrzrrlr`rcr{rsrrrrrFrr2r') r2rrrrar(rDrr)rrr*rr3r8r4_parse_declarator_name_suffix>s\               z.DefinitionParser._parse_declarator_name_suffixc Cs|dvr td|g}||rT|drT|d}d}g} |s,|d}|r,q!|s6|d}|r6q!|}|durD||q! ||||} t| |||dS|rz|d rzg} |}|durgn||q^||||} t| |d S|r|d r|||d} t | d S|r|j d kr|dkrt dgddS|j } z | |||} | WSty} z]|| df| |_ z2|j d ksJ|d ||||} |ds|d|jdd|d} t| | dWWYd} ~ Sty}z| |_ ||dfd}||||d}~wwd} ~ ww|r|j } z|jdd}||ds5|d|WntyW}z| |_ ||dfWYd}~n4d}~wwd}d} |sj|d}|rjq\|sw|d}|rwq\ ||||} t|||| d S|j } z| |||} |j dkr|j||d| WSty}z| |_ ||dfd}||||d}~ww) N)rrkrrlz'Internal error, unknown paramMode '%s'.rFrNrrPr7rrGrrPrrr+z/If declarator-id with parameters-and-qualifiersrz$Expected ')' in "( ptr-declarator )"rrrrr]z"If parenthesis in noptr-declaratorzError in declaratorT)rz-Expected '*' in pointer to member declarator.zIf pointer to member declaratorrrzIf declarator-idz0Error in declarator or parameters-and-qualifiers)rtrlr{rrrsrr5rErNr`r'rarr(rcr[r}rrTr)r2rrrrrrPrrr6rar exParamQualr\ exNoPtrParenrrrr3r3r4rus                z"DefinitionParser._parse_declarator allowFallbackcs|dkr}|durt|ddSdsdS}|dur)t|S|dkr0g}n|dkr9ddg}n|durBddg}nd ||dkd tffd d }j|||d }t|S)NrzF)rcrrrrrz;Internal error, initializer for outer '%s' not implemented.rzcs jdSr)rr3rr2r3r4rrz3DefinitionParser._parse_initializer..parser)r)rlrrbr{rcrr)r2rr bracedInit fallbackEndrrr3rr4_parse_initializers.    z#DefinitionParser._parse_initializerc Cs|r|dvr td||dkr|sJ|dvrg}|j}z|j|dd}|jd|dd}|jdd Wnty}zr|d krCd }n |d krJd }nJ|||f||_z|j|d}|jd|d}WnBty} z6||_|d krwd}n |d kr~d}nJ|| |f |d krd} | d7} n |d krd} nJ||| | d} ~ wwWYd}~n*d}~wwd } |dkrd}n|dkrd} d}n|dkrd}|j|d}|j|| d}t||S)z named=False|'maybe'|True: 'maybe' is e.g., for function objects which doesn't need to name the arguments outer == operatorCast: annoying case, we should not take the params )rrzrkrrrr)rrkF)rrTr)allowSemicolonrzIf just a namerkz"If the function has no return typerrIf typedef-like declarationz!If the function has a return typez%Type must be either just a name or a ztypedef-like declaration.z(Error when parsing function declaration.Nrzrr) rtrarr assert_endr(rsr}r@) r2rrrrerhri exUntypeddescexTypedrrrr3r3r4rsr    ,  zDefinitionParser._parse_typec Cs^|r|dvsJ|j||d}|dkr|j|d}t||S|j}d}z-|j|dd}|dur5t|dWS||jdkrI|jdkrI||_d}nt||WSWntyg}z ||_|}WYd}~nd}~ww|d srt|dSz |jddd }t||WSty} z#|dur| g} | |d f| | d fd } | d7} | | | | d} ~ ww)NrrrrF)rrrrrrz-If default template argument is an expressionz&If default template argument is a typez$Error in non-type template parameterz# or constrained template parameter.) rrrrarlr`r(r{rrsr}) r2rrrrrrarrtypeInitrrrAr3r3r4rnsN        z&DefinitionParser._parse_type_with_initcCs:|}||dst|dS|dd}t||S)NrF)rrlr{r~rrr3r3r4_parse_type_usings     z"DefinitionParser._parse_type_usingcCs$|}||d}t||S)Nrz)rrlrrrr3r3r4_parse_concepts  zDefinitionParser._parse_conceptcCs|}||d}g}||dra |d}d}d}|dr*d}|tr6|j}||s?|dr?d}|}||d}|t||||||dr`q t |||S) NrrrNFrTrr) rrlrr{rh_visibility_rerjrsrr)r2rrrrrrbaseNamer3r3r4 _parse_classs6       zDefinitionParser._parse_classcCs|}t|Sr1)rrrr3r3r4 _parse_unionszDefinitionParser._parse_unioncCsBd}||}|d}|dr|jdd}t|||S)NrFr)rlrr{rr)r2rrrr3r3r4 _parse_enums   zDefinitionParser._parse_enumcsV}d}dr&dtffdd }g|}t|}t||S)Nrrzcs jddSr)rr3r8r3r4rrz2DefinitionParser._parse_enumerator..parser)rrlr{rrrbr)r2rrrrinitValr3r8r4_parse_enumerators   z"DefinitionParser._parse_enumeratorc Cs||dr|}nd}|j}zpd}||dr"d}n|dr*d}n |r2|dn|d||d}||trOt |j }nd}||sd|drd|j ddd }n d}|j d vrp|d t ||||}|rt||WSt|WSty}z?|rz||_|d d } t| WWYd}~Sty} z||_d} g} | |df| | df|| | d} ~ wwd}~ww)NrrrMzFExpected 'typename' or 'class' after template template parameter list.zKExpected 'typename' or 'class' in the beginning of template type parameter.rrFrz,>z4Expected "," or ">" after (template) type parameter.rrz&Error when parsing template parameter.z:If unconstrained type parameter or template type parameterz3If constrained type parameter or non-type parameter)rlrm_parse_template_parameter_listrarrcr{rhr2rCrjrr`rrrr(rrrsr}) r2rrarrrDrWrrrkeNonTyperrr3r3r4_parse_template_parametersn               z*DefinitionParser._parse_template_parameterc Csg}||ds|d |j}d}z |}||Wnty8}z ||_|}WYd}~nd}~ww||drFt|S|drLqd}g}|rY||dfz|dWntyy}z ||d fWYd}~nd}~wwt|| ||) NrzExpected '<' after 'template'rNrrz!Error in template parameter list.z If parameterzExpected "," or ">".zIf no parameter) rlr{rcrarrsr(rrnr}) r2rraerrrkeParamrrrr3r3r4r!s@     z/DefinitionParser._parse_template_parameter_listcCs|j}z|}Wn ty||_YdSw||ds%||_dSg} ||d}||ts?|d|j}|t vrM|d|t |}| t ||||drcn |driq'|dq(t ||S) NrrNrz2Expected identifier in template introduction list.zBExpected identifier in template introduction list, got keyword: %srrz:Error in template introduction list. Expected ",", or "}".)rarrtrlr{rhr2rcrjrrCrsrr)r2rarOrrtxt_identifierrDr3r3r4_parse_template_introductionBsB          z-DefinitionParser._parse_template_introductioncCs||ds dSdtdtfdd}g}g}||| |d}|dr3d}|dn |d r?d}|d |sBn|||q t|d krVt|d Stt||S) Nryr2rzcSsg}g}|| |d}|drd}|dn |dr+d}|d|s.n||q t|dkr@|dSt||S)NTFrr?rNr)rsrrlr{rmrFr{)r2andExprsr|rr3r3r4parse_and_exprts&      z?DefinitionParser._parse_requires_clause..parse_and_exprTFrrrrNr) rlrmrVrrsr{rFrr{)r2rorExprsr|rr3r3r4_parse_requires_clausehs.      z'DefinitionParser._parse_requires_clauserc Csg} |d}|j}|dr:z|}Wn)ty9}z|dkr3t|dkr3tdWYd}~S|d}~ww|}|sAn|dkrSt|dkrS||_|d| |qt|dkrh|dkrh|dt|dkrpdSt|S)NrNrrzrrOz0More than 1 template parameter list for concept.z,Missing template parameter list for concept.) rlrarmrr(rFrrrcrs)r2rrrrarr3r3r4"_parse_template_declaration_prefixs6      z3DefinitionParser._parse_template_declaration_prefixrrfullSpecShorthandisMemberc Cs|}d}|s d}n|r|jdurd}d}nt|j}|d|kr+|d||f||krs||}|sU|sUd|||f} | d7} |rJ| d|7} | t|7} || g} t|D] } | tgq[|ro|so| |jt | }|S) NFrTrNzeToo few template argument lists comapred to parameter lists. Argument lists: %d, Parameter lists: %d.zToo many template argument lists compared to parameter lists. Argument lists: %d, Parameter lists: %d, Extra empty parameters lists prepended: %d.z Declaration: z%s ) rrrFrcr>rrrsrr r) r2rrrrnumArgsisMemberInstantiation numParamsnumExtrarA newTemplatesrr3r3r4_check_template_consistencys<       z,DefinitionParser._check_template_consistencyrc Cs|dvr td||dvrtd|d}d}d}d}d}||tr*|j}|dvr?||}|dkr?|dur?|}|dkrg}|j} z |sR|jddd }Wnt yo} z| | d f| |_WYd} ~ nd} ~ ww|j} z|sz| }Wnnt y} z| |_| | d fd } | || | d} ~ ww|d kr| }nF|dkr|jddd }n:|dkr|jddd }|dur|}n&|dkr|}n|dkr|}n|dkr|}n |dkr|}nJ|j|j|d|dkd}||d} t|||||||| S)N)rMrrkrzrrOr]rz(Internal error, unknown objectType "%s".) rMrrrkrzvarrrOr]rrrz+Internal error, unknown directiveType "%s".)rrOrzrkrMrkrTrrzIf type alias or template aliaszError in type declaration.rOrzrMrr]rF)rrr)rtrlrhrrjrrrarr(rsrr}rrrrrrrrr{r/) r2rrrrrrr.rrarrrr3r3r4parse_declarations          z"DefinitionParser.parse_declarationcCs8|jdd}|}|j||dd}t||}d|_|S)NrkrFr)rrrrr)r2rrrr3r3r4parse_namespace_object(s  z'DefinitionParser.parse_namespace_objectc Cs|j}z,|jdd}|}||d||j||dd}t||}d|_|dfWSt y}zGz!||_| dd}||d||dfWWYd}~St y}}zg}| |df| |d fd } | || |d}~wwd}~ww) NxrefrrTrrkFzIf shorthand refzIf full function refzError in cross-reference.) rarrrlr{rrrrr(rrsr}) r2rarrres1e1res2e2rrAr3r3r4parse_xref_object1s>      z"DefinitionParser.parse_xref_objectc Cs|j}z|}|||WSty]}z?||_z|d}|||WWYd}~StyX}zd}g}||df||df||||d}~wwd}~ww)NFz%Error when parsing (type) expression.rr)rar|rlrr(rrsr})r2rar exExprrFexTyperrr3r3r4parse_expressionOs. z!DefinitionParser.parse_expressionrgrrr1)_r;r<r=rr>rXr[r]rgrrwrrrr rr r<rErr;rrrrr?rrrzrrrrrr|rrr|rr}rrrrrrrrrrrrrr'r2rrrrbrr@rrrrr~rrrrrrrrrrrrrrrrrrrrrrrr/rrrrrr3r3r3r4rVs  <; "   _6$  , A2Y-d]   8 w 1Q   - =!&5 ! 'E rVrzcCs ttdd}t|gdgddS)NPhonyNameDueToErrorFr)rzrCr)rr3r3r4_make_phony_error_nameercseZdZUdZededdddgZeee d<e j e j dZ e e d <d ed d fd dZd ededed d fddZed efddZed efddZded efddZded efddZded eded d fddZd eeffd d! Zdeded efd"d#Zd(d$d%Zd(d&d'Z Z!S)) CPPObjectz%Description of a C++ language object.template parameterzTemplate Parameters)tparamr!Tlabelr can_collapsedoc_field_types) noindexentryr option_specastrzNc Cs|jdksJ|j}|sJ|jdusJ|jdusJ|jdus#J|j}|s*J|jdur1dS|j}|dur:dS|jdkrAdS|jdkrHdS|j}|j|jdddd}|dur[dS|j }||_ t ||jdd||j j |dddS)Nrr]FTrrNr%)rr,r{rr^rr.rrrrr-r\rget_source_info)r2r)r,r parentDecl targetSymbolr declCloner3r3r4_add_enumerator_to_parentxs<      z#CPPObject._add_enumerator_to_parentsigrZc Csg}tdtdD]}z |j|d}||Wq ty'|tks%JYq wtt|}|d}|s6Jtd |sIt j d||| d|j d}d} |j j} | durt| j} | j} | durhqY| jd krpd } n| dus]| sd |jvr|} |jjjD]} || r| t| d} nq|| }|jd d ||ddf||jjjvr|jjdd}||vr|j j ||<|sJ|d||ddD]}|sq||jjjvr|d|q|jj!|dSdS)NrNrrz^[a-zA-Z0-9_]*$zMIndex id generation for C++ object "%s" failed, please report as bug (id=%s).r9rFrOTr'entriesrrrarr)"rrrTrsr)rreversedrecompilerhr;r< get_locationr,rmrXlstriprr.rrr\rYcpp_index_common_prefix startswithrFget_index_text indexnodestatedocumentr domaindatarnote_explicit_target)r2r)r/rZrrrDnewestIdr isInConceptrri strippedNamer] indexTextrr3r3r4add_target_and_indexsf       zCPPObject.add_target_and_indexcCrr1rr8r3r3r4 object_typerzCPPObject.object_typecCrUr1)rCr8r3r3r4display_object_typerzCPPObject.display_object_typercCstd||jfS)Nz %s (C++ %s))rrDrr3r3r4r8rYzCPPObject.get_index_textrcCs||j|jSr1)rrCobjtype)r2rr3r3r4parse_definitionr:zCPPObject.parse_definitionrcCs||d|j|dSr)ryr\)r2rZr)rr3r3r4ryrzCPPObject.describe_signaturecs|jjjj}d|jvr|jdd}||jd<||jd<|jd}|j}|durV|j dkrVd}t j | t ||j|jd|dt}||}||jd <gSd|jd <tS) Ncpp:parent_symbolra root_symbolrhrkzmC++ declarations inside functions are not supported. Parent function: {} Directive name: {} Directive arg: {}rr9cpp:last_symbol)r:r;settingsr\ temp_datar<rq ref_contextr.rr;r<rr>rmr argumentsr4rrBrrun)r2r\rootrr+rArr,rr3r4rNs*          z CPPObject.runc Cs|jjd}t|||jjd}z ||}|Wn$ty>}ztj||dt }| |}||jjd<t |d}~wwz<|j ||jj |dd}|jdusUJ|jdus\J|jjd|_|jdurt|jjduspJ||j_||jjd<Wn1ty}z%|j|jjd<td} | |jj |jj|j|f} tj| |dWYd}~nd}~ww|jdkr||t|j} d |jv| d <|||| |S) NrGr:rYr9rIrN)rrr8rr)r\rKrVrYrFrr(r;r<rrB ValueErrorrCrr*rrr+r,rrrDrr.dictrry) r2r/rZrrr)rrr,rArr3r3r4handle_signaturesN         zCPPObject.handle_signaturecCsP|jjd}|s J|jjd|_|jjd|_||jjd<||jjd<dS)NrIrGrh)r\rKoldParentSymbolrL oldParentKeyrq)r2 lastSymbolr3r3r4before_content@s  zCPPObject.before_contentcCs |j|jjd<|j|jjd<dS)NrGrh)rTr\rKrUrLr8r3r3r4 after_contentHrzCPPObject.after_contentrR)"r;r<r=__doc__r8rr&rr7__annotations__rflagr(r;r/r.r>rrBrrCrDr8rVrFrrryrrNrSrWrXrUr3r3rr4r jsB   * 8 % /r c@eZdZdZdS) CPPTypeObjectrNr;r<r=rCr3r3r3r4r]Mr]c@r\)CPPConceptObjectrONr^r3r3r3r4r`Qr_r`c@r\)CPPMemberObjectrzNr^r3r3r3r4raUr_rac @sdeZdZdZejededdddededd d dd ed ed dddededdddgZdS)CPPFunctionObjectrk parameter Parameters)rkrcrargumentTr# exceptionsThrowsr )throwsr exception)r$rolenamerr%retvalz Return values)retvalsrk returnvalueReturnsF)returnsrz)r$has_argrN) r;r<r=rCr r&r8rr7r3r3r3r4rbYs&     rbc@s"eZdZdZedefddZdS)CPPClassObjectrMrzcCs|jdvsJ|jS)Nr)rEr8r3r3r4rDnsz"CPPClassObject.display_object_typeN)r;r<r=rCrr>rDr3r3r3r4rqksrqc@r\)CPPUnionObjectrNr^r3r3r3r4rrur_rrc@r\) CPPEnumObjectr]Nr^r3r3r3r4rsyr_rsc@r\)CPPEnumeratorObjectrNr^r3r3r3r4rt}r_rtc@s@eZdZUdZdZdZdZdZiZe e d<de e fdd Z d S) CPPNamespaceObjectzb This directive is just to tell Sphinx that we're documenting stuff in namespace foo. FrNrTr(rzc Cs|jjdd}|jddvr|}g}nFt|jd||jd}z |}|Wn#t yP}zt j ||dt }t |d}WYd}~nd}~ww||j|j}|g}||jjd<||jjd<||jjd <gS) NrarHrNULLrrprPr9rGcpp:namespace_stackrh)r\r<rMrrVr4rYrrr(r;r<rrrBrrrKrqrL)r2 rootSymbolr,stackrr)rrr3r3r4rNs.    zCPPNamespaceObject.runN)r;r<r=rY has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacer(r;rZrrrNr3r3r3r4rus  ruc@s<eZdZUdZdZdZdZiZee d<de e fddZ d S) CPPNamespacePushObjectFrNrTr(rzc Cs|jddvr gSt|jd||jd}z |}|Wn#tyE}ztj ||dt }t |d}WYd}~nd}~ww|j j dd}|sX|j jdd}||j|j}|j j dg}||||j j d<||j j d<||j jd <gS) NrrvrPr9rGrarHrxrh)rMrrVr4rYrrr(r;r<rrr\rKrr<rBrrrsrqrL)r2rr)rr oldParentr,rzr3r3r4rNs2     zCPPNamespacePushObject.runN r;r<r=r{r|r}r~r(r;rZrrrNr3r3r3r4r  rc@s<eZdZUdZdZdZdZiZee d<de e fddZ dS) CPPNamespacePopObjectFrTr(rzcCs|jjdd}|rt|dkrtjd|dg}n|t|dkr+|d}n|jjdd}||jjd<||jjd<| |jj d <gS) Nrxrz=C++ namespace pop on empty stack. Defaulting to global scope.r9rrarHrGrh) r\rKrrFr;r<r4rr<rqrL)r2rzr,r3r3r4rNs    zCPPNamespacePopObject.runNrr3r3r3r4rrrc sBeZdZ  d dededddeddf fdd Zd d d ZZS) AliasNodeNr/ aliasOptionsr\r parentKeyrzcstt||_||_|dur/d|jvr'|jdd}||jd<||jd<|jd|_dS|dus5J||_dS)NrGrarHrh) rr5r/rrKr<rqrLr)r2r/rr\rrOrr3r4r5s     zAliasNode.__init__cCs|j|j|jd|jdS)N)r\r)rr/rrr8r3r3r4copys zAliasNode.copyr)rzr) r;r<r=r>rRrr5rrUr3r3rr4rs rc@sReZdZejdZdededededede de e fd d Z d e dd fd dZ d S)AliasTransformrNrmaxdepthskipThisr renderOptionsr;rzc 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| jj d vrhqY|j | |d|||d}| |qY|st | jdkr|| |S)NrTrNFrrradomainaliasrEdesctypenoindex)rrrrrrr;)rrrsr.ryr\ desc_contentrr;rr_render_symbolr rFr)r2rrrrrr;recurser rZchildContainercontentrr childNodesr3r3r4rsH        zAliasTransform._render_symbolkwargsNc Ks||jtD]4}tt|}|j}|j}zt|||jjd}| \}}| Wnt yF}zt j ||dd\}}WYd}~nd}~ww|durct|d} | | t||7} || q|jjdjd} | |} | std|td|t| d | sJg} |rt|tsJ|} | j}| jr| jj}ng}| j||d d d d d d \} }| durg} nt|tsJ|}|j}| j |d d d d d}|dur| !|dd| D} t"| dkr t|d} |!| | | t||7} t j d||d|| qg}dd i}| D]#}|j#dusJ|j$||j%d|j%d|j%||jd}|&|q||qdS)NrPr9rrrarHTarget: ParentKey: rNanyTF)rrrFrrrrrrrcSsg|] }|jdur|qSr1r-r7r3r3r4r_sz(AliasTransform.apply..rz,Can not find C++ declaration for alias '%s'.rrnorootr)'r;traverserr r/rrVr\rYrrr(r;r<rrclearrr replace_selfdomainsrrFrnr7rrrrrrJr/rrOrsrFr.rrr )r2rrur/rrr) isShorthandrrZryrrnsrr failReasonrirr rrr3r3r4apply%s                 zAliasTransform.apply)r;r<r=r"default_priorityr-rhrErRrrrrrr3r3r3r4rs  .rc@s6eZdZUejejdZeed<de e fddZ dS)CPPAliasObjectrrr(rzcCsd|jvr|jdd\|_|_nd|j|_|_t}|jj|_|j|d<|j|d<|d<g|_|j ddd|j vd }|drS|ddkrSt j d | d |}t|D]\}}|t|||jd q[t}||||j|j|j|d |jjd<||gS)a On purpose this doesn't call the ObjectDescription version, but is based on it. Each alias signature may expand into multiple real signatures (an overload set). The code is therefore based on the ObjectDescription version. rrNrrrErrrrzError in C++ alias declaration. Requested 'noroot' but 'maxdepth' 1. When skipping the root declaration, need 'maxdepth' 0 for infinite or at least 2.r9)r\Nobject)rsplitrrErrr:r;rrrr;r<r4get_signatures enumeratersrr\rrW nested_parsercontent_offsetrKrX)r2rur signaturesrr/ contentnoder3r3r4rNs2      zCPPAliasObject.runN) r;r<r=rnonnegative_intr[r(r;rZrrrNr3r3r3r4r{s rc@s6eZdZdedededededeeeff ddZd S) CPPXRefRoler\refnodehas_explicit_titletitletargetrzcCs|j|j|stdt|}|ddkr/|s$|dr$|dd}|dr/|dd}|sU|d}|dddkrU|dd}|d}|d krU||d d}||fS) NrWrdrrrrNrrr) attributesupdaterLr,subr>r r5rfind)r2r\rrrrdcolonr3r3r4 process_links        zCPPXRefRole.process_linkN) r;r<r=rrrEr>r rr3r3r3r4rs rcsDeZdZdeddffdd ZdeeeeeffddZ Z S) CPPExprRoleasCoderzNcs"t|r d|_dSd|_dS)Nzcpp-exprz cpp-texpr)rr5 class_type)r2rrr3r4r5s   zCPPExprRole.__init__c Cs|jdd}t|||jd}z|}Wn+tyB}ztjd|||dt j d|||j gdggfWYd}~Sd}~ww|j j dd}|durW|j jdd }t j d|j gd}||d |j ||ggfS) NrQrrPz!Unparseable C++ expression: %r %sr9ra)rlrGrHr`)r_rrVr4rYrr(r;r<r desc_inlinerr\rKrr<ry)r2r_rr)rrrZr3r3r4rNs(  ( zCPPExprRole.run) r;r<r=rEr5r rrrrNrUr3r3rr4rs& rc@seZdZdZdZdZeedddddeeddddeed d ddeed d d deedddeed d deeddddeedddeeddd d eedddddd d dd Zide de de d e d e d e de d ededededededededeZeeeeeddeeeeeeeddeddd ZedddddddidZd ed!dfd"d#Zd$ed ed%ejd!dfd&d'Z d(e!d!dfd)d*Z"d+e#ed,e$d!dfd-d.Z%d$ed/ed0e&d1ed2ed3e!d4e'd!e(e)e'e)effd5d6Z*d$ed/ed0e&d1ed2ed3e!d4e'd!e)e'fd7d8Z+d$ed/ed0e&d2ed3e!d4e'd!e#e(ee'ffd9d:Z,d!e-e(eeeeee.ffd;d<Z/d3e'd!efd=d>Z0dS)? CPPDomaina C++ language domain. There are two 'object type' attributes being used:: - Each object created from directives gets an assigned .objtype from ObjectDescription.run. This is simply the directive name. - Each declaration (see the distinction in the directives dict below) has a nested .ast of type ASTDeclaration. That object has .objectType which corresponds to the keys in the object_types dict below. They are the core different types of declarations in C++ that one can document. rarWrMrrDrrrkfuncrzrrOr]rzfunction parameterr!) rMrrkrzrrOr]rrrrrrkznamespace-pushz namespace-poprT) fix_parens)rF) rrMrrrrzrrrOr]rr texprN)rHrrrzcCstjrtd|tdt|jddtd|jd}||tjr>tdt|jddtdtd|t|jd D]\}}||krU|jd |=qGdS) Nz clear_doc:z before:rHrNz before endz after:z after endzclear_doc end:r)r-rSrnrr7rritems)r2rryrnDocnamer3r3r4r/s"     zCPPDomain.clear_docr\r;cCs6tjrtd|t|jddtd|dSdS)Nz process_doc:rHrzprocess_doc end:)r-rSrnrr7)r2r\rr;r3r3r4 process_docBs  zCPPDomain.process_docrwcCs|j|jjdSr1)rrr\rL)r2rwr3r3r4process_field_xrefIrzCPPDomain.process_field_xrefr4 otherdatacCstjr*tdtdt|jddtdtdt|ddtd|jd|d||j|jd}|dD]\}}||vrR||vrR|||<qBtjrntd t|jddtd td dSdS) Nzmerge_domaindata:z self:rHrNz self endz other:z other endrz result:z result endzmerge_domaindata end)r-rSrnrr7r=r\r)r2r4rourNamesrrr3r3r4merge_domaindataLs.  zCPPDomain.merge_domaindata fromdocnamebuilderrFrrucontnodec# sdksdkr d7tjd}z|\} } Wn4tyP} z(dtdtttfffdd } | | \} }tjd | |d WYd} ~ d Sd} ~ ww d d}j d }|r|| |}|swt dt d|j t | d|s{Jn|}| rt| tsJ| }|j}|jr|jj}ng}|j ot|jdk}|j||ddd|d\}}|durňdkr|dkrtt|d}n|d}nt| tsJ| }|j}|j|dddd}|dus|jdurt|}|ds|dkrt|d Sdr dd|jjdtffdd }|s*tjd|jj|d |j}| r<|}| !d}n| }|j"}|sHJdkr|#d$} d}! dd s|jd!kr| rjj%rtdkrt|!d7}!jj%rdkr| &d"r|!d7}!dksdkr| &d#r|&d"r|!d7}!n7jj%rЈdkr|&dr|!d7}!n"dkr| &dr|&ds| dd$} n |&dr|!d7}!|!dkr| d|!7} |t'(| 7}t)||||*|||jf}"|"S)%NrrrrPrrzc sxdkr dkr |fStddjd}z |W|fSty;}zdd|fWYd}~Sd}~ww)NrrrrP)rVrYrr()rparser2r)r\rurrFr3r4 findWarningos  z2CPPDomain._resolve_xref_inner..findWarningz&Unparseable C++ cross-reference: %r %sr9rrhrHrrrNT)rrrrrDrIrrzstd::rPcpp:rcs6dkrdS}|r|vStdfJ)NrTz"Type is %s, declaration type is %s)objtypes_for_rolern)objtypes)declTypr2rFr3r4 checkTypes z0CPPDomain._resolve_xref_inner..checkTypezcpp:%s targets a %s (%s).r refexplicitFrkz operator()rqr)+rVrYrr(rtr r>r;r<rrrFrnr7rrrrrrrFrrJrr/rrOr.r7rrErmrXr5rrradd_function_parenthesesr r rr:r)#r2r\rrrFrrurrr)rrrrrrryrrrrrrrrritxtNamerr.fullNestedName displayNamerraddParenrr3)rr\rur2rrFr4_resolve_xref_innerds$                       zCPPDomain._resolve_xref_innerc Cs||||||||dSrE)r)r2r\rrrFrrurr3r3r4 resolve_xrefs zCPPDomain.resolve_xrefc Cspt||||d|||\}}Wdn1swY|r6|dkr,d|fgSd|||fgSgS)Nrrzcpp:templateParamr)r#suppress_loggingrrole_for_objtype) r2r\rrrrurretnoderEr3r3r4resolve_any_xrefs    zCPPDomain.resolve_any_xrefc cs|jd}|D]4}|jdurq |jsJ|}t|d}|d}|jj}|j}|j }|||||dfVq dS)NrHrrN) rrr.rrmr>r5rXrr) r2ryr,rrdispnamerrr>r3r3r4 get_objects s     zCPPDomain.get_objectscCsl|dd}|dur dS|dd}|dust|jdkrdS|jd}||}|}dt||gS)NrerhrrHr)rrFrrFrmrr>)r2rurrryr parentNamer3r3r4get_full_qualified_names    z!CPPDomain.get_full_qualified_name)1r;r<r=rYrr$rr object_typesrqrrrbrar]r`rsrtrurrrrrrrolesr- initial_datar>rrr r;rrrrrrrrr rrrrrrhrrr3r3r3r4rs           " rappcCs||t|dgd|dgd|dgd|t|ddd|dddd d }|d |d d dddS)Nr6r\rZr\cpp_debug_lookupFrcpp_debug_show_treecSs(|jjt_|jjt_|jjjdddS)NT)r)rYrr-rrrSr6sort)rr3r3r4 initStuff3s  zsetup..initStuffzbuilder-initedbuiltinrT)rL env_versionparallel_read_safeparallel_write_safe) add_domainradd_config_valueadd_post_transformrconnect)rrr3r3r4setup(s   r)rYr2typingrrrrrrrr r r r docutilsr docutils.nodesrrrrdocutils.parsers.rstrsphinxrsphinx.addnodesrrsphinx.applicationrsphinx.buildersrsphinx.directivesrsphinx.domainsrrsphinx.environmentr sphinx.errorsr sphinx.localerr sphinx.rolesrr sphinx.transformsr!!sphinx.transforms.post_transformsr" sphinx.utilr#sphinx.util.cfamilyr$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6sphinx.util.docfieldsr7r8sphinx.util.docutilsr9sphinx.util.nodesr:sphinx.util.typingr; getLoggerr;r;r<r3riSrrrryrrrrrrrrrrSr&r>rZrrrrGrtr+r@rCrzrrrrrrrrrrrrrrr"r(r.r0r6r8r?rErIrPrTrXrarfrhrlrqrvr{r<rrrr|rrrrr}rrrrrrrrrrrrrr'r2r5rErNrTr[r`r;rbr@rrr~rrrrrrrrrrrrrrrrr/rrrr-rVrr r]r`rarbrqrrrsrtrurrrrrrrrrr3r3r3r4s 4           T     {           !"#$%&'(6      !"#$%&'())**+,-./01235     !""#$%&'(())**+,-./ 5   N    >    1&('-5 (,!hF ,X.jE;cFp(%$#+$  9"'->46# gHd $ /!&A