403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/site-packages/sphinx/domains/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/site-packages/sphinx/domains/__pycache__/c.cpython-39.opt-2.pyc
a

�ab�[�@s\ddlZddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZddl
mZddlmZmZmZmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddl m!Z!ddl"m#Z#m$Z$dd
l%m&Z&ddl'm(Z(m)Z)ddl*m+Z+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFddlGmHZHmIZImJZJddlKmLZLddlMmNZNddlOmPZPe2�QeR�ZSe
d�ZTedZUgd�ZVgd�ZWddgddgd d!gd"d#gd$d%ggd&�gd'�d(d)gd*d+ggd,�d-d.ggZXgd/�ZYgd0�ZZd1Z[gd2�Z\e�]d3ej^�Z_e�]d4�Z`Gd5d6�d6ea�ZbGd7d8�d8e5�ZcGd9d:�d:e5�ZdGd;d<�d<ec�ZeGd=d>�d>ec�ZfGd?d@�d@ef�ZgGdAdB�dBeg�ZhGdCdD�dDeg�ZiGdEdF�dFeg�ZjGdGdH�dHeg�ZkGdIdJ�dJef�ZlGdKdL�dLef�ZmGdMdN�dNec�ZnGdOdP�dPen�ZoGdQdR�dRen�ZpGdSdT�dTen�ZqGdUdV�dVen�ZrGdWdX�dXen�ZsGdYdZ�dZef�ZtGd[d\�d\ef�ZuGd]d^�d^ef�ZvGd_d`�d`ef�ZwGdadb�dbef�ZxGdcdd�ddef�ZyGdedf�dfec�ZzGdgdh�dhef�Z{Gdidj�djef�Z|Gdkdl�dlec�Z}Gdmdn�dne}�Z~Gdodp�dpe}�ZGdqdr�drec�Z�Gdsdt�dtec�Z�Gdudv�dve5�Z�Gdwdx�dxec�Z�Gdydz�dzec�Z�Gd{d|�d|ec�Z�Gd}d~�d~e��Z�Gdd��d�e��Z�Gd�d��d�e��Z�Gd�d��d�e��Z�Gd�d��d�e6�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�ec�Z�Gd�d��d�e5�Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d��Z�Gd�d��d�e7�Z�eed��d�d��Z�Gd�d��d�e!e��Z�Gd�d��d�e��Z�eJd�e(d��d�d�d�d��eId�e(d��d�d�d��eHd�e(d��d�d�d��eHd�e(d��d�d�d��gZ�Gd�d��d�e��Z�Gd�d„d�e��Z�Gd�dĄd�e��Z�Gd�dƄd�e��Z�Gd�dȄd�e��Z�Gd�dʄd�e��Z�Gd�d̄d�e��Z�Gd�d΄d�eL�Z�Gd�dЄd�eL�Z�Gd�d҄d�eL�Z�Gd�dԄd�ej�Z�Gd�dքd�e.�Z�Gd�d؄d�e!�Z�Gd�dڄd�e,�Z�Gd�d܄d�e+�Z�Gd�dބd�e#�Z�eee�efdߜd�d�Z�dS)��N)�Any�Callable�Dict�	Generator�Iterator�List�Optional�Tuple�TypeVar�Union�cast)�nodes)�Element�Node�TextElement�system_message)�
directives)�addnodes)�pending_xref)�Sphinx)�Builder)�RemovedInSphinx50Warning)�ObjectDescription)�Domain�ObjType)�BuildEnvironment)�_�__)�
SphinxRole�XRefRole)�SphinxTransform)�ReferencesResolver)�logging)�ASTAttribute�ASTBaseBase�ASTBaseParenExprList�
BaseParser�DefinitionError�NoOldIdError�StringifyTransform�$UnsupportedMultiCharacterCharLiteral�anon_identifier_re�binary_literal_re�char_literal_re�float_literal_re�float_literal_suffix_re�hex_literal_re�
identifier_re�integer_literal_re�integers_literal_suffix_re�octal_literal_re�verify_description_mode)�Field�GroupedField�
TypedField)�SphinxDirective)�make_refnode)�
OptionSpec�T)�	ASTStruct�ASTUnion�ASTEnum�
ASTEnumerator�ASTType�ASTTypeWithInit�ASTMacro)/�auto�breakZcase�char�const�continue�defaultZdoZdouble�else�enum�extern�float�forZgoto�if�inline�intZlong�register�restrict�returnZshortZsigned�sizeof�static�structZswitch�typedef�unionZunsignedZvoid�volatile�whileZ_AlignasZ_AlignofZ_AtomicZ_BoolZ_ComplexZ
_Decimal32Z
_Decimal64Z_Decimal128Z_GenericZ
_ImaginaryZ	_NoreturnZ_Static_assert�
_Thread_local)Zalignas�alignof�bool�complex�	imaginaryZnoreturnZ
static_assert�thread_localz||�orz&&�and�|Zbitor�^�xor�&Zbitand)z==z!=Znot_eq)z<=z>=�<�>z<<z>>�+�-)�*�/�%z.*z->*)
�++�--rlrgrjrk�!�not�~Zcompl)�=z*=z/=z%=z+=z-=z>>=z<<=z&=Zand_eqz^=Zxor_eqz|=Zor_eq�)N�c.zCv2.z>[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)")an(?x)
    \b(
    void|_Bool
    |signed|unsigned
    |short|long
    |char
    |int
    |__uint128|__int128
    |__int(8|16|32|64|128)  # extension
    |float|double
    |_Decimal(32|64|128)
    |_Complex|_Imaginary
    |__float80|_Float64x|__float128|_Float128|__ibm128  # extension
    |__fp16  # extension
    |_Sat|_Fract|fract|_Accum|accum  # extension
    )\b
c@s,eZdZdddd�dd�Zed�dd	�ZdS)
�_DuplicateSymbolError�Symbol�ASTDeclarationN)�symbol�declarationrTcCs||_||_dS�N)rzr{)�selfrzr{�r~�4/usr/lib/python3.9/site-packages/sphinx/domains/c.py�__init__tsz_DuplicateSymbolError.__init__�rTcCsd|j�d�S)Nz%Internal C duplicate symbol error:
%sr)rz�dump�r}r~r~r�__str__zsz_DuplicateSymbolError.__str__)�__name__�
__module__�__qualname__r��strr�r~r~r~rrwssrwc@s"eZdZeedddd�dd�ZdS)�ASTBaserrxN��signode�mode�envrzrTcCstt|���dSr|��NotImplementedError�repr�r}r�r�r�rzr~r~r�describe_signatureszASTBase.describe_signature)r�r�r�rr�r�r~r~r~rr�~s�r�c@sneZdZedd�dd�Zeed�dd�Zed�d	d
�Zed�dd�Z	ed�d
d�Z
eededdd�dd�ZdS)�
ASTIdentifierN)�
identifierrTcCs
||_dSr|�r�)r}r�r~r~rr��szASTIdentifier.__init__��otherrTcCst|�tuo|j|jkSr|)�typer�r��r}r�r~r~r�__eq__�szASTIdentifier.__eq__r�cCs|jddkS)Nr�@r�r�r~r~r�is_anon�szASTIdentifier.is_anoncCs|jSr|r�r�r~r~rr��szASTIdentifier.__str__cCs|��rdS|jS)N�[anonymous])r�r�r�r~r~r�get_display_string�sz ASTIdentifier.get_display_stringrrx)r�r�r��prefixrzrTc
Cs�t|�|��rtjdd�}nt�|j|j�}|dkrt||j}tjddd|ddd�}|��|d<||7}||7}n@|d	kr�t��}	|	|7}	||	7}n|d
kr�||7}ntd|��dS)Nr�)�text�markType��cr�)Z	refdomainZreftypeZ	reftarget�modnameZ	classname�c:parent_key�
lastIsName�
noneIsName�Unknown description mode: %s)	r5r�r�
desc_sig_namer�r�get_lookup_key�	desc_name�	Exception)
r}r�r�r�r�rz�nodeZ
targetText�pnodeZnameNoder~r~rr��s*
�


z ASTIdentifier.describe_signature)
r�r�r�r�r�rr^r�r�r�r�rr�r~r~r~rr��s�r�c@sjeZdZeeedd�dd�Zedd�dd��Ze	e
d�d	d
�Zee
d�dd
�Z
ee
dddd�dd�ZdS)�
ASTNestedNameN)�names�rootedrTcCs||_||_dSr|)r�r�)r}r�r�r~r~rr��szASTNestedName.__init__r�cCs|Sr|r~r�r~r~r�name�szASTNestedName.name��versionrTcCsd�dd�|jD��S)N�.css|]}t|�VqdSr|)r���.0�nr~r~r�	<genexpr>��z'ASTNestedName.get_id.<locals>.<genexpr>��joinr��r}r�r~r~r�get_id�szASTNestedName.get_id��	transformrTcs0d��fdd�|jD��}|jr(d|S|SdS)Nr�c3s|]}�|�VqdSr|r~r��r�r~rr��r�z+ASTNestedName._stringify.<locals>.<genexpr>)r�r�r��r}r��resr~r�r�
_stringify�szASTNestedName._stringifyrrxr�c
Cs�t|�|dkrn|jr$|t�d�7}tt|j��D]6}|dkrL|t�d�7}|j|}|�|||d|�q2�nr|dkr�|jd�|d|d|��nN|dv�r�d}d}|dkr�|jdd	�n|j}	|}
|dkr�t�	�}
|j�r|d7}|dk�rt|	�dk�r|t�
dd�7}n|
t�
dd�7}
tt|	��D]\}|	|}|�sT|
t�
dd�7}
|d7}d
}t|�}|dk�r||�|
d|||�||7}�q*|dk�r�t|j�dk�r�|
t�
dd�7}
||
7}|jd	�|||d|�ntd
|��dS)Nr�r�rr��param)r�r��markNameTr����Fr�rur�)
r5r�r
�Text�range�lenr�r�rZdesc_addname�desc_sig_punctuationr�r�)
r}r�r�r�rz�ir�r��firstr��dest�identZ	txt_identr~r~rr��sN



z ASTNestedName.describe_signature)r�r�r�rr�r^r��propertyr�rQr�r�r)r�rr�r~r~r~rr��s�r�c@seZdZdS)�
ASTExpressionN�r�r�r�r~r~r~rr�sr�c@seZdZdS)�
ASTLiteralNr�r~r~r~rr�sr�c@sBeZdZedd�dd�Zeed�dd�Zeedd	dd
�dd�Z	dS)
�ASTBooleanLiteralN)�valuerTcCs
||_dSr|�r�)r}r�r~r~rr�szASTBooleanLiteral.__init__r�cCs|jr
dSdSdS)N�true�falser��r}r�r~r~rr�szASTBooleanLiteral._stringifyrrxr�cCst|�}|t�||�7}dSr|)r�r�desc_sig_keyword�r}r�r�r�rzZtxtr~r~rr�sz$ASTBooleanLiteral.describe_signature)
r�r�r�r^r�r)r�r�rr�r~r~r~rr�s
�r�c@sBeZdZedd�dd�Zeed�dd�Zeedd	dd
�dd�ZdS)
�ASTNumberLiteralN��datarTcCs
||_dSr|�r��r}r�r~r~rr�#szASTNumberLiteral.__init__r�cCs|jSr|r�r�r~r~rr�&szASTNumberLiteral._stringifyrrxr�cCst|�}|t�||�7}dSr|)r�rZdesc_sig_literal_numberr�r~r~rr�)sz#ASTNumberLiteral.describe_signature�	r�r�r�r�r�r)r�rr�r~r~r~rr�"s
�r�c@sDeZdZeedd�dd�Zeed�dd�Zeedd	dd
�dd�ZdS)
�ASTCharLiteralN)r�r�rTcCs>||_||_|���d�}t|�dkr2t|�|_nt|��dS)Nzunicode-escaperu)r�r��encode�decoder��ordr�r*)r}r�r�Zdecodedr~r~rr�0szASTCharLiteral.__init__r�cCs0|jdurd|jdS|jd|jdSdS)N�')r�r�r�r~r~rr�9s
zASTCharLiteral._stringifyrrxr�cCst|�}|t�||�7}dSr|)r�rZdesc_sig_literal_charr�r~r~rr�?sz!ASTCharLiteral.describe_signaturer�r~r~r~rr�/s
	�r�c@sBeZdZedd�dd�Zeed�dd�Zeedd	dd
�dd�ZdS)
�ASTStringLiteralNr�cCs
||_dSr|r�r�r~r~rr�FszASTStringLiteral.__init__r�cCs|jSr|r�r�r~r~rr�IszASTStringLiteral._stringifyrrxr�cCst|�}|t�||�7}dSr|)r�rZdesc_sig_literal_stringr�r~r~rr�Lsz#ASTStringLiteral.describe_signaturer�r~r~r~rr�Es
�r�c@sPeZdZed�dd�Zeed�dd�Zeed�dd	�Z	e
ed
ddd
�dd�ZdS)�ASTIdExpression�r�cCs
||_dSr|r��r}r�r~r~rr�SszASTIdExpression.__init__r�cCs
||j�Sr|r�r�r~r~rr�WszASTIdExpression._stringifyr�cCs|j�|�Sr|)r�r�r�r~r~rr�ZszASTIdExpression.get_idrrxNr�cCs|j�||||�dSr|)r�r�r�r~r~rr�]sz"ASTIdExpression.describe_signature)r�r�r�r�r�r)r�r�rQr�rr�r~r~r~rr�Rs�r�c@sJeZdZdd�Zeed�dd�Zeed�dd�Ze	ed	d
dd�d
d�Z
dS)�ASTParenExprcCs
||_dSr|��expr�r}r�r~r~rr�cszASTParenExpr.__init__r�cCsd||j�dS�N�(�)r�r�r~r~rr�fszASTParenExpr._stringifyr�cCs|j�|�Sr|)r�r�r�r~r~rr�iszASTParenExpr.get_idrrxNr�cCs6|t�dd�7}|j�||||�|t�dd�7}dSr��rr�r�r�r�r~r~rr�lszASTParenExpr.describe_signature)r�r�r�r�r)r�r�rQr�rr�r~r~r~rr�bs�r�c@seZdZdS)�ASTPostfixOpNr�r~r~r~rr�vsr�c@sFeZdZeddd�dd�Zeed�dd�Zeed	d
dd�dd
�Z	dS)�ASTPostfixCallExpr)�ASTParenExprList�ASTBracedInitListN)�lstrTcCs
||_dSr|�r�)r}r�r~r~rr�{szASTPostfixCallExpr.__init__r�cCs
||j�Sr|r�r�r~r~rr�~szASTPostfixCallExpr._stringifyrrxr�cCs|j�||||�dSr|)r�r�r�r~r~rr��sz%ASTPostfixCallExpr.describe_signature)
r�r�r�rr�r)r�r�rr�r~r~r~rr�zs
�r�c@sBeZdZedd�dd�Zeed�dd�Zeedd	dd
�dd�Z	dS)
�ASTPostfixArrayN)r�rTcCs
||_dSr|r�r�r~r~rr��szASTPostfixArray.__init__r�cCsd||j�dS�N�[�]r�r�r~r~rr��szASTPostfixArray._stringifyrrxr�cCs6|t�dd�7}|j�||||�|t�dd�7}dSr�r�r�r~r~rr��sz"ASTPostfixArray.describe_signature�
r�r�r�r�r�r)r�r�rr�r~r~r~rr��s
�r�c@s2eZdZeed�dd�Zeedddd�dd	�ZdS)
�
ASTPostfixIncr�cCsdS�Nror~r�r~r~rr��szASTPostfixInc._stringifyrrxNr�cCs|t�dd�7}dSr��r�desc_sig_operatorr�r~r~rr��sz ASTPostfixInc.describe_signature�r�r�r�r)r�r�rr�r~r~r~rr��s�r�c@s2eZdZeed�dd�Zeedddd�dd	�ZdS)
�
ASTPostfixDecr�cCsdS�Nrpr~r�r~r~rr��szASTPostfixDec._stringifyrrxNr�cCs|t�dd�7}dSrrr�r~r~rr��sz ASTPostfixDec.describe_signaturerr~r~r~rr�s�rc@s:eZdZdd�Zeed�dd�Zeedddd	�d
d�ZdS)�ASTPostfixMemberOfPointercCs
||_dSr|r�r�r~r~rr��sz"ASTPostfixMemberOfPointer.__init__r�cCsd||j�S)N�->r�r�r~r~rr��sz$ASTPostfixMemberOfPointer._stringifyrrxNr�cCs&|t�dd�7}|j�|d||�dS)Nrr�)rrr�r�r�r~r~rr��sz,ASTPostfixMemberOfPointer.describe_signature�	r�r�r�r�r)r�r�rr�r~r~r~rr�s
�rc@sFeZdZeeed�dd�Zeed�dd�Z	e
eddd	d
�dd�Zd	S)
�ASTPostfixExpr�r��	postFixescCs||_||_dSr|r	)r}r�r
r~r~rr��szASTPostfixExpr.__init__r�cCs0||j�g}|jD]}|�||��qd�|�S�Nr�)r�r
�appendr�)r}r�r��pr~r~rr��s
zASTPostfixExpr._stringifyrrxNr�cCs2|j�||||�|jD]}|�||||�qdSr|)r�r�r
)r}r�r�r�rzr
r~r~rr��s
z!ASTPostfixExpr.describe_signature)r�r�r�r�rr�r�r)r�r�rr�r~r~r~rr�s
�rc@sBeZdZeed�dd�Zeed�dd�Zeeddd	d
�dd�Z	d	S)
�ASTUnaryOpExpr��opr�cCs||_||_dSr|r)r}rr�r~r~rr��szASTUnaryOpExpr.__init__r�cCs6|jddvr"|jd||j�S|j||j�SdS)Nr�cn� rr�r~r~rr��szASTUnaryOpExpr._stringifyrrxNr�cCsZ|jddvr0|t�|j|j�7}|t��7}n|t�|j|j�7}|j�||||�dS)Nrr)rrr��desc_sig_spacerr�r�r�r~r~rr��s
z!ASTUnaryOpExpr.describe_signature)
r�r�r�r�r�r�r)r�rr�r~r~r~rr�s
�rc@s:eZdZdd�Zeed�dd�Zeedddd	�d
d�ZdS)�
ASTSizeofTypecCs
||_dSr|��typ�r}rr~r~rr��szASTSizeofType.__init__r�cCsd||j�dS)Nzsizeof(r�rr�r~r~rr��szASTSizeofType._stringifyrrxNr�cCsF|t�dd�7}|t�dd�7}|j�||||�|t�dd�7}dS)NrUr�r��rr�r�rr�r�r~r~rr��sz ASTSizeofType.describe_signaturerr~r~r~rr�s
�rc@s@eZdZed�dd�Zeed�dd�Zeeddd	d
�dd�Z	d	S)
�
ASTSizeofExprr�cCs
||_dSr|r�r�r~r~rr��szASTSizeofExpr.__init__r�cCsd||j�S)Nzsizeof r�r�r~r~rr��szASTSizeofExpr._stringifyrrxNr�cCs2|t�dd�7}|t��7}|j�||||�dS)NrU)rr�rr�r�r�r~r~rr��sz ASTSizeofExpr.describe_signaturer�r~r~r~rr�s
�rc@s@eZdZdd�dd�Zeed�dd�Zeedd	d
d�dd
�Zd
S)�ASTAlignofExprrArcCs
||_dSr|rrr~r~rr��szASTAlignofExpr.__init__r�cCsd||j�dS)Nzalignof(r�rr�r~r~rr��szASTAlignofExpr._stringifyrrxNr�cCsF|t�dd�7}|t�dd�7}|j�||||�|t�dd�7}dS)Nr]r�r�rr�r~r~rr�sz!ASTAlignofExpr.describe_signaturerr~r~r~rr�s
�rc@sBeZdZded�dd�Zeed�dd�Zeedd	d
d�dd
�Z	d
S)�ASTCastExprrA�rr�cCs||_||_dSr|r)r}rr�r~r~rr�
szASTCastExpr.__init__r�cCs:dg}|�||j��|�d�|�||j��d�|�S�Nr�r�r�)rrr�r�r�r~r~rr�s

zASTCastExpr._stringifyrrxNr�cCsH|t�dd�7}|j�||||�|t�dd�7}|j�||||�dSr�)rr�rr�r�r�r~r~rr�szASTCastExpr.describe_signaturer�r~r~r~rrs
�rc@sJeZdZeeeed�dd�Zeed�dd�Ze	eddd	d
�dd�Z
d	S)
�ASTBinOpExpr��exprs�opscCs||_||_dSr|r�r}r r!r~r~rr�!szASTBinOpExpr.__init__r�cCstg}|�||jd��tdt|j��D]@}|�d�|�|j|d�|�d�|�||j|��q(d�|�S�Nrrurr��rr r�r�r!r��r}r�r�r�r~r~rr�'s

zASTBinOpExpr._stringifyrrxNr�cCs�|jd�||||�tdt|j��D]�}|t��7}|j|d}t|d�td�kr~t|d�td�kr~|t�||�7}n|t�	||�7}|t��7}|j|�||||�q&dS�Nrru�a�z�
r r�r�r�rrr!r�r�r�r}r�r�r�rzr�rr~r~rr�1s(zASTBinOpExpr.describe_signature�r�r�r�rr�r�r�r)r�rr�r~r~r~rr s

�rc@sJeZdZeeeed�dd�Zeed�dd�Ze	eddd	d
�dd�Z
d	S)
�ASTAssignmentExprrcCs||_||_dSr|rr"r~r~rr�@szASTAssignmentExpr.__init__r�cCstg}|�||jd��tdt|j��D]@}|�d�|�|j|d�|�d�|�||j|��q(d�|�Sr#r$r%r~r~rr�Fs

zASTAssignmentExpr._stringifyrrxNr�cCs�|jd�||||�tdt|j��D]�}|t��7}|j|d}t|d�td�kr~t|d�td�kr~|t�||�7}n|t�	||�7}|t��7}|j|�||||�q&dSr&r)r*r~r~rr�Ps(z$ASTAssignmentExpr.describe_signaturer+r~r~r~rr,?s

�r,c@sPeZdZed�dd�Zeed�dd�Zeed�dd	�Ze	ed
ddd
�dd�Z
dS)�ASTFallbackExprr�cCs
||_dSr|r�r�r~r~rr�_szASTFallbackExpr.__init__r�cCs|jSr|r�r�r~r~rr�bszASTFallbackExpr._stringifyr�cCs
t|j�Sr|)r�r�r�r~r~rr�eszASTFallbackExpr.get_idrrxNr�cCs|t�|j|j�7}dSr|)r
�literalr�r�r~r~rr�hsz"ASTFallbackExpr.describe_signature)r�r�r�r�r�r)r�rQr�rr�r~r~r~rr-^s�r-c@seZdZdS)�ASTTrailingTypeSpecNr�r~r~r~rr/qsr/c@sFeZdZeedd�dd�Zeed�dd�Zeedd	dd
�dd�Z	dS)
�ASTTrailingTypeSpecFundamentalN)r�rTcCs
||_dSr|)r�)r}r�r~r~rr�vsz'ASTTrailingTypeSpecFundamental.__init__r�cCsd�|j�S)Nrr�r�r~r~rr�zsz)ASTTrailingTypeSpecFundamental._stringifyrrxr�cCs:d}|jD]*}|s |t��7}nd}|t�||�7}q
dS)NTF)r�rrZdesc_sig_keyword_type)r}r�r�r�rzr�r�r~r~rr�}s
z1ASTTrailingTypeSpecFundamental.describe_signature)
r�r�r�rr�r�r)r�rr�r~r~r~rr0us
�r0c@sVeZdZeedd�dd�Zeed�dd��Zeed�d	d
�Z	e
edddd
�dd�ZdS)�ASTTrailingTypeSpecNameN)r��
nestedNamerTcCs||_||_dSr|)r�r2)r}r�r2r~r~rr��sz ASTTrailingTypeSpecName.__init__r�cCs|jSr|)r2r�r~r~rr��szASTTrailingTypeSpecName.namer�cCs:g}|jr |�|j�|�d�|�||j��d�|�S)Nrr�)r�rr2r�r�r~r~rr��s
z"ASTTrailingTypeSpecName._stringifyrrxr�cCs>|jr&|t�|j|j�7}|t��7}|jj||||d�dS�N�rz)r�rr�rr2r�r�r~r~rr��sz*ASTTrailingTypeSpecName.describe_signature)r�r�r�r�r�r�r�r�r)r�rr�r~r~r~rr1�s�r1c@sZeZdZddedd�dd�Zeeded�d	d
�Zeed�dd
�Z	e
edddd�dd�ZdS)�ASTFunctionParameterFrBN)�arg�ellipsisrTcCs||_||_dSr|)r6r7)r}r6r7r~r~rr��szASTFunctionParameter.__init__rx�r��
objectTyperzrTcCs|jjj|dd�S)NF)�prefixed)�parentr{r��r}r�r9rzr~r~rr��szASTFunctionParameter.get_idr�cCs|jr
dS||j�SdS�N�...)r7r6r�r~r~rr��szASTFunctionParameter._stringifyrr�cCs8t|�|jr |t�dd�7}n|jj||||d�dS�Nr>r4)r5r7rr�r6r�r�r~r~rr��sz'ASTFunctionParameter.describe_signature)F)r�r�r�r^r�rQr�r�r)r�rr�r~r~r~rr5�s�r5c@sbeZdZeeeedd�dd�Zeeed�dd��Ze	e
d�d	d
�Zee
dddd
�dd�Z
dS)�
ASTParametersN)�args�attrsrTcCs||_||_dSr|)rArB)r}rArBr~r~rr��szASTParameters.__init__r�cCs|jSr|�rAr�r~r~r�function_params�szASTParameters.function_paramsr�cCsvg}|�d�d}|jD]$}|s*|�d�d}|�t|��q|�d�|jD]}|�d�|�||��qNd�|�S)Nr�T�, Fr�rr�)rrAr�rBr�)r}r�r�r�r'�attrr~r~rr��s





zASTParameters._stringifyrrxr�c
Cs�t|�|dkrXt��}|jD].}tjdddd�}|j|d||d�||7}q||7}nf|t�dd�7}d}|jD]:}|s�|t�dd�7}|t��7}d	}|j|d
||d�qr|t�dd�7}|jD]}	|t��7}|	�|�q�dS)Nr�r�T�Znoemphr�r4r��,Fr�r�)	r5r�desc_parameterlistrA�desc_parameterr�r�rrB)
r}r�r�r�rz�	paramlistr6r�r�rFr~r~rr��s(




z ASTParameters.describe_signature)r�r�r�rr5r#r�r�rDr)r�r�rr�r~r~r~rr@�s�r@c	@s`eZdZeeeeeeeedd�dd�Zddd�dd�Ze	ed�d	d
�Z
eedd�dd
�ZdS)�ASTDeclSpecsSimpleN)�storage�threadLocalrPrSrZrGrBrTcCs.||_||_||_||_||_||_||_dSr|)rMrNrPrSrZrGrB)r}rMrNrPrSrZrGrBr~r~rr��szASTDeclSpecsSimple.__init__r�c	CsT|s|St|jp|j|jp|j|jp(|j|jp2|j|jp<|j|jpF|j|j|j�Sr|)rLrMrNrPrZrGrSrBr�r~r~r�	mergeWith�s





�zASTDeclSpecsSimple.mergeWithr�cs�g}|��fdd�|jD��|jr0|�|j�|jrB|�|j�|jrR|�d�|jrb|�d�|jrr|�d�|jr�|�d�d�	|�S)Nc3s|]}�|�VqdSr|r~)r�rFr�r~rr�r�z0ASTDeclSpecsSimple._stringify.<locals>.<genexpr>rPrSrZrGr)
�extendrBrMrrNrPrSrZrGr�r�r~r�rr�s



zASTDeclSpecsSimple._stringify)�	modifiersrTcCs�tttdd�dd�}|jD].}t|�dkr:|�t���|�|�|��q|j	r^|||j	�|j
rp|||j
�|jr�||d�|jr�||d�|j
r�||d�|jr�||d�dS)	N)rQr�rTcSs0t|�dkr|�t���|�t�||��dS�Nr)r�rrrr�)rQr�r~r~r�_addsz3ASTDeclSpecsSimple.describe_signature.<locals>._addrrPrSrZrG)rrr�rBr�rrrr�rMrNrPrSrZrG)r}rQrSrFr~r~rr�s"



z%ASTDeclSpecsSimple.describe_signature)
r�r�r�r�r^rrr�rOr)r�rr�r~r~r~rrL�s�
rLc@sHeZdZeeeedd�dd�Zeed�dd�Ze	edd	dd
�dd�Z
dS)
�ASTDeclSpecsN)�outer�	leftSpecs�
rightSpecs�trailingrTcCs,||_||_||_|j�|j�|_||_dSr|)rUrVrWrOZallSpecs�trailingTypeSpec)r}rUrVrWrXr~r~rr�,s
zASTDeclSpecs.__init__r�cCs�g}||j�}t|�dkr$|�|�|jr�t|�dkr@|�d�|�||j��t|j�}t|�dkr�t|�dkr||�d�|�|�d�|�S�Nrrr�)rVr�rrYr�rWr�)r}r�r��l�rr~r~rr�8s





zASTDeclSpecs._stringifyrrxr�cCs�t|�g}|j�|�|D]}||7}q|jr�t|�dkrH|t��7}|jj||||d�g}|j�|�t|�dkr�|t��7}|D]}||7}q�dS)Nrr4)r5rVr�rYr�rrrW)r}r�r�r�rzrQ�mr~r~rr�Hs"
�zASTDeclSpecs.describe_signature)r�r�r�r�rLr/r�r)r�rr�r~r~r~rrT+s��rTc@sJeZdZeeeeeed�dd�Zeed�dd�Ze	eddd	d
�dd�Z
d	S)
�ASTArray�rVrGrZrS�vla�sizecCs4||_||_||_||_||_||_|r(|dur0dSr|r_)r}rVrGrZrSr`rar~r~rr�bszASTArray.__init__r�cCs�g}|jr|�d�|jr$|�d�|jr4|�d�|jrD|�d�|jr\dd�|�dS|jrr|�||j��dd�|�dS)	NrVrSrZrGr�rz*]r�)rVrrSrZrGr`r�ra)r}r��elr~r~rr�os



zASTArray._stringifyrrxNr�cs�t|�|t�dd�7}d�tttd��fdd�}|jrB||d��|jrR||d��|jrb||d��|j	rr||d	��|j
r�|t�d
d
�7}n(|jr��r�|t��7}|j�
|d||�|t�dd�7}dS)
Nr�F�r�r�rTcs$�r|t��7}|t�||�7}dS�NT)rrr��r�r��ZaddSpacer~rrS�sz)ASTArray.describe_signature.<locals>._addrVrSrZrGrlr�r�)r5rr�rr�r^rVrSrZrGr`rarr�)r}r�r�r�rzrSr~rfrr�s&



zASTArray.describe_signature)r�r�r�r^r�r�r)r�r�rr�r~r~r~rr^as�
�r^c@sBeZdZeed�dd��Zeeed�dd��Ze	d�dd�Z
dS)	�
ASTDeclaratorr�cCstt|���dSr|r�r�r~r~rr��szASTDeclarator.namecCstt|���dSr|r�r�r~r~rrD�szASTDeclarator.function_paramscCstt|���dSr|r�r�r~r~r�require_space_after_declSpecs�sz+ASTDeclarator.require_space_after_declSpecsN)r�r�r�r�r�r�rr5rDr^rhr~r~r~rrg�s
rgc@s�eZdZeeeedd�dd�Zeed�dd��Z	eee
d�dd	��Zed�d
d�Z
eed�d
d�Zeedddd�dd�ZdS)�ASTDeclaratorNameParamN)�declId�arrayOpsr�rTcCs||_||_||_dSr|�rjrkr�)r}rjrkr�r~r~rr��szASTDeclaratorNameParam.__init__r�cCs|jSr|�rjr�r~r~rr��szASTDeclaratorNameParam.namecCs|jjSr|)r�rDr�r~r~rrD�sz&ASTDeclaratorNameParam.function_paramscCs
|jduSr|rmr�r~r~rrh�sz4ASTDeclaratorNameParam.require_space_after_declSpecsr�cCsTg}|jr|�||j��|jD]}|�||��q |jrJ|�||j��d�|�Sr)rjrrkr�r�)r}r�r�rr~r~rr��s
z!ASTDeclaratorNameParam._stringifyrrxr�cCsXt|�|jr |j�||||�|jD]}|�||||�q&|jrT|j�||||�dSr|)r5rjr�rkr�)r}r�r�r�rzrr~r~rr��s
z)ASTDeclaratorNameParam.describe_signature)r�r�r�r�rr^r@r�r�r�r5rDr^rhr)r�r�rr�r~r~r~rri�s
�
�ric@sbeZdZeed�dd�Zeed�dd��Zed�dd�Z	e
ed	�d
d�Ze
edd
dd�dd�ZdS)�ASTDeclaratorNameBitField�rjracCs||_||_dSr|ro)r}rjrar~r~rr��sz"ASTDeclaratorNameBitField.__init__r�cCs|jSr|rmr�r~r~rr��szASTDeclaratorNameBitField.namecCs
|jduSr|rmr�r~r~rrh�sz7ASTDeclaratorNameBitField.require_space_after_declSpecsr�cCs>g}|jr|�||j��|�d�|�||j��d�|�S)Nz : r�)rjrrar�r�r~r~rr��s
z$ASTDeclaratorNameBitField._stringifyrrxNr�cCs^t|�|jr |j�||||�|t��7}|t�dd�7}|t��7}|j�||||�dS)N�:)r5rjr�rrr�rar�r~r~rr��sz,ASTDeclaratorNameBitField.describe_signature)r�r�r�r�r�r�r�r�r^rhr)r�r�rr�r~r~r~rrn�s�rnc@s�eZdZeeeeedd�dd�Zeed�dd��Z	ee
ed�dd	��Zed�d
d�Z
eed�d
d�Zeedddd�dd�ZdS)�ASTDeclaratorPtrN)�nextrSrZrGrBrTcCs"||_||_||_||_||_dSr|�rrrSrZrGrB)r}rrrSrZrGrBr~r~rr��s
zASTDeclaratorPtr.__init__r�cCs|jjSr|)rrr�r�r~r~rr��szASTDeclaratorPtr.namecCs|jjSr|)rrrDr�r~r~rrDsz ASTDeclaratorPtr.function_paramscCs*|jp(|jp(|jp(t|j�dkp(|j��SrR)rGrZrSr�rBrrrhr�r~r~rrhs
��z.ASTDeclaratorPtr.require_space_after_declSpecsr�cCs�dg}|jD]}|�||��qt|j�dkrJ|js@|js@|jrJ|�d�|jrZ|�d�|jrz|jrp|�d�|�d�|jr�|js�|jr�|�d�|�d�|js�|js�|js�t|j�dkr�|j��r�|�d�|�||j��d�|�S)NrlrrrSrZrGr�)	rBrr�rSrZrGrrrhr�)r}r�r�r'r~r~rr�
s(
 





 

zASTDeclaratorPtr._stringifyrrxr�cCst|�|t�dd�7}|jD]}|�|�qt|j�dkrZ|jsN|jsN|jrZ|t�	�7}t
tdd�dd�}|jr|||d�|jr�|jr�|t�	�7}||d�|jr�|js�|jr�|t�	�7}||d�|js�|js�|js�t|j�dkr�|j�
�r�|t�	�7}|j�||||�dS)	NrlrrccSs|t�||�7}dSr|)rr�rer~r~r�	_add_anno)sz6ASTDeclaratorPtr.describe_signature.<locals>._add_annorSrZrG)r5rr�rBr�r�rSrZrGrrr�rrrh)r}r�r�r�rzr'rtr~r~rr� s*
 


 
z#ASTDeclaratorPtr.describe_signature)r�r�r�rgr^rr�r�r�r�rr5rDrhr)r�r�rr�r~r~r~rrq�s�	�rqc@szeZdZeedd�dd�Zeed�dd��Zeee	d�dd	��Z
ed�d
d�Ze
ed�d
d�Zeedddd�dd�ZdS)�ASTDeclaratorParenN)�innerrrrTcCs||_||_dSr|�rvrr)r}rvrrr~r~rr�=szASTDeclaratorParen.__init__r�cCs|jjSr|)rvr�r�r~r~rr�DszASTDeclaratorParen.namecCs|jjSr|)rvrDr�r~r~rrDHsz"ASTDeclaratorParen.function_paramscCsdSrdr~r�r~r~rrhLsz0ASTDeclaratorParen.require_space_after_declSpecsr�cCs:dg}|�||j��|�d�|�||j��d�|�Sr)rrvrrr�r�r~r~rr�Os

zASTDeclaratorParen._stringifyrrxr�cCsPt|�|t�dd�7}|j�||||�|t�dd�7}|j�|d||�dS)Nr�r�r�)r5rr�rvr�rrr�r~r~rr�Vs
z%ASTDeclaratorParen.describe_signature)r�r�r�rgr�r�r�r�rr5rDr^rhr)r�r�rr�r~r~r~rru<s�ruc@sFeZdZeedd�dd�Zeed�dd�Ze	edd	dd
�dd�Z
dS)
r�N)r rTcCs
||_dSr|)r )r}r r~r~rr�cszASTParenExprList.__init__r�cs"�fdd�|jD�}dd�|�S)Ncsg|]}�|��qSr~r~�r��er�r~r�
<listcomp>gr�z/ASTParenExprList._stringify.<locals>.<listcomp>z(%s)rE)r r�)r}r�r r~r�rr�fszASTParenExprList._stringifyrrxr�cCsrt|�|t�dd�7}d}|jD]:}|sH|t�dd�7}|t��7}nd}|�||||�q"|t�dd�7}dS)Nr�TrHFr�)r5rr�r rr��r}r�r�r�rzr�ryr~r~rr�js
z#ASTParenExprList.describe_signature)r�r�r�rr�r�r)r�r�rr�r~r~r~rr�bs
�r�c@sHeZdZeeedd�dd�Zeed�dd�Z	e
edd	dd
�dd�ZdS)
r�N)r �
trailingCommarTcCs||_||_dSr|)r r|�r}r r|r~r~rr�zszASTBracedInitList.__init__r�cs4�fdd�|jD�}|jrdnd}dd�|�|fS)Ncsg|]}�|��qSr~r~rxr�r~rrzr�z0ASTBracedInitList._stringify.<locals>.<listcomp>rHr�z{%s%s}rE)r r|r�)r}r�r r|r~r�rr�~szASTBracedInitList._stringifyrrxr�cCs�t|�|t�dd�7}d}|jD]:}|sH|t�dd�7}|t��7}nd}|�||||�q"|jrt|t�dd�7}|t�dd�7}dS)N�{TrHF�})r5rr�r rr�r|r{r~r~rr��s
z$ASTBracedInitList.describe_signature)r�r�r�rr�r^r�r)r�r�rr�r~r~r~rr�ys
�r�c@sNeZdZdeeefedd�dd�Zee	d�dd�Z
ee	d	d
dd�dd
�ZdS)�ASTInitializerTN)r��	hasAssignrTcCs||_||_dSr|�r�r�)r}r�r�r~r~rr��szASTInitializer.__init__r�cCs ||j�}|jrd|S|SdS)Nz = r�)r}r��valr~r~rr��s
zASTInitializer._stringifyrrxr�cCsLt|�|jr6|t��7}|t�dd�7}|t��7}|j�|d||�dS)Nrtr�)r5r�rrr�r�r�r�r~r~rr��sz!ASTInitializer.describe_signature)T)
r�r�r�rr�r�r^r�r)r�r�rr�r~r~r~rr��s���r�c@s�eZdZeedd�dd�Zeed�dd��Ze	e
de
d	�d
d�Zeee
d�dd
��Zee
d�dd�Ze
d�dd�Zee
dddd�dd�ZdS)rAN)�	declSpecs�declrTcCs||_||_dSr|)r�r�)r}r�r�r~r~rr��szASTType.__init__r�cCs|jjSr|)r�r�r�r~r~rr��szASTType.namerxr8cCs|���|�Sr|��get_full_nested_namer�r<r~r~rr��szASTType.get_idcCs|jjSr|)r�rDr�r~r~rrD�szASTType.function_paramsr�cCsRg}||j�}|�|�|j��r8t|�dkr8|�d�|�||j��d�|�SrZ)r�rr�rhr�r�)r}r�r�r�r~r~rr��s


zASTType._stringifycCs|jjrdSdSdS)NrXr�)r�rYr�r~r~r�get_type_declaration_prefix�sz#ASTType.get_type_declaration_prefixrr�cCsdt|�|j�|d||�|j��rBtt|j��dkrB|t��7}|dkrNd}|j�||||�dS)Nr�rr�)	r5r�r�r�rhr�r�rrr�r~r~rr��s
�zASTType.describe_signature)r�r�r�rTrgr�r�r�r�rQr�r�rr5rDr)r�r�rr�r~r~r~rrA�s	�rAc@sjeZdZeedd�dd�Zeed�dd��Ze	e
de
d	�d
d�Zee
d�d
d�Z
ee
dddd�dd�ZdS)rBN)r��initrTcCs||_||_dSr|)r�r�)r}r�r�r~r~rr��szASTTypeWithInit.__init__r�cCs|jjSr|)r�r�r�r~r~rr��szASTTypeWithInit.namerxr8cCs|j�|||�Sr|)r�r�r<r~r~rr��szASTTypeWithInit.get_idr�cCs4g}|�||j��|jr*|�||j��d�|�Sr)rr�r�r�r�r~r~rr��s
zASTTypeWithInit._stringifyrr�cCs6t|�|j�||||�|jr2|j�||||�dSr|)r5r�r�r�r�r~r~rr��sz"ASTTypeWithInit.describe_signature)r�r�r�rAr�r�r�r�r�rQr�r�r)r�rr�r~r~r~rrB�s�rBc@sHeZdZdeeedd�dd�Zeed�dd�Ze	ed	d
dd�dd
�Z
dS)�ASTMacroParameterFN)r6r7�variadicrTcCs||_||_||_dSr|)r6r7r�)r}r6r7r�r~r~rr��szASTMacroParameter.__init__r�cCs,|jr
dS|jr||j�dS||j�SdSr=)r7r�r6r�r~r~rr��s
zASTMacroParameter._stringifyrrxr�cCsXt|�|jr |t�dd�7}n4|jr@t|�}|t�||�7}n|jj||||d�dSr?)	r5r7rr�r�r�r�r6r�)r}r�r�r�rzr�r~r~rr�sz$ASTMacroParameter.describe_signature)FF)r�r�r�r�r^r�r)r�r�rr�r~r~r~rr��s���r�c@sneZdZeeedd�dd�Zeed�dd��Ze	e
de
d	�d
d�Zee
d�d
d�Z
ee
dddd�dd�ZdS)rCN)r�rArTcCs||_||_dSr|)r�rA)r}r�rAr~r~rr�szASTMacro.__init__r�cCs|jSr|)r�r�r~r~rr�sz
ASTMacro.namerxr8cCs|���|�Sr|r�r<r~r~rr�szASTMacro.get_idr�cCslg}|�||j��|jdurb|�d�d}|jD]$}|sD|�d�d}|�||��q2|�d�d�|�S)Nr�TrEFr�r�)rr�rAr�)r}r�r�r�r6r~r~rr�s




zASTMacro._stringifyrr�cCsrt|�|j�||||�|jdur(dSt��}|jD].}tjdddd�}|j|d||d�||7}q6||7}dS)Nr�TrGr�r4)r5r�r�rArrIrJ)r}r�r�r�rzrKr6r�r~r~rr�*s


zASTMacro.describe_signature)r�r�r�r�rr�r�r�r�rQr�r�r)r�rr�r~r~r~rrCs�rCc@sVeZdZedd�dd�Zeeded�dd�Zeed	�d
d�Z	e
edddd
�dd�ZdS)r=N�r�rTcCs
||_dSr|r�r�r~r~rr�9szASTStruct.__init__rxr8cCs|���|�Sr|r�r<r~r~rr�<szASTStruct.get_idr�cCs
||j�Sr|r�r�r~r~rr�?szASTStruct._stringifyrr�cCs t|�|jj||||d�dSr3�r5r�r�r�r~r~rr�BszASTStruct.describe_signature�r�r�r�r�r�rQr�r�r)r�rr�r~r~r~rr=8s�r=c@sVeZdZedd�dd�Zeeded�dd�Zeed	�d
d�Z	e
edddd
�dd�ZdS)r>Nr�cCs
||_dSr|r�r�r~r~rr�IszASTUnion.__init__rxr8cCs|���|�Sr|r�r<r~r~rr�LszASTUnion.get_idr�cCs
||j�Sr|r�r�r~r~rr�OszASTUnion._stringifyrr�cCs t|�|jj||||d�dSr3r�r�r~r~rr�RszASTUnion.describe_signaturer�r~r~r~rr>Hs�r>c@sVeZdZedd�dd�Zeeded�dd�Zeed	�d
d�Z	e
edddd
�dd�ZdS)r?Nr�cCs
||_dSr|r�r�r~r~rr�YszASTEnum.__init__rxr8cCs|���|�Sr|r�r<r~r~rr�\szASTEnum.get_idr�cCs
||j�Sr|r�r�r~r~rr�_szASTEnum._stringifyrr�cCs t|�|jj||||d�dSr3r�r�r~r~rr�bszASTEnum.describe_signaturer�r~r~r~rr?Xs�r?c@sXeZdZeedd�dd�Zeeded�dd�Ze	ed	�d
d�Z
eedddd
�dd�ZdS)r@N)r�r�rTcCs||_||_dSr|)r�r�)r}r�r�r~r~rr�iszASTEnumerator.__init__rxr8cCs|���|�Sr|r�r<r~r~rr�mszASTEnumerator.get_idr�cCs4g}|�||j��|jr*|�||j��d�|�Sr)rr�r�r�r�r~r~rr�ps
zASTEnumerator._stringifyrr�cCs6t|�|j�||||�|jr2|j�|d||�dS)Nr�)r5r�r�r�r�r~r~rr�wsz ASTEnumerator.describe_signature)
r�r�r�r�r�r�rQr�r�r)r�rr�r~r~r~rr@hs�r@c@s�eZdZdeeeeefedd�dd�Zdd�dd�Z	e
ed�d	d
��Ze
e
ed�dd��Zdeeed�dd�Zed�dd�Zeed�dd�Zeededd�dd�ZdS)ryFN)r9�
directiveTyper{�	semicolonrTcCs(||_||_||_||_d|_d|_dSr|)r9r�r{r�rz�enumeratorScopedSymbol�r}r9r�r{r�r~r~rr��szASTDeclaration.__init__r�cCst|j|j|j��|j�Sr|)ryr9r�r{�cloner�r�r~r~rr��s
�zASTDeclaration.clonecCstt|j�}|jSr|)r�DeclarationTyper{r��r}r�r~r~rr��szASTDeclaration.namecCs |jdkrdStt|j�}|jS)N�function)r9rrAr{rDr�r~r~rrD�s
zASTDeclaration.function_paramsT)r�r:rTcCsL|jdkr |jr |jj�||�S|j�||j|j�}|rDt||S|SdS)N�
enumerator)r9r�r{r�rz�
_id_prefix)r}r�r:�id_r~r~rr��szASTDeclaration.get_idcCs|�td�Srd)r��_max_idr�r~r~r�
get_newest_id�szASTDeclaration.get_newest_idr�cCs||j�}|jr|d7}|S)N�;)r{r�r�r~r~rr��s
zASTDeclaration._stringifyr)r�r�r��optionsrTcCsft|�d|d<t��}d|_|jj|d<||7}|jdkr@n�|jdkrLn�|jdkrXn�|jdkr�|t�dd�7}|t��7}n�|jd	kr�|t�d	d	�7}|t��7}n�|jd
kr�|t�d
d
�7}|t��7}nf|jdkr�|t�dd�7}|t��7}n>|jdk�r6t	t
|j�}|��}|t�||�7}|t��7}n|j�
||||j�|j�rb|t�d
d
�7}dS)NTZis_multilineZ
declaratorZ
add_permalink�memberr��macrorWrYrKr�r�r�)r5rZdesc_signature_lineZsphinx_line_typerz�isRedeclarationr9r�rrrAr{r�r�r�r�)r}r�r�r�r�ZmainDeclNoder�r�r~r~rr��s@






z!ASTDeclaration.describe_signature)F)T)r�r�r�r�rr�r5r^r�r�r�r�r�rrDrQr�r�r)r�rrr�r~r~r~rrys �
�	�ryc@s$eZdZeddedd�dd�ZdS)�SymbolLookupResultrxN)�symbols�parentSymbolr�rTcCs||_||_||_dSr|)r�r�r�)r}r�r�r�r~r~rr��szSymbolLookupResult.__init__)r�r�r�rr�r�r~r~r~rr��s�r�c@s6eZdZeeeefdd�dd�Zed�dd�ZdS)�	LookupKeyNr�cCs
||_dSr|r�r�r~r~rr��szLookupKey.__init__r�cCsd�d�dd�|jD���S)Nz[{}]rEcss|]\}}d�||�VqdS)z({}, {})N)�format)r�r�r�r~r~rr��s��z$LookupKey.__str__.<locals>.<genexpr>)r�r�r�r�r~r~rr��s�zLookupKey.__str__)	r�r�r�rr	r�r�r�r�r~r~r~rr��sr�cseZdZdZdZdZdZdd�Zdd�Ze	e
dd	�d
d��Zdd�d
d�Ze
e
dd��fdd�Zdeee
edd�dd�Zee
edd�dd�Zdd�dd�Zdd�dd�Ze
dd�dd�Zedd�dd �Zeedd�d!d"��Zeedd�d#d$��Zd%d�d&d'�Zed�d(d)�Zeeedd*�d+d,�Z eeeeedd-�d.d/�Z!ee"degdfe
eeee#d0�d1d2�Z$eee
edd3�d4d5�Z%de&e
d6dd7�d8d9�Z'edd:�d;d<�Z(ee
edd�d=d>�Z)eeeedd-�d?d@�Z*d%ddA�dBdC�Z+ee
eeddD�dEdF�Z,ee
dG�dHdI�Z-ee
dG�dJdK�Z.�Z/S)Lrxrz  FcCsdSr|r~r�r~r~r�__copy__�szSymbol.__copy__cCs|jrntddddd�SdSr|)r;rx)r}�memor~r~r�__deepcopy__�szSymbol.__deepcopy__N)rArTcGs ttjtjdd�t|�dS)Nr���end)�printrx�debug_indent_string�debug_indentrCr~r~r�debug_print�szSymbol.debug_printr�cCs|jsn|jrdSr|)r;r{r�r~r~r�_assert_invariants�szSymbol._assert_invariants)�keyr�rTcs|dkr
nt��||�SdS)N�children)�super�__setattr__)r}r�r���	__class__r~rr�szSymbol.__setattr__)r;r�r{�docname�linerTcCsr||_d|_d|_||_||_||_||_d|_|��g|_	g|_
|jrX|jj	�|�|jrf||j_|�
�dS)NF)r;�siblingAbove�siblingBelowr�r{r�r�r�r��	_childrenZ
_anonChildrenrrz�_add_function_params)r}r;r�r{r�r�r~r~rr�s zSymbol.__init__)r{r�r�rTcCs6|��||_||j_||_||_|��|��dSr|)r�r{rzr�r�r�)r}r{r�r�r~r~r�_fill_empty'szSymbol._fill_emptycCs�tjrtjd7_t�d�|jdur�|jjdur�|jjD]B}|jdurLq<|jj}|dur^q<tdd|�}|�	|||j
|j�q<tjr�tjd8_dS)Nruz_add_function_params:�
functionParam)rx�debug_lookupr�r�r{rDr6r�ry�_add_symbolsr�r�)r}r
�nnr�r~r~rr�7s

zSymbol._add_function_paramscCs&|jdurdS|jj�|�d|_dSr|)r;r��remover�r~r~rr�Ns
z
Symbol.remove�r�rTcCsp|jD]d}|�|�|jr|j|krd|_d|_d|_|jdurJ|j|j_|jdur^|j|j_d|_d|_qdSr|)r��	clear_docr{r�r�r�r�)r}r��sChildr~r~rr�Us





zSymbol.clear_docccs$|V|jD]}|��EdHqdSr|)r��get_all_symbols)r}r�r~r~rr�cs
zSymbol.get_all_symbolsccs|jEdHdSr|)r�r�r~r~rr�hszSymbol.childrenccs.|jD]"}|V|j��sq|jEdHqdSr|)r�r�r��children_recurse_anon)r}r�r~r~rr�ls


zSymbol.children_recurse_anonr�cCspg}|}|jr |�|�|j}q|��g}|D]6}|jdurV|�|j|j��f�q0|�|jdf�q0t|�Sr|)r;r�reverser{r�r�r�)r}r��sr�r~r~rr�ts

zSymbol.get_lookup_keycCsNg}|}|jr |�|�|j}q|��g}|D]}|�|j�q0t|dd�S)NF�r�)r;rr�r�r�)r}r�r�r�r~r~rr��s
zSymbol.get_full_nested_name)r��	matchSelf�
recurseInAnonrTcCsFtjrt�d�|j|||dd�}z
t|�WSty@YdS0dS)Nz_find_first_named_symbol ->F)�searchInSiblings)rxr�r��_find_named_symbolsrr�
StopIteration)r}r�r�r�r�r~r~r�_find_first_named_symbol�s

�
zSymbol._find_first_named_symbol)r�r�r�r�rTc#s8tjr~tjd7_t�d�tjd7_t�d�t��tjd�dd�t�d|�t�d��t�d��t�d	|�td
d����fdd
�}|�D]~}tjr�t�d�t|�tjd�dd�|j|kr�tj�rtjd7_t�d�tjd8_|Vtjr�tjd7_q�tj�r4tjd8_dS)Nruz_find_named_symbols:�self:r�r�zident:            zmatchSelf:        zrecurseInAnon:    zsearchInSiblings: )rxNNr�c3s��}tjr,t�d�t|�tjd�dd��r6|V�rH|jEdHn|jEdH|jdur`q�|j}tjr,t�d�t|�tjd�dd�q,dS)Nzsearching in self:rur�r�zsearching in sibling:)	rxr�r�r��	to_stringr�r�r�r�)r��r�r�r}r~r�
candidates�s


z.Symbol._find_named_symbols.<locals>.candidatesz
candidate:�matches��)rxr�r�r�r�r�rr�)r}r�r�r�r�r�r�r~r�rr��s2





zSymbol._find_named_symbols)r2�onMissingQualifiedSymbol�ancestorLookupTyper�r�r�rTc
Cs�tjr�tjd7_t�d�tjd7_t�d�t|�tjd�dd�t�d|�t�d|�t�d|�t�d	|�t�d
|�|j}|}|jr�|jr�|j}q�|dur�|d}	|jr�|j	|	|||d�r�q�|j}q�tj�rt�d
�t|�tjd�dd�|dd�D]X}
|j
|
||d�}|du�r^|||
�}|du�r^tj�rXtjd8_dSd}|}�qtj�r�t�d�t|�tjd�dd�|d}
|j|
|||d�}tj�r�t|�}tjd8_t
|||
�S)Nruz_symbol_lookup:r�r�r�znestedName:        zancestorLookupType:zmatchSelf:         zrecurseInAnon:     zsearchInSiblings:  r�r�r�r�zstarting point:r��r�r�r�Fzhandle last name from:)rxr�r�r�r�r�r�r�r;�find_identifierr�r��listr�)
r}r2r�r�r�r�r�r�r�Z	firstNamer�rzr�r~r~r�_symbol_lookup�sl

�
�



�zSymbol._symbol_lookup)r2r{r�r�rTcsltjrVtjd7_t�d�tjd7_t�d|�t�d��t�d�����dtdd�dd	�}|j||dd
d
d
d��t�j�}t	|�dk�rtjr�t�d
�tjd7_t�d�j
�t�d��t�d�����tjd8_t�j�j
���d�}tj�rtjd8_|Stj�r\t�d�tjd7_t�dt	|��tjd8_��s�tj�r�t�d�tjd8_|dSg}g}	g}
|D]<}|jdu�r�|�
|�n|j�r�|
�
|�n
|	�
|��q�tj�rt�dt	|��t�dt	|	��t�dt	|
��dd�����fdd�}t	|	�dk�r<d}
n�|�}
dddd��fdd�}�jdk�rr||	d|
����}tj�r�t�d |�|	D]8}|j��}tj�r�t�d!|�||k�r�|||
��q�t	|�dk�rtj�rt�d"|
du�tjd8_|
du�r|
S|�SnRtj�r<t�d#|
du�tjd8_|
du�rN|
��|d}|�����|SdS)$Nruz
_add_symbols:z
nn:       z
decl:     zlocation: {}:{}rx�r�r�rTcSsXtjrFtjd7_t�d�tjd7_t�d|�tjd8_t||dddd�S)Nruz'_add_symbols, onMissingQualifiedSymbol:zident: r��r;r�r{r�r�)rxr�r�r��r�r�r~r~rr�(s
�z5Symbol._add_symbols.<locals>.onMissingQualifiedSymbolF�r�r�r�r�rz _add_symbols, result, no symbol:z
ident:       z
declaration: zlocation:    {}:{}r�r�z_add_symbols, result, symbols:znumber symbols:zno declarationz
#noDecl:  z
#withDecl:z
#dupDecl: r�cs:tjrt�d�t�j�j���d�}tjr6t�d�|S)Nz begin: creating candidate symbolr�z end:   creating candidate symbol)rxr�r�r�r�r4�r{r�r��lookupResultr~r�makeCandSymbolos
�
z+Symbol._add_symbols.<locals>.makeCandSymbol)rz�
candSymbolrTcsNtjr:tjd7_t�d�tjd8_tjd8_d|_t|���dS)NruZ
redeclarationr�T)rxr�r�r�r�rw)rzr�)r{r~r�handleDuplicateDeclarations
z7Symbol._add_symbols.<locals>.handleDuplicateDeclarationr�zcandId:zoldId: z,no match, no empty, candSybmol is not None?:zAno match, but fill an empty declaration, candSybmol is not None?:)rxr�r�r�r�r�r�r�r�r�r�r�r{rr�r9r�r�r�)r}r2r{r�r�r�r�rzZnoDeclZwithDeclZdupDeclr�r�r�r�ZcandIdZoldIdr~r�rr�s�

�

�






�
zSymbol._add_symbolsr)r��docnamesr�rTcCstjrtjd7_t�d�|jD]�}|j|jddd�}|dur^|j�|�||_|�	�q$|j
r�|j|vr�|j
s�|�|j
|j|j
�nN|j|jkr�t|j
�}td�}||j|j
|j
j|f}tj||j|j
fd�n|�|||�q$tjr�tjd8_dS)Nruzmerge_with:F)r�r�r��NDuplicate C declaration, also defined at %s:%s.
Declaration is '.. c:%s:: %s'.��location)rxr�r�r�r�r�r�rr;r�r{r�r�r�r�rr��logger�warning�
merge_with)r}r�r�r�Z
otherChildZourChildr��msgr~r~rr��s8

��

�zSymbol.merge_with)r2rTcCsHtjrtjd7_t�d�|j|dddd�}tjrDtjd8_|S)Nruz	add_name:)r{r�r�)rxr�r�r�r�)r}r2r�r~r~r�add_name�s
zSymbol.add_namecCsLtjrtjd7_t�d�|j}|�||||�}tjrHtjd8_|S)Nruzadd_declaration:)rxr�r�r�r�r�)r}r{r�r�r2r�r~r~r�add_declaration�s
zSymbol.add_declarationcCs(tjr�tjd7_t�d�tjd7_t�d|�t�d|�t�d|�t�d|�t|�tjd�dd�tjd	8_|}|du�r$tjr�tjd	7_t�d
�t|�tjd�dd�tjd	8_|r�|j|kr�|S|r�|jn|j}|D]}|j|kr�|Sq�|�s�q$|j	}q�dS)Nruzfind_identifier:zident:           zmatchSelf:       zrecurseInAnon:   zsearchInSiblings:r�r�r�ztrying:)
rxr�r�r�r�r�r�r�r�r�)r}r�r�r�r��currentr�r�r~r~rr��s6




zSymbol.find_identifier)r�rTcCs�tjr,tjd7_t�d�tjd7_|}|jD]�\}}d}|jD]}|j|krH|}q`qH|}tjr�t�d|�t�d|�|dur�t|�tjd�dd�n
t�d�|dur6tjr�tjd8_dSq6tjr�tjd8_|S)	Nruzdirect_lookup:zname:          zid:            r�r�z	not foundr�)	rxr�r�r�r�r�r�r�r�)r}r�r�r�r�r�Zcandr~r~r�
direct_lookups2



zSymbol.direct_lookup)r2rr�r�rTcCs�tjrtjd7_t�d�dtdd�dd�}|j|||||dd�}tjrZtjd8_|durfdSt|j�}t|�d	kr�dS|d	S)
Nruzfind_declaration:rxr�cSsdSr|r~r�r~r~rr�7sz9Symbol.find_declaration.<locals>.onMissingQualifiedSymbolFr�r)	rxr�r�r�r�r�r�r�r�)r}r2rr�r�r�r�r�r~r~r�find_declaration0s*
��
zSymbol.find_declaration)�indentrTcCs�tj|g}|js|�d�nX|jr6|�t|j��n|�t|j��|jrv|�d�|jrf|�d�|�t|j��|jr�|�d�|�|j�|�d�|�d�d�	|�S)Nz::z: z!!duplicate!! z	(r��
r�)
rxr�r;rr�r�r{r�r�r�)r}r�r�r~r~rr�Ks"




zSymbol.to_stringcCs6|�|�g}|jD]}|�|�|d��qd�|�S)Nrur�)r�r�rr�r�)r}r�r�r�r~r~rr�`s
zSymbol.dump)0r�r�r�r�r�r��debug_show_treer�r��staticmethodrr�r�r�r�r�ryrQr�r�r�r�r�rr�r�r�r�r�r�r�r^r�r�rr�r�r�rr�r�r�r�r�r�r�r��
__classcell__r~r~r�rrx�sr	���2�H�!�$	���rxc@s�eZdZeed�dd��Zedd��Zedd��Zed�dd	�Ze	d�d
d�Z
ed�dd
�Zed�dd�Z
eeeeeeefd�dd�Zed�dd�Zed�dd�Zed�dd�Zed�dd�Zed�dd�Zed�dd�Zeed�d d!�Zed�d"d#�Zed�d$d%�Zed�d&d'�Zd_eee gefeed)�d*d+�Z!e"d�d,d-�Z#e$ed�d.d/�Z%e&d�d0d1�Z'e(d�d2d3�Z)ee*d4�d5d6�Z+eee,d7�d8d9�Z-d`eee.d7�d:d;�Z/e0eefeee1d<�d=d>�Z2dae0eefeee1d<�d?d@�Z3dbeee4dB�dCdD�Z5dce0eefee6dE�dFdG�Z7e0eefee8dE�dHdI�Z9e:d�dJdK�Z;e<d�dLdM�Z=e>d�dNdO�Z?e@d�dPdQ�ZAeBd�dRdS�ZCeDd�dTdU�ZEeeeDdV�dWdX�ZFe"d�dYdZ�ZGe"d�d[d\�ZHe0ee6fd�d]d^�ZIdAS)d�DefinitionParserr�cCsdS)N�Cr~r�r~r~r�languagehszDefinitionParser.languagecCs|jjSr|)�config�c_id_attributesr�r~r~r�
id_attributeslszDefinitionParser.id_attributescCs|jjSr|)r��c_paren_attributesr�r~r~r�paren_attributespsz!DefinitionParser.paren_attributescCs�|jdkrdS|j}|jd7_d}|jr8|�d�n4|jdkrX|sX|jd7_q|n|jdkrhd}nd}|jd7_q&|j||j�S)N�"ruFz$Unexpected end during inside string.�\T)�current_char�pos�eof�fail�
definition)r}�startPos�escaper~r~r�
_parse_stringts

zDefinitionParser._parse_stringc
Cs6|��|�d�rtd�S|�d�r,td�S|j}|�t�rZ|�t�t|j||j��St	t
ttfD]0}|�|�rf|�t
�t|j||j��Sqf|��}|dur�t|�S|�t��r2|j�d�}|j�d�}zt||�WSt�y}z|�d|�WYd}~n&d}~0t�y0|�d�Yn0dS)	Nr�Tr�Frur�z8Can not handle character literal. Internal error was: %szJCan not handle character literal resulting in multiple decoded characters.)�skip_ws�	skip_wordr�r�matchr.r/r�rr,r0r2r4r3r
r�r-Z
last_match�groupr��UnicodeDecodeErrorrr*)r}rZregex�stringr�r�ryr~r~r�_parse_literal�s8



�

"zDefinitionParser._parse_literalcCsH|jdkrdS|jd7_|��}|��|�d�s@|�d�t|�S)Nr�rur�z0Expected ')' in end of parenthesized expression.)rr�_parse_expressionr�skip_stringrr�)r}r�r~r~r�_parse_paren_expression�s


z(DefinitionParser._parse_paren_expressioncCsL|��|��}|dur|S|��}|dur0|S|��}|durHt|�SdSr|)rrr�_parse_nested_namer�)r}r�r�r~r~r�_parse_primary_expression�sz*DefinitionParser._parse_primary_expression)r��open�closerTcCs�|��|�|�sdS|�|�r(gdfSg}d}|��|��}|��|�|�|��|�|�rfq�|�d�s�|�d||f�|j|kr0|dkr0|jd7_d}q�q0||fS)N�NNFrHz"Error in %s, expected ',' or '%s'.rruT)r�skip_string_and_wsrrrrrr)r}r�rrr r|r�r~r~r�_parse_initializer_list�s*




z(DefinitionParser._parse_initializer_listcCs&|�ddd�\}}|durdSt|�S)Nzparenthesized expression-listr�r�)rr�r}r~r~r�_parse_paren_expression_list�s�z-DefinitionParser._parse_paren_expression_listcCs(|�ddd�\}}|durdSt||�S)Nzbraced-init-listr~r)rr�r}r~r~r�_parse_braced_init_list�sz(DefinitionParser._parse_braced_init_listcCs�|��}g}|��|�d�rR|��}|��|�d�sB|�d�|�t|��q|�d�r�|�d�rv|jd8_n|�	�}|�t
|��q|�d�r�|�t��q|�d�r�|�t��q|�
�}|dur�|�t|��qq�qt||�S)	Nr�r�z*Expected ']' in end of postfix expression.rrlr�rorp)rrrrrrrr�rrrr�rrr�r)r}r�r
r�r�r�r~r~r�_parse_postfix_expression�s8







z*DefinitionParser._parse_postfix_expressioncCs�|��tD]@}|ddvr(|�|�}n
|�|�}|r|��}t||�Sq|�d�r�|�d�r�|jdd�}|��|�d�s�|�	d�t
|�S|��}t|�S|�d	�r�|�d�s�|�	d
�|jdd�}|��|�d�s�|�	d�t
|�S|��S)NrrrUr�F)�namedr�zExpecting ')' to end 'sizeof'.r]zExpecting '(' after 'alignof'.zExpecting ')' to end 'alignof'.)r�_expression_unary_opsrr�_parse_cast_expressionr�skip_word_and_wsr�_parse_typerr�_parse_unary_expressionrrr)r}rr�r�rr~r~rr$'	s4	









z(DefinitionParser._parse_unary_expressionc
Cs�|j}|��|�d�r�z2|�d�}|�d�s8|�d�|��}t||�WSty�}z|||_z|��WWYd}~Sty�}z:g}|�	|df�|�	|df�|�
|d�|�WYd}~n
d}~00WYd}~q�d}~00n|��SdS)Nr�Fr�z Expected ')' in cast expression.zIf type cast expressionzIf unary expressionzError in cast expression.)rrrr#rr!rr'r$r�_make_multi_error)r}rrr�ZexCastZexUnary�errsr~r~rr!M	s.



��0z'DefinitionParser._parse_cast_expressioncs�fdd���|d�S)Nc		s�dtt�kr$td��fdd�}ntd����fdd�}g}g}|�|������j}d}t�D]�}|ddvr���|�s�qhn��|�s�qh|d	kr��jd	kr��jd8_q�z(|�}|�|�|�|�d
}Wq�Wqht	y�|�_Yqh0qh|sN�qqNt
||�S)Nrur�cs���Sr|)r!r~r�r~r�parsers	szYDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_expr.<locals>.parsercs���d�S)Nrur~r~)�_parse_bin_op_expr�opIdr}r~rr'v	sFr�abcnoxrgT)r��_expression_bin_opsr�rrrrrrr'r)	r}r)r'r r!r�oneMorerr��r()r)r}rr(q	s:




zIDefinitionParser._parse_logical_or_expression.<locals>._parse_bin_op_exprrr~r�r~r-r�_parse_logical_or_expressione	s%z-DefinitionParser._parse_logical_or_expression)�
orExprHeadrTcCsdSr|r~)r}r/r~r~r�"_parse_conditional_expression_tail�	sz3DefinitionParser._parse_conditional_expression_tailcCs�g}g}|��}|�|�d}|��tD]J}|ddvrH|�|�sTq*n|�|�sTq*|��}|�|�|�|�d}q*|sq~qt||�S)NFrr*T)r.rr�_expression_assignment_opsrrr,)r}r r!�orExprr,rr�r~r~r�_parse_assignment_expression�	s&




z-DefinitionParser._parse_assignment_expressioncCs|��}|Sr|)r.)r}r2r~r~r�_parse_constant_expression�	sz+DefinitionParser._parse_constant_expressioncCs|��Sr|�r3r�r~r~rr�	sz"DefinitionParser._parse_expressionT)r�r'�allowrTc

Cs8|j}z|�WStyR}z,|r(|js*�|�d|�||_WYd}~n
d}~00|��|j}|�t�rt|j}n�dddd�}g}	|js�t	|	�dkr�|j
|vr�q�|j
|��vr�|	�||j
�n"t	|	�dkr�|j
|	dkr�|	�
�|jd7_q�t	|�dk�r|j�r|�d	|�|j||j���}t|���S)
NzBParsing of expression failed. Using fallback parser. Error was:
%sr�rr�)r�r~r�rr�ruz0Could not find end of expression starting at %d.)rr'ZallowFallbackExpressionParsing�warnrr
�
_string_re�matched_textrr�r�keysr�poprr�stripr-)
r}r�r'r6ZprevPosryrr�Zbracketsr�r~r~r�_parse_expression_fallback�	s<
�
�z+DefinitionParser._parse_expression_fallbackcCs�g}|��d}|�d�rd}|��|�t�s:|�d�|j}|tvrV|�d|�|j|jjvr�d}|�||jt	|jj�f�t
|�}|�|�|��|�d�sq�qt||�S)NFr�Tz#Expected identifier in nested name.z3Expected identifier in nested name, got keyword: %s��Expected identifier, got user-defined keyword: %s. Remove it from c_extra_keywords to allow it as identifier.
Currently c_extra_keywords is %s.)
rrr
r1rr9�	_keywordsr��c_extra_keywordsr�r�rr�)r}r�r�r�r�r�r~r~rr�	s0


�

�

z#DefinitionParser._parse_nested_namecCs<|�t�r|jSdD]"}||jjvr|�|�r|SqdS)N)r^r_r`)r
�_simple_type_specifiers_rer9r�r@r)r}�tr~r~r�_parse_simple_type_specifier
s


z-DefinitionParser._parse_simple_type_specifiercCsJg}|��|��}|durq2|�|�|��qt|�dkrBdSt|�SrR)rrCrr�r0)r}r�rBr~r~r�_parse_simple_type_specifiers
s

z.DefinitionParser._parse_simple_type_specifierscCsV|��|��}|dur|Sd}|��dD]}|�|�r,|}qDq,|��}t||�S)N)rWrKrY)rrDr"rr1)r}r�r��kr2r~r~r�_parse_trailing_type_spec&
s
z*DefinitionParser._parse_trailing_type_spec)�	paramModerTcCs�|��|�d�s*|dkr&|�d�ndSg}|��|�d�s�|��|�d�r�|�tdd��|��|�d�s�|�d�q�|jddd	�}|�t|��|��|�d
�r�q@q@|�d�r�q�q@|�d|j�q@g}|��}|dur�q�|�|�q�t||�S)Nr�r�zExpecting "(" in parameters.r�r>Tz'Expected ")" after "..." in parameters.�single�rUrrHz-Expecting "," or ")" in parameters, got "%s".)	rrrrr5�_parse_type_with_initr�_parse_attributer@)r}rGrAr6rBrFr~r~r�_parse_parameters9
sB






��z"DefinitionParser._parse_parameters)rU�typedrTcCsBd}d}d}d}d}d}g}	|��|sx|dkrP|�d�r@d}q|�d�rPd}q|dvrx|�d�rhd}q|�d�rxd}q|dkr�|s�|�d�r�d}q|�d�r�d}q|d	kr�|s�|�d
�}|r�q|s�|r�|�d�}|r�q|s�|r�|�d�}|r�q|�s|�r|�d
�}|�rq|��}
|
�r.|	�|
�q�q.qt|||||||	�S)Nr�rDrR)r�r�rVrLrar\r�rPrSrZrG)rrrKrrL)r}rUrMrMrNrPrSrZrGrBrFr~r~r�_parse_decl_specs_simplee
sl










�z)DefinitionParser._parse_decl_specs_simplecCsT|r|dvrtd|��|�||�}d}|rB|��}|�||�}nd}t||||�S)N�r�r�r��#Internal error, unknown outer "%s".)r�rNrFrT)r}rUrMrVrWrXr~r~r�_parse_decl_specs�
sz"DefinitionParser._parse_decl_specs)rrGrMrTc	s*|dkrz��t�rt�jtvr,��d�j��j�jjvrZd}��|�jt�jj�f�t�j�}t	|gdd�}q�d}n|r���
�}nd}g}���|�r���d��r����d}d}	d}
d}|sֈ�
d�r�d}q�|	s��
d	�r�d}	q�|
s���
d
�r�d}
q�|�s��
d��rd}qqq�|�r&dn��d�}|�rR��d
��sL��d�d}
nJ��d
��rdd}
n8�fdd�}��d
g|�}
�����d
��s���d�|�t||	|
|||
��q��q�q���|�}|du�rt|�dk�r|�r|dk�r|�r�����d��r���}
t||
d�St|||d�S)NrHz$Expected identifier, got keyword: %sr>Fr�r�rVTrGrZrSrlr�z&Expected ']' in end of array operator.cs���Sr|)rr~r�r~rr'�
sz>DefinitionParser._parse_declarator_name_suffix.<locals>.parserrr�rprorl)r
r1r9r?rr�r@r�r�r�rrrr"rr=rr^rLr�r4rnri)r}rrGrMr�r�rjrkrVrGrZrSr`rar'r�r~r�r�_parse_declarator_name_suffix�
s�

�

�







�z.DefinitionParser._parse_declarator_name_suffixc
Csd|dvrtd|��g}|��|r�|�d�r�|��d}d}d}g}|sZ|�d�}|rZqF|sn|�d�}|rnqF|s�|�d�}|r�qF|��}	|	dur�|�|	�qFq�qF|�|||�}
t|
||||d�S|�r�|jd	k�r�|j	}z|�
|||�}|WSt�y�}
z�d
}|dk�r|d7}|�|
|f�||_	zX|�d	�|�|||�}|�d
��sZ|�d�|jdd|d�}
t
||
d�WWYd}
~
St�y�}zH||_	d}|dk�r�|d7}|�||f�d}|�||�|�WYd}~n
d}~00WYd}
~
n
d}
~
00|j	}z|�
|||�WSt�y^}z2||_	|�|df�d}|�||�|�WYd}~n
d}~00dS)N)r�r�z'Internal error, unknown paramMode '%s'.rlFrSrZrGrsr�z If declarator-id with parametersr�z (e.g., 'void f(int arg)')r�z$Expected ')' in "( ptr-declarator )"r��rrGrMrwz"If parenthesis in noptr-declaratorz% (e.g., 'void (*f(int arg))(double)')zError in declaratorzIf declarator-idz!Error in declarator or parameters)r�rrr"rKr�_parse_declaratorrqrrrRr'rrur%)r}rrGrM�
prevErrorsrSrZrGrBrFrrrr�ZexParamQualr�rvZexNoPtrParen�headerryr~r~rrT�
s��



��


�
:z"DefinitionParser._parse_declaratorN)rU�
allowFallbackrTcs����|dkr0dr0���}|dur0t|dd�S��d�s>dS���}|durVt|�S|dkrdg}n |durvddg}n��d|��fdd	�}�j|||d
�}t|�S)Nr�F)r�rtrHr�z;Internal error, initializer for outer '%s' not implemented.cs���Sr|r5r~r�r~rr'fsz3DefinitionParser._parse_initializer.<locals>.parser)r6)rrr�rrr=)r}rUrWZ
bracedInitZfallbackEndr'r�r~r�r�_parse_initializerOs(

�z#DefinitionParser._parse_initializer)rrUrTc
Csn|r|dvrtd|��|dk�rg}|j}z.|j|dd�}|jd|dd�}|jdd�Wn�t�y}z�d	}|�||f�||_z|j|d
�}|jd|d�}WnVty�}	z>||_d}|�|	|f�d
}
|
d7}
|�||
�|	�WYd}	~	n
d}	~	00WYd}~n
d}~00nR|dk�r8|j|d
�}|jd|d�}n,d}|dk�rJd}|j|d
�}|j||d�}t||�S)NrOrPr�F)rUrMTrS)ZallowSemicolonzIf just a name�rU)rrGzIf typedef-like declarationz%Type must be either just a name or a ztypedef-like declaration.r�r�)	r�rrQrT�
assert_endr'rr%rA)r}rrUrUrr�r�Z	exUntyped�descZexTypedrVrGr~r~rr#lsH
�	.

zDefinitionParser._parse_typecCs(|r|j||d�}|j|d�}t||�S)NrIrY)r#rXrB)r}rrUr�r�r~r~rrJ�sz&DefinitionParser._parse_type_with_initcCsN|��|��}|dur"|�d�|��|�d�s>t|d�S|�d�rRt|g�Sg}|��|�d�r�|�tdd��|��|�d�s�|�d��qD|�t	�s�|�d�t
t|j�gdd	�}|��|�d��r|�t|dd��|��|�d��sD|�d��qD|�t|��|�d
��r&qVqV|�d��r8�qDqV|�d�qVt||�S)Nz(Expected identifier in macro definition.r�r�r>Tz-Expected ")" after "..." in macro parameters.z(Expected identifier in macro parameters.Fr�rHz9Expected identifier, ')', or ',' in macro parameter list.)
rrrrrCrrr�r
r1r�r�r9)r}r�rAr�r~r~r�_parse_macro�sD










zDefinitionParser._parse_macrocCs|��}t|�Sr|)rr=r�r~r~r�
_parse_struct�szDefinitionParser._parse_structcCs|��}t|�Sr|)rr>r�r~r~r�_parse_union�szDefinitionParser._parse_unioncCs|��}t|�Sr|)rr?r�r~r~r�_parse_enum�szDefinitionParser._parse_enumcsV���}���d}��d�rL���td��fdd�}��g|�}t|�}t||�S)Nrtr�cs���Sr|)r4r~r�r~rr'�sz2DefinitionParser._parse_enumerator.<locals>.parser)rrrr�r=r�r@)r}r�r�r'ZinitValr~r�r�_parse_enumerator�s
z"DefinitionParser._parse_enumeratorcCsl|��d}|�d�r$d}|��}n:|�d�r<d}|��}n"|�d�rTd}|��}n
|�d�t|||d�S)NrWrYrKzTCould not parse pre-v3 type directive. Must start with 'struct', 'union', or 'enum'.F)rrr]r^r_rry)r}r{rr~r~r�parse_pre_v3_type_definition�s






z-DefinitionParser.parse_pre_v3_type_definition)r9r�rTcCs�|dvrtd|��|dvr(td|��d}|dkrD|jddd�}n�|dkr\|jddd�}nr|d	krn|��}n`|d
kr�|��}nN|dkr�|��}n<|dkr�|��}n*|d
kr�|��}n|dkr�|jddd�}n|d	kr�|��|�	d�}nd}t
||||�S)N)r�r�r�rWrYrKr�r�z(Internal error, unknown objectType "%s".)	r�r��varr�rWrYrKr�r�z+Internal error, unknown directiveType "%s".r�T)rrUr�r�rWrYrKr�r�r�F)r�rJr#r\r]r^r_r`rrryr�r~r~r�parse_declarations4




z"DefinitionParser.parse_declarationcCs|��Sr|)rr�r~r~r�parse_namespace_object#sz'DefinitionParser.parse_namespace_objectcCs&|��}|��|�d�|��|S)Nz())rrrrZr�r~r~r�parse_xref_object&s

z"DefinitionParser.parse_xref_objectc
Cs�|j}d}z|��}|��|��Wn�ty�}z�||_z|�d�}|��|��WnVty�}z>d}g}|�|df�|�|df�|�||�|�WYd}~n
d}~00WYd}~n
d}~00|S)NFz%Error when parsing (type) expression.z
If expressionzIf type)rrrrZr'r#rr%)r}rr�ZexExprZexTyperVr&r~r~r�parse_expression.s&
:z!DefinitionParser.parse_expression)T)T)T)NT)N)Jr�r�r�r�r�r�r�rr
r�rr�rrr	rr^rr�rr�rrrr$r!r.rr0r3r4rrr=r�rrrCr0rDr/rFr@rLrLrNrTrQrrgrRrTr�rXrAr#rBrJrCr\r=r]r>r^r?r_r@r`ryrarcrdrerfr~r~r~rr�gst

&�
,&3	�
�+	,:�R��Q�;("r�r�cCsttd�gdd�S)NZPhonyNameDueToErrorFr�)r�r�r~r~r~r�_make_phony_error_nameDsrgcseZdZUdejiZeed<edd�dd�Z	ee
edd�dd	�Ze
e
d
�dd��Ze
e
d
�d
d��Ze
e
d�dd�Zeed�dd�Zeed�dd�Zeeedd�dd�Zeed
��fdd�Ze
eed�dd�Zdd
�dd �Zdd
�d!d"�Ze
e
d�d#d$�Z�ZS)%�CObject�noindexentry�option_specN)�astrTcCs�|j}|j}|jdurdS|j}|dur,dS|jdkr:dS|jdkrHdS|j}|j|jdddd�}|durndS|j��}||_t	||j||j
j|��dd�dS)NrKFTr�rur�)
rzr;r{r9r�r�r�r�r�rxr�r��get_source_info)r}rkrzr�Z
parentDeclZtargetSymbolr�Z	declCloner~r~r�_add_enumerator_to_parentQs.


�
�z!CObject._add_enumerator_to_parent)rk�sigr�rTc
	Cs�g}tdtd�D]2}z|j|d�}|�|�WqtyBYq0qtt|��}|d}|j���	��
d�}||jjj
vr�|d�|�|dd�D]&}|s�q�||jjj
vr�|d�|�q�|jj�|�d|jvr�|�|�}	|jd�d|	|d	df�dS)
Nru)r�rr��idsri�entriesrHr�)r�r�r�rr(r��reversedrzr�r��lstrip�state�documentroZnote_explicit_targetr��get_index_textZ	indexnode)
r}rkrnr�ror��id�newestIdr�Z	indexTextr~r~r�add_target_and_indexvs*

zCObject.add_target_and_indexr�cCs
t��dSr|)r�r�r~r~r�object_type�szCObject.object_typecCs|jSr|)ryr�r~r~r�display_object_type�szCObject.display_object_typer�cCstd�||jfS)Nz	%s (C %s))rrzr�r~r~rru�szCObject.get_index_text)r'rTcCs|�|j|j�Sr|)rcry�objtype�r}r'r~r~r�parse_definition�szCObject.parse_definitioncCs|��Sr|)rar|r~r~rra�sz$CObject.parse_pre_v3_type_definition)r�rkr�rTcCs|�|d|j|�dS)Nr�)r�r�)r}r�rkr�r~r~rr��szCObject.describe_signaturecsP|jjjj}d|jvr<|jdd}||jd<|��|jd<d|jd<t��	�S)N�c:parent_symbolr��root_symbolr��
c:last_symbol)
rsrtZsettingsr��	temp_data�
domaindatar��ref_contextr��run)r}r��rootr�r~rr��s


zCObject.run)rnr�rTcCs |jjd}t|||jjd�}z�z|�|�}|��Wn�ty�}z�|jjdsT�|jdkr`�z|�|�}|��Wnty�|�Yn0|j	|_
|jjdr�d}|�tj
||j	||�}tj||d�WYd}~n
d}~00WnVt�y8}z<tj||d�t�}	|�|	�}
|
|jjd<t|�WYd}~n
d}~00zN|j||jj|��d	d
�}
|jjd|
_|
jdu�rz|
|
j_|
|jjd<Wndt�y�}zJ|j|jjd<td�}||jj|jj|j|f}tj||d�WYd}~n
d}~00|j	dk�r|�|�t|j�}|� |||�|S)
Nr~�r�r��c_allow_pre_v3r��c_warn_on_allowed_pre_v3zl{}: Pre-v3 C type directive '.. c:type:: {}' converted to '.. c:{}:: {}'.
The original parsing error was:
{}r�r�ru)r�r�r�r�)!r�r�r�r�r}rZr'r{rar9ryr�rr�r�r�rgr��
ValueErrorr�r�rlr�r�rwrzrr�rzrm�dictr�r�)r}rnr�r�r'rk�eOrigr�ryr�rzr�r~r~r�handle_signature�s^




�(
�$

zCObject.handle_signaturecCsH|jjd}|jjd|_|jjd|_||jjd<|��|jjd<dS)Nr�r~r�)r�r��oldParentSymbolr��oldParentKeyr�)r}Z
lastSymbolr~r~r�before_content�s
zCObject.before_contentcCs |j|jjd<|j|jjd<dS)Nr~r�)r�r�r�r�r�r�r~r~r�
after_content
szCObject.after_contentcCsd|S)Nrvr~r�r~r~r�make_old_id
szCObject.make_old_id)r�r�r�r�flagrjr;�__annotations__ryrmr�rrxr�ryrzrur�r}rarr�rrr�r�r�r�r�r�r~r~r�rrhHs*
�%� �
@rhc@s"eZdZdZeed�dd��ZdS)�
CMemberObjectr�r�cCs|jSr|)r{r�r~r~rrz
sz!CMemberObject.display_object_typeN)r�r�r�ryr�r�rzr~r~r~rr�

sr��	parameterZ
Parameters)r�r�r6�argumentr�)r�)�labelr�ZtyperolenameZ	typenames�retvalz
Return values)Zretvalsr�T)r�r�Zcan_collapseZreturnvalueZReturnsF)�returnsrT)r�Zhas_argr�Z
returntypezReturn type)Zrtypec@seZdZdZe��ZdS)�CFunctionObjectr�N�r�r�r�ry�_function_doc_field_types�copyZdoc_field_typesr~r~r~rr�%
sr�c@seZdZdZe��ZdS)�CMacroObjectr�Nr�r~r~r~rr�+
sr�c@seZdZdZdS)�
CStructObjectrWN�r�r�r�ryr~r~r~rr�1
sr�c@seZdZdZdS)�CUnionObjectrYNr�r~r~r~rr�5
sr�c@seZdZdZdS)�CEnumObjectrKNr�r~r~r~rr�9
sr�c@seZdZdZdS)�CEnumeratorObjectr�Nr�r~r~r~rr�=
sr�c@seZdZdZdS)�CTypeObjectr�Nr�r~r~r~rr�A
sr�c@s<eZdZUdZdZdZdZiZee	d<e
ed�dd�Zd	S)
�CNamespaceObjectFrurTrjr�c
Cs�|jjdd}|jd��dvr,|}g}n~t|jd|��|jjd�}z|��}|��Wn<t	y�}z$t
j||��d�t�}WYd}~n
d}~00|�
|�}|g}||jjd<||jjd<|��|jjd	<gS)
Nr�rr�ZNULL�0Znullptrr�r�r~�c:namespace_stackr�)r�r��	argumentsr<r��get_locationr�rdrZr'r�r�rgr�r�r�r�)r}�
rootSymbolrz�stackr'r�ryr~r~rr�Q
s(
�
zCNamespaceObject.runN�
r�r�r�Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespacerjr;r�rrr�r~r~r~rr�E
s
r�c@s<eZdZUdZdZdZdZiZee	d<e
ed�dd�Zd	S)
�CNamespacePushObjectFrurTrjr�c
Cs�|jd��dvrgSt|jd|��|jjd�}z|��}|��Wn<ty�}z$t	j
||��d�t�}WYd}~n
d}~00|jj�
dd�}|s�|jjdd}|�|�}|jj�
dg�}|�|�||jjd<||jjd<|��|jjd	<gS)
Nrr�r�r�r~r�rr�r�)r�r<r�r�r�r�rdrZr'r�r�rgr��getr�r�rr�r�)r}r'r�ryZ	oldParentrzr�r~r~rr�o
s,
�

zCNamespacePushObject.runNr�r~r~r~rr�h
s
r�c@s<eZdZUdZdZdZdZiZee	d<e
ed�dd�ZdS)	�CNamespacePopObjectFrTrjr�cCs�|jj�dd�}|r t|�dkr8tjd|��d�g}n|��t|�dkrV|d}n|jjdd}||jjd<||jjd<|�	�|jj
d	<gS)
Nr�rz;C namespace pop on empty stack. Defaulting to global scope.r�r�r�rr~z
cp:parent_key)r�r�r�r�r�r�r�r;r�r�r�)r}r�rzr~r~rr��
s�
zCNamespacePopObject.runNr�r~r~r~rr��
s
r�cs<eZdZd	eeededd��fdd�
Zdd�dd�Z�Z	S)
�	AliasNodeNr)rn�aliasOptionsrtr��	parentKeyrTcslt���||_||_||_|durbd|jvrT|jdd}||jd<|��|jd<|jd|_	n||_	dS)Nr~r�rr�)
r�r�rnr�rtr�r�r�r�r�)r}rnr�rtr�r�r�r�r~rr��
s


zAliasNode.__init__r�cCs|j|j|j|jd|jd�S)N)r�r�)r�rnr�rtr�r�r~r~rr��
s�zAliasNode.copy)NN)
r�r�r�r�r�rr�r�r�r�r~r~r�rr��
s��r�c@sDeZdZejdZeeeeee	e
ed�dd�Ze	dd�dd�Z
dS)	�AliasTransformru)r��maxdepth�skipThisr��
renderOptionsrtrTc	Cs
|dkrd}n|dkrd}n|d8}d}g}|sZt�dd�}	|�|	�|j�|	d|j|�|�r|rj|}
nDt��}t��}|�|�||_d|d<d	|d
<|d<d|d<|}
|j	D]0}
|
jdur�q�|j
|
|d|||d
�}|
�|�q�|�st|j	�dk�r|�|�|S)NrTruFr�r�r��domain�aliasr{�desctype�noindex�r�r�r�r�rt)
r�desc_signaturerr{r�r�Zdesc_contentr[rtr��_render_symbolrPr�)r}r�r�r�r�r�rtZrecurser
r�ZchildContainerZcontentr[r�Z
childNodesr~r~rr��
sD



�
zAliasTransform._render_symbolN)�kwargsrTc
Ks�|j�t�D�]�}tt|�}|j}|j}zt|||jjd�}|�	�}Wn6t
y|}ztj||d�d}WYd}~n
d}~00|dur�t
�|d�}|��|t
�||�7}|�|�q|jjdjd}	|	�|�}
|
s�td|�td|�t|	�d��|
j|d	d
d
d�}|du�r`t
�|d�}|�|�|��|t
�||�7}tjd||d�|�|�q|jd
�s�|jdu�r�t
�|d�}|�|�|��|t
�||�7}tjd||d�|�|�q|j||jd|jd
|jt�|jd�}|�|�qdS)Nr�r�r�r�r�Target: �ParentKey: ru�anyTr�z,Could not find C declaration for alias '%s'.�norootzACan not render C declaration for alias '%s'. No such declaration.r�r�)rt�findallr�rrnr�r�r�r�rer'r�r�rr��clearr�Zreplace_selfZdomainsr�r�r�r�r�rr�r{r�r�)
r}r�r�rnr�r'r�ryr�r�r�r�r
r~r~r�apply�
sn
�



�


�

�
�zAliasTransform.apply)r�r�r�r!Zdefault_priorityrxrQr^r�rrrr�r�r~r~r~rr��
s
�,r�c@s6eZdZUejejd�Zeed<e	e
d�dd�ZdS)�CAliasObject�r�r�rjr�c	Cs�d|jvr"|j�dd�\|_|_nd|j|_|_t��}|jj|_|j|d<|j|d<|d<d|d<g|_|j	�
d	d�d
|j	vd�}|d
r�|d	dkr�tjd|�
�d
�|��D] }|�t|||jj|jd��q�|gS)Nrprur�r�r{r�Tr�r�r�r�z�Error in C alias declaration. Requested 'noroot' but 'maxdepth' 1. When skipping the root declaration, need 'maxdepth' 0 for infinite or at least 2.r�)r�)r��splitr�r{rr[rsrtr�r�r�r�r�r�Zget_signaturesrr�r�)r}r�r�rnr~r~rr�,s&


��zCAliasObject.runN)r�r�r�rZnonnegative_intr�rjr;r�rrr�r~r~r~rr�&s
�r�csReZdZeeeeeeeefd�dd�Zee	e
e	efd��fdd�Z�Z
S)�	CXRefRole)r��refnode�has_explicit_title�title�targetrTcCsv|j�|j�|s"t�dt|��}|sn|�d�}|dd�dkrn|dd�}|�d�}|dkrn||dd�}||fS)Nr�rsrrur�r�)�
attributes�updater�r+�subr�rr�rfind)r}r�r�r�r�r��dotr~r~r�process_linkOs

zCXRefRole.process_linkr�c	sL|jjdst���S|j�dd�}t||��|jjd�}z|��t���WSt	�yF}z�d|_
z|��}Wn(t	y�t���YWYd}~S0gd�}|jj�
dd�}|dur�|jjdd	}tj|d
�}|�|d|j|�|jjd�r(d
}|d7}|�tj|||�}tj||��d�|ggfWYd}~Sd}~00dS)Nr�r�rr�r)Zxrefr��c-texprzcpp:parent_symbolr�r��classesr�r�zB{}: Pre-v3 C type role ':c:type:`{}`' converted to ':c:expr:`{}`'.z#
The original parsing error was:
{}r�)r�r�r�r�r��replacer�r�rer'rrfr�r�r�r
rPr�r�rr�r�r�)	r}r�r'r�rkr�r�r�r�r�r~rr�cs6

�z
CXRefRole.run)r�r�r�rrr^r�r	r�rrrr�r�r~r~r�rr�Ns�r�csBeZdZedd��fdd�Zeeeeefd�dd�Z	�Z
S)�	CExprRoleN)�asCoderTcs t���|rd|_nd|_dS)Nzc-exprr�)r�r��
class_type)r}r�r�r~rr��s
zCExprRole.__init__r�c
Cs�|j�dd�}t||��|jjd�}z|��}WnVty�}z>tj	d|||��d�t
jd|||jgd�ggfWYd}~Sd}~00|jj
�dd�}|dur�|jjdd	}t
jd|jgd�}|�|d
|j|�|ggfS)Nr�rr�zUnparseable C expression: %r
%sr�r�r�r~rr�)r�r�r�r�r�r�rfr'r�r�rZdesc_inliner�r�r�r�r�)r}r�r'rkZexr�r�r~r~rr��s"
�
�2z
CExprRole.run)r�r�r�r^r�r	rrrr�r�r~r~r�rr��s	r�c@s>eZdZUdZdZeed�dddd�eed�dddd�eed�d	dd
�eed�dd�eed�ddd
�eed
�d
dd
�eed�ddd
�eed�dd�eed
�dd
�eed�dddd�d�
Zeee	e
eee
eeeeeed�
Ze�e�e�edd�e�e�e�e�e�e�edd�edd�d�Zeddddd�id�Zeeeeeeeeeeffffed<edd�dd�Ze ee!j"dd�dd �Z#e$dd!�d"d#�Z%e&eedd$�d%d&�Z'e ee(eee$e)ee*e)e*efd'�d(d)�Z+e ee(eee$e)e*e)d'�d*d+�Z,e ee(ee$e)e&eee)fd,�d-d.�Z-e.eeeeeee/fd/�d0d1�Z0dS)2�CDomainr�r�r�rbr�r��variabler��funcr�r�rWrYrKr�zfunction parameter)
r�rbr�r�rWrYrKr�r�r�)
r�rbr�r�rWrYrKr�r��	namespaceznamespace-pushz
namespace-popr�T)Z
fix_parens)r�F)r�r�rbr�r�rWrYrKr�r�r�ZtexprN)r�objects�initial_datar�cCs�tjr4td|�td�t|jd�d��td�|jd}|�|�tjr|td�t|jd�d��td�td|�dS)	Nz
clear_doc:z	before:rruz	before endz	after:z
	after endzclear_doc end:)rxr�r�r�r�r�)r}r�r�r~r~rr��s


zCDomain.clear_doc)r�r�rtrTcCs2tjr.td|�t|jd�d��td|�dS)Nzprocess_doc:rrzprocess_doc end:)rxr�r�r�r�)r}r�r�rtr~r~r�process_doc�s
zCDomain.process_doc)r�rTcCs|j�|jj�dSr|)r�r�r�r�)r}r�r~r~r�process_field_xref�szCDomain.process_field_xref)r��	otherdatarTcCs�tjr\td�td�t|jd�d��td�td�t|d�d��td�td�|jd�|d||j�|jd	}|d	��D],\}\}}}||vr�||vr�|||f||<q�dS)
Nzmerge_domaindata:z	self:rruz		self endz	other:z
	other endzmerge_domaindata endr�)rxr�r�r�r�r�r��items)r}r�r�Z
ourObjects�fullname�fnr�r{r~r~r�merge_domaindata�s"�
zCDomain.merge_domaindata)r��fromdocname�builderrr�r��contnoderTc
Cs�t|||jd�}z|��}	Wn8tyT}
z tjd||
|d�WYd}
~
dSd}
~
00|�dd�}|jd}|r�|�|�}
|
s�t	d|�t	d|�t	|�
d	��n|}
|
j|	|d
d
d�}|dus�|jdur�dS|j}|	�
�}|j}t||||��||�|jfS)Nr�z$Unparseable C cross-reference: %r
%sr�rr�rr�r�ruTr�)r�r�rer'r�r�r�r�r�r�r�r�r{r�r�r:r�r9)r}r�r�r�rr�r�r�r'r�ryr�r�r�r�r{ZdisplayNamer�r~r~r�_resolve_xref_inner
s>
�



�
��zCDomain._resolve_xref_innerc	Cs|�|||||||�dSrR)r�)r}r�r�r�rr�r�r�r~r~r�resolve_xref/s
��zCDomain.resolve_xref)r�r�r�r�r�r�rTc	
Cs^t���*|�|||d|||�\}}Wd�n1s80Y|rZd|�|�|fgSgS)Nr�zc:)r"Zsuppress_loggingr�Zrole_for_objtype)	r}r�r�r�r�r�r�Zretnoder{r~r~r�resolve_any_xref5s

�&zCDomain.resolve_any_xrefr�c	csv|jd}|��D]^}|jdur"q|��}t|��d�}|���d�}|jj}|j}|j�	�}|||||dfVqdS)Nrr�ru)
r�r�r{r�r�rrr�r9r�r�)	r}r�rzZfullNestedNamer�Zdispnamer9r�rwr~r~r�get_objects?s


zCDomain.get_objects)1r�r�r�r�r�rrZobject_typesr�r�r�r�r�r�r�r�r�r�r�r�rr�r�Zrolesrxr�rr�rr	r�r�rr
rtr�rr�rr�rrrr�r�r�rrQr�r~r~r~rr��s|
����0��%��
r�)�apprTcCsh|�t�|�dgd�|�dgd�|�dtd�|�t�|�ddd�|�ddd�d	d
ddd�S)Nr�r�r�r@r�Fr�TZbuiltinr�)r�Zenv_versionZparallel_read_safeZparallel_write_safe)Z
add_domainr�Zadd_config_value�_macroKeywordsZadd_post_transformr�)r�r~r~r�setupNs

�r�)��re�typingrrrrrrrr	r
rrZdocutilsr
Zdocutils.nodesrrrrZdocutils.parsers.rstrZsphinxrZsphinx.addnodesrZsphinx.applicationrZsphinx.buildersrZsphinx.deprecationrZsphinx.directivesrZsphinx.domainsrrZsphinx.environmentrZ
sphinx.localerrZsphinx.rolesrrZsphinx.transformsr Z!sphinx.transforms.post_transformsr!Zsphinx.utilr"Zsphinx.util.cfamilyr#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5Zsphinx.util.docfieldsr6r7r8Zsphinx.util.docutilsr9Zsphinx.util.nodesr:Zsphinx.util.typingr;Z	getLoggerr�r�r<r�r?r�r+r r1r�r��compile�Sr8rAr�rwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrr,r-r/r0r1r5r@rLrTr^rgrirnrqrur�r�r�rArBr�rCr=r>r?r@ryr�r�rxr�rgrhr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r~r~r~r�<module>s44T
��
�
	/Q

		
3?6;
)!I&/(Z	dF
�
����#o(7 *

Youez - 2016 - github.com/yon3zu
LinuXploit