
    -Ph'              	         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZmZ dd
lmZmZmZ ddlmZmZ ddlmZ ddlmZmZ ddlmZm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 erBddl6m7Z7m8Z8 ddlm9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlmFZF ddlGmHZH ddlImJZJmKZK dd lmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{  e(j|        e}          Z~d`d#Z G d$ d%ee                   Z G d& d'e          Z e0d( ed)          d*d+d,-           e/d. ed/          d0d12           e.d3 ed4          d5d67           e.d8 ed9          d5d:7          gZ G d; d<e          Z G d= d>e          Z G d? d@e          Z G dA dBe          Z G dC dDe          Z G dE dFe          Z G dG dHe          Z G dI dJe2          Z G dK dLe2          Z G dM dNe2          Z G dO dPej<                  Z G dQ dRe$          Z G dS dTee                   Z G dU dVe"          Z G dW dXe3          Z G dY dZe          Zdad^Zd_S )bzThe C language domain.    )annotations)NoneType)TYPE_CHECKING)nodes)
directives)addnodes)ObjectDescription)DomainObjType)ASTDeclarationASTIdentifierASTNestedName)_macro_keywords_max_id)DefinitionParser)Symbol_DuplicateSymbolError)___)XRefRole)SphinxTransform)ReferencesResolver)logging)DefinitionErrorNoOldIdErroranon_identifier_re)FieldGroupedField
TypedField)SphinxDirective
SphinxRole)make_refnode)IteratorSet)AnyClassVar)ElementNodeTextElementsystem_message)pending_xref)Sphinx)Builder)	LookupKey)BuildEnvironment)ExtensionMetadata
OptionSpec)0ASTAlignofExprASTArrayASTAssignmentExprASTBaseASTBinOpExprASTBooleanLiteralASTBracedInitListASTCastExprASTCharLiteralASTDeclaratorASTDeclaratorNameBitFieldASTDeclaratorNameParamASTDeclaratorParenASTDeclaratorPtrASTDeclSpecsASTDeclSpecsSimpleASTEnumASTEnumeratorASTExpressionASTFallbackExprASTFunctionParameterASTIdExpressionASTInitializer
ASTLiteralASTMacroASTMacroParameterASTNumberLiteralASTParametersASTParenExprASTParenExprListASTPostfixArrayASTPostfixCallExprASTPostfixDecASTPostfixExprASTPostfixIncASTPostfixMemberOfPointerASTPostfixOpASTSizeofExprASTSizeofTypeASTStringLiteral	ASTStructASTTrailingTypeSpecASTTrailingTypeSpecFundamentalASTTrailingTypeSpecNameASTTypeASTTypeWithInitASTUnaryOpExprASTUnionreturnr   c                 @    t          t          d          gd          S )NPhonyNameDueToErrorF)rooted)r   r        Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/c/__init__.py_make_phony_error_nameri   i   s!    -(=>>?NNNNrg   c                       e Zd ZU dZej        ej        ej        ej        ej        ej        dZded<   dd	ZddZ	e
d d            Ze
d d            Zd!dZd"dZd#dZd$ fdZd%dZd&dZd&dZ xZS )'CObjectz#Description of a C language object.)no-index-entryzno-contents-entryzno-typesettingnoindexentrynocontentsentrysingle-line-parameter-listClassVar[OptionSpec]option_specastr   rb   Nonec                   |j         dk    sJ |j        }|sJ |j        J |j        }|sJ |j        d S |j        }|d S |j         dk    rd S |j        dk    rd S |j        }|                    |j        ddd          }|d S |j                                        }||_        t          ||j        || j
        j        |                                 d                    d S )N
enumeratorenumFT)	matchSelfrecurseInAnonsearchInSiblings   )parentidentdeclarationdocnameline)
objectTypesymbolr|   r{   r}   directiveTypefind_identifiercloneenumeratorScopedSymbolr   envr~   get_source_info)selfrr   r   parent_symbolparent_decltarget_symbols
decl_clones           rh   _add_enumerator_to_parentz!CObject._add_enumerator_to_parenty   s3   ~---- |'''' F#/ F!V++ F$..F%,))LEPU * 
 
 =F'--//
,2
) ,"H$%%''*	
 	
 	
 	
 	
 	
rg   sigstrsignoder)   c                6   g }t          dt          dz             D ]K}	 |                    |          }|                    |           /# t          $ r |t          k     sJ Y Hw xY w|                                 |d         }|sJ |j                                                                        	                    d          }|| j
        j        j        vr||sJ |d                             |           |dd          D ]3}|s|| j
        j        j        vr|d                             |           4| j
        j                            |           d| j        vr<|                     |          }	| j        d                             d|	|d	d f           d S d S )
Nrz   )versionr   .idsrl   entriessingle )ranger   get_idappendr   reverser   get_full_nested_nameget_display_stringlstripstatedocumentr   note_explicit_targetoptionsget_index_text	indexnode)
r   rr   r   r   r   iid	newest_idname
index_texts
             rh   add_target_and_indexzCObject.add_target_and_index   s    q'A+&& 	# 	#A#ZZZ**

2 # # #7{{{{{{# 	F	z..00CCEELLSQQDJ/333EN!!),,,!""g . . TZ0444EN))"---J44W===4<//,,T22JN9%,,.      0/s   +A

A$#A$c                    t           N)NotImplementedErrorr   s    rh   object_typezCObject.object_type   s    !!rg   c                    | j         S r   )r   r   s    rh   display_object_typezCObject.display_object_type   s    rg   r   c                4    t          d          || j        fz  S )Nz	%s (C %s))r   r   )r   r   s     rh   r   zCObject.get_index_text   s    ~~t'? @@@rg   parserr   c                B    |                     | j        | j                  S r   )parse_declarationr   objtype)r   r   s     rh   parse_definitionzCObject.parse_definition   s    ''(8$,GGGrg   r   dict[str, Any]c                @    |                     |d| j        |           d S )N
lastIsName)describe_signaturer   )r   r   rr   r   s       rh   r   zCObject.describe_signature   s&     	wdhHHHHHrg   
list[Node]c                    | j         }|j        j        ;|j        d         d         }||j        _        |                                |j        d<   d |j        _        t                                                      S Ncroot_symbolc:parent_key)	r   current_documentc_parent_symbol
domaindataget_lookup_keyref_contextc_last_symbolsuperrun)r   r   root	__class__s      rh   r   zCObject.run   si    h/7>#&}5D37C 0.2.A.A.C.CCON+
 .2*ww{{}}rg   c                   | j         j        j        }| j        j        p| j        j        pd}d| j        vot          |          |cxk    odk    nc |d<   t          ||| j                  }	 | 	                    |          }|
                                 nj# t          $ r]}t                              ||           t                      }|                    |          }	|	| j         j        _        t"          |d }~ww xY w	 |                    || j         j        |                                 d                   }	|	j        J |	j        J | j         j        j        |	_        |	j        |	j        j        J |	|	j        _        |	| j         j        _        nw# t.          $ rj}|j        | j         j        _        t3          d          }
t                              |
|j        j        |j        j        | j        ||d	d
           Y d }~nd }~ww xY w|j        dk    r|                     |           t=          | j                  }|                     |||           |S )Nr   ro   multi_line_parameter_listlocationconfigr   rz   )r~   r   zNDuplicate C declaration, also defined at %s:%s.
Declaration is '.. c:%s:: %s'.duplicate_declarationr   )r   typesubtyperu   ) r   r   r   r   c_maximum_signature_line_lengthmaximum_signature_line_lengthr   lenr   r   
assert_endr   loggerwarningri   add_namer   
ValueErroradd_declarationr~   r   siblingAbovesiblingBelowr   r   r   r   r   r   r   dictr   )r   r   r   r   max_lenr   rr   er   r   msgr   s               rh   handle_signaturezCObject.handle_signature   s    $ 9 I K7 {8 	 )< )SG''''a'''' 	+,
 "#LLL
	$''//C 	$ 	$ 	$NN1wN/// *++D"++D11F6<DH%3!#	$	"22TX-D4H4H4J4J14M 3  F &...&..."&(";"IF".*7???39#06<DH%33$ 	 	 	 78hDH%31 C NN ( ,  	 	 	 	 	 	 	 		& >\))**3/// t|$$g666
s3   -)B 
C>!AC99C>BF 
H!A HHc                    | j         j        j        }|sJ | j         j        j        | _        | j         j        d         | _        || j         j        _        |                                | j         j        d<   d S Nr   )r   r   r   r   oldParentSymbolr   oldParentKeyr   )r   last_symbols     rh   before_contentzCObject.before_content,  sk    "h7E#x8H'+x';N'K4?!1/:/I/I/K/K^,,,rg   c                Z    | j         | j        j        _        | j        | j        j        d<   d S r   )r   r   r   r   r   r   r   s    rh   after_contentzCObject.after_content4  s*    484H!1/3/@^,,,rg   )rr   r   rb   rs   )rr   r   r   r   r   r)   rb   rs   rb   r   )r   r   rb   r   )r   r   rb   r   )r   r)   rr   r   r   r   rb   rs   rb   r   )r   r   r   r)   rb   r   )rb   rs   )__name__
__module____qualname____doc__r   flagrq   __annotations__r   r   propertyr   r   r   r   r   r   r   r   r   __classcell__r   s   @rh   rk   rk   m   s        -- %/'_$/"%?&0o) )K    (
 (
 (
 (
T% % % %N " " " X"       X A A A AH H H HI I I I
     @ @ @ @DL L L LA A A A A A A Arg   rk   c                  *    e Zd ZdZedd            ZdS )CMemberObjectmemberrb   r   c                &    | j         dv sJ | j         S )N>   varr   )r   r   s    rh   r   z!CMemberObject.display_object_type<  s      |00000|rg   Nr   )r   r   r   r   r   r   rf   rg   rh   r   r   9  s7        K   X  rg   r   	parameter
Parameters)paramr   argargumentexpr)r   )labelnamestyperolename	typenamesretvalzReturn values)retvalsr  T)r  r  can_collapsereturnvalueReturnsF)returnsrb   )r  has_argr  
returntypezReturn type)rtypec                  :    e Zd ZdZe                                ZdS )CFunctionObjectfunctionNr   r   r   r   _function_doc_field_typescopydoc_field_typesrf   rg   rh   r  r  `  s$        K/4466OOOrg   r  c                  :    e Zd ZdZe                                ZdS )CMacroObjectmacroNr  rf   rg   rh   r  r  f  s$        K/4466OOOrg   r  c                      e Zd ZdZdS )CStructObjectstructNr   r   r   r   rf   rg   rh   r  r  l  s        KKKrg   r  c                      e Zd ZdZdS )CUnionObjectunionNr  rf   rg   rh   r   r   p  s        KKKrg   r   c                      e Zd ZdZdS )CEnumObjectrv   Nr  rf   rg   rh   r#  r#  t          KKKrg   r#  c                      e Zd ZdZdS )CEnumeratorObjectru   Nr  rf   rg   rh   r&  r&  x  s        KKKrg   r&  c                      e Zd ZdZdS )CTypeObjectr   Nr  rf   rg   rh   r(  r(  |  r$  rg   r(  c                  :    e Zd ZU dZdZdZdZdZi Zde	d<   dd
Z
dS )CNamespaceObjectz]This directive is just to tell Sphinx that we're documenting stuff in
    namespace foo.
    Frz   r   Trp   rq   rb   r   c                   | j         j        d         d         }| j        d                                         dv r|}g }nt	          | j        d         |                                 | j                  }	 |                                }|                                 nS# t          $ rF}t                              ||                                            t                      }Y d }~nd }~ww xY w|                    |          }|g}|| j         j        _        || j         j        _        |                                | j         j        d<   g S )Nr   r   r      0NULLnullptrr   r   r   )r   r   	argumentsstripr   get_locationr   parse_namespace_objectr   r   r   r   ri   r   r   r   c_namespace_stackr   r   )r   r   r   stackr   r   r   s          rh   r   zCNamespaceObject.run  sH   h)#.}=>!""$$(@@@ F"$EE%q!D,=,=,?,?  F04466!!####" 0 0 0q4+<+<+>+>???-//0 !))$//FHE4:!16;!3/5/D/D/F/F^,	s   4(B 
C-'<C((C-Nr   )r   r   r   r   has_contentrequired_argumentsoptional_argumentsfinal_argument_whitespacerq   r   r   rf   rg   rh   r*  r*    s^           K $(*K****     rg   r*  c                  6    e Zd ZU dZdZdZdZi Zded<   dd	Z	d
S )CNamespacePushObjectFrz   r   Trp   rq   rb   r   c                   | j         d                                         dv rg S t          | j         d         |                                 | j                  }	 |                                }|                                 nS# t          $ rF}t          	                    ||                                            t                      }Y d }~nd }~ww xY w| j        j        j        }|s| j        j        d         d         }|                    |          }| j        j        j                            |           || j        j        _        |                                | j        j        d<   g S )Nr   r,  r   r   r   r   r   )r0  r1  r   r2  r   r3  r   r   r   r   ri   r   r   r   r   r   r4  r   r   r   )r   r   r   r   
old_parentr   s         rh   r   zCNamespacePushObject.run  s_   >!""$$(@@@I!N1(9(9(;(;DK
 
 
	,0022D 	, 	, 	,NN1t'8'8':':N;;;)++DDDDDD	, X.>
 	A,S1-@J$$T**!3::6BBB4:!1/5/D/D/F/F^,	s   (B 
C<CCNr   
r   r   r   r6  r7  r8  r9  rq   r   r   rf   rg   rh   r;  r;    sR         K $(*K****     rg   r;  c                  6    e Zd ZU dZdZdZdZi Zded<   d
dZ	d	S )CNamespacePopObjectFr   Trp   rq   rb   r   c                   | j         j        j        }t          |          dk    r/t                              d|                                            n|                                 t          |          dk    r	|d         }n| j         j        d         d         }|| j         j        _	        |
                                | j         j        d<   g S )Nr   z;C namespace pop on empty stack. Defaulting to global scope.r   r   r   r   )r   r   r4  r   r   r   r2  popr   r   r   r   )r   r5  r   s      rh   r   zCNamespacePopObject.run  s    );u::??NNM**,,     
 IIKKKu::>>2YFFX(-m<F4:!1/5/D/D/F/F^,	rg   Nr   r>  rf   rg   rh   r@  r@    sR         K $(*K****     rg   r@  c                  .     e Zd Z	 	 dd fdZddZ xZS )	AliasNodeNr   r   aliasOptionsdict[str, bool]r   r%   r   BuildEnvironment | None	parentKeyLookupKey | Nonerb   rs   c                B   t                                                       || _        || _        || _        |[|j        j        ;|j        d         d         }||j        _        |                                |j	        d<   |j	        d         | _
        d S |J || _
        d S r   )r   __init__r   rF  r   r   r   r   r   r   rI  )r   r   rF  r   r   rI  r   r   s          rh   rL  zAliasNode.__init__  s     	( ?#3;~c*=97;$4262E2E2G2G/ _^<DNNN(((&DNNNrg   c                ^    |                      | j        | j        | j        d | j                  S )N)r   rI  )r   r   rF  r   rI  r   s    rh   r  zAliasNode.copy  s5    ~~HMn  
 
 	
rg   NN)r   r   rF  rG  r   r%   r   rH  rI  rJ  rb   rs   )rb   rE  )r   r   r   rL  r  r   r   s   @rh   rE  rE    s^         (,&*' ' ' ' ' ' ',
 
 
 
 
 
 
 
rg   rE  c                  2    e Zd Zej        dz
  ZddZddZdS )AliasTransformrz   r   r   maxdepthint	skip_thisboolalias_optionsrG  render_optionsr   r%   rb   r   c           	     d   |dk    rd}n|dk    rd}n|dz  }d}g }|sGt          j        dd          }	 |j        |	           |j                            |	d| j        |           |r|r|}
nXt          j                    }t          j                    }|                    |           ||_        d|d<   d	x|d
<   |d<   d|d<   |}
|j	        D ]:}|j        
| 
                    ||d|||          }|
                    |           ;|s(t          |j	                  dk    r |j        |           |S )Nr   Trz   Fr   markNamer   domainaliasr   desctypeno-indexrQ  rS  rU  rV  r   )r   desc_signaturer   r}   r   r   desc_contentdescr   children_render_symbolextendr   )r   r   rQ  rS  rU  rV  r   recurser   r   child_containercontentr`  s_childchild_nodess                  rh   rb  zAliasTransform._render_symbol  s    q==GG]]GGMHG 	-b"55GEL!!!M,,TX~    	& '>C"/11}t$$$ (!$X5<<Y$z"2#'Z "&: 4 4&."11%#"/#1% 2    &&{3333 &T]!3!3q!8!8W%%%rg   kwargsrs   c           	     :   | j                             t                    D ]}|j        }|j        }	 t          ||| j                  }|                                }n5# t          $ r(}t          
                    ||           d }Y d }~nd }~ww xY w|Wt          j        |d          }|                                 |t          j        ||          z  }|                    |           | j        j        j        j        d         }	|	                    |          }
|
sct                              d|           t                              d|           t                              |	                    d                     |
sJ |
                    |dd	d	
          }|t          j        |d          }|                    |           |                                 |t          j        ||          z  }t          
                    d||           |                    |           |j        d         s|j        t          j        |d          }|                    |           |                                 |t          j        ||          z  }t          
                    d||           |                    |           |                     ||j        d         |j        d         |j        i |j                   }|                    |           d S )Nr   r   r   r   
Target: %sParentKey: %srz   anyTrw   rx   z,Could not find C declaration for alias '%s'.norootzACan not render C declaration for alias '%s'. No such declaration.rQ  r]  )r   findallrE  r   rI  r   r   parse_xref_objectr   r   r   r   r^  clear	desc_namereplace_selfr   domainsc_domaindatadirect_lookupdebugdumpfind_declarationr   rF  r}   rb  )r   ri  noder   
parent_keyr   r   r   r   r   r   r   r   s                rh   applyzAliasTransform.apply4  s.   M)))44 A	% A	%D(CJ)#T[QQQ//11"   q4000 |"1#r::8-c3777!!'***"&("2";"@"OK+6+D+DZ+P+PM  2\3///_j999[--a00111    ..et4 /  A y"1#r::G$$$8-c3777BDSW     !!'*** $X. 1=3H"1#r::G$$$8-c3777W!    
 !!'***''*:6+H5"/! (  E e$$$$CA	% A	%s   +A
B(BBN)r   r   rQ  rR  rS  rT  rU  rG  rV  rG  r   r%   rb   r   )ri  r%   rb   rs   )r   r   r   r   default_priorityrb  r~  rf   rg   rh   rP  rP    sQ        ):Q>6 6 6 6pB% B% B% B% B% B%rg   rP  c                  @    e Zd ZU ej        ej        dZded<   ddZdS )	CAliasObjectrQ  ro  rp   rq   rb   r   c           	        d| j         v r)| j                             dd          \  | _        | _        nd| j         c| _        | _        t	          j                    }| j        j        |_        | j        |d<   | j        x|d<   |d<   d|d<   g | _        | j	        
                    d	d          d
| j	        v d}|d
         r:|d	         dk    r.t                              d|                                            |                                 D ]7}|                    t!          ||| j        j        | j                             8|gS )zOn purpose this doesn't call the ObjectDescription version, but is based on it.
        Each alias signature may expand into multiple real signatures if 'noroot'.
        The code is therefore based on the ObjectDescription version.
        :rz   r   rY  r   r[  Tr\  rQ  ro  r  zError in C alias declaration. Requested 'noroot' but 'maxdepth' 1. When skipping the root declaration, need 'maxdepth' 0 for infinite or at least 2.r   )r   )r   splitrY  r   r   r`  r   r   r  r   getr   r   r2  get_signaturesr   rE  r   )r   r|  rU  r   s       rh   r   zCAliasObject.run  sb   
 $)(,	Q(?(?%DK(*DI%DK}
+X-1\9Y$z*Z "
((Q77$,.
 
 " 	}Z'@A'E'ENNA **,,     &&(( 	 	CKK#}dj.AtxPPP    vrg   Nr   )	r   r   r   r   nonnegative_intr   rq   r   r   rf   rg   rh   r  r  y  sU         ./) )K    
" " " " " "rg   r  c                      e Zd ZddZdS )	CXRefRoler   r/   refnoder'   has_explicit_titlerT  titler   targetrb   tuple[str, str]c                >   |j                             |j                   |s"t          j        dt          |                    }|sU|                    d          }|dd         dk    r2|dd          }|                    d          }|dk    r||dz   d          }||fS )Nz[anonymous]~r   rz   r   rB  )
attributesupdater   r   subr   r   rfind)r   r   r  r  r  r  dots          rh   process_linkzCXRefRole.process_link  s     	!!#/222! 	F '*=#e**EEE! 	-]]3''F QqSzS  abb	kk#&&"99!#')),Ef}rg   N)r   r/   r  r'   r  rT  r  r   r  r   rb   r  )r   r   r   r  rf   rg   rh   r  r    s(             rg   r  c                  (     e Zd Zd fdZd	dZ xZS )
	CExprRoleasCoderT  rb   rs   c                l    t                                                       |r	d| _        d S d| _        d S )Nzc-exprzc-texpr)r   rL  
class_type)r   r  r   s     rh   rL  zCExprRole.__init__  s9     	(&DOOO (DOOOrg   'tuple[list[Node], list[system_message]]c                \   | j                             dd          }t          ||                                 | j                  }	 |                                }nj# t          $ r]}t                              d|||                                            t          j
        d||| j        g          }|gg fcY d }~S d }~ww xY w| j        j        j        }|| j        j        d         d         }t          j
        d| j        g          }|                    |d	| j        |           |gg fS )
N
 r   zUnparseable C expression: %r
%sr   r   )classesr   markType)textreplacer   r2  r   parse_expressionr   r   r   r   desc_inliner  r   r   r   r   r   )r   r  r   rr   exr|  r   r   s           rh   r   zCExprRole.run  sT   y  s++!4,,..t{
 
 
	))++CC 		 		 		NN2**,,	     'T4$/ARSSSD62:		 1A  H/4]CM &sT_4EFFFw
DHmLLLy"}s   A 
C%AB=7C=C)r  rT  rb   rs   )rb   r  )r   r   r   rL  r   r   r   s   @rh   r  r    sQ        ( ( ( ( ( (       rg   r  c                  R   e Zd ZU dZdZdZ e ed          dddd           e ed          dddd           e ed	          d
dd           e ed          dd           e ed          ddd           e ed          ddd           e ed          ddd           e ed          dd           e ed          dd           e ed          dddd          d
Ze	e	e
eeeeeeeeeedZ e             e             e             ed           e             e             e             e             e             e             ed           ed          dZ eddddd          i dZded<   d?d!Zd@d&ZdAd)ZdBd.ZdCd8Z dDd:Z!dEd<Z"dFd>Z#dS )GCDomainzC language domain.r   Cr   r   rw  
identifiervariabler  funcr   r  r  r!  rv   ru   zfunction parameter)
r   r   r  r  r  r!  rv   ru   r   functionParam)r   r   r  r  r  r!  rv   ru   r   	namespaceznamespace-pushznamespace-poprZ  T)
fix_parens)r  F)r   rw  r   r  r  r  r!  rv   ru   r   r  texprN)r   objectsz3dict[str, Symbol | dict[str, tuple[str, str, str]]]initial_datar~   r   rb   rs   c                   t           j        rt                              d|           t                              d           t                              | j        d                             d                     t                              d           | j        d         }|                    |           t           j        rt                              d           t                              | j        d                             d                     t                              d           t                              d|           d S d S )	Nzclear_doc: %sz	before:r   rz   z	before endz	after:z
	after endzclear_doc end: %s)r   debug_show_treer   ry  rw  rz  	clear_doc)r   r~   r   s      rh   r  zCDomain.clear_doc   s   ! 	)LL'222LL%%%LL=166q99:::LL(((i.g&&&! 	7LL$$$LL=166q99:::LL'''LL,g66666		7 	7rg   r   r/   r   nodes.documentc                    t           j        rpt                              d|           t                              | j        d                             d                     t                              d|           d S d S )Nzprocess_doc: %sr   r   zprocess_doc end: %s)r   r  r   ry  rw  rz  )r   r   r~   r   s       rh   process_doczCDomain.process_doc0  sp     ! 	9LL*G444LL=166q99:::LL.88888	9 	9rg   pnoder+   c                N    |j                             | j        j                   d S r   )r  r  r   r   )r   r  s     rh   process_field_xrefzCDomain.process_field_xref8  s$     455555rg   docnamesSet[str]	otherdatar   c                
   t           j        rt                              d           t                              d           t                              | j        d                             d                     t                              d           t                              d           t                              |d                             d                     t                              d           t                              d           | j        d                             |d         || j                   | j        d	         }|d	                                         D ]\  }\  }}}||v r||vr|||f||<   d S )
Nzmerge_domaindata:z	self:r   rz   z		self endz	other:z
	other endzmerge_domaindata endr  )	r   r  r   ry  rw  rz  
merge_withr   items)r   r  r  our_objectsfullnamefnid_r   s           rh   merge_domaindatazCDomain.merge_domaindata;  s^   ! 	1LL,---LL###LL=166q99:::LL&&&LL$$$LL=166q99:::LL'''LL/000	- ++m$h	
 	
 	
 i	*,5i,@,F,F,H,H 	? 	?(H(r3X~~;..-/g,>K)	? 	?rg   fromdocnamebuilderr-   typr  r|  contnoder'   /tuple[nodes.reference, str] | tuple[None, None]c                   t          |||j                  }	 |                                }	n6# t          $ r)}
t                              d||
|           Y d }
~
dS d }
~
ww xY w|                    dd           }| j        d         }|r|                    |          }|sct          	                    d|           t          	                    d|           t          	                    |
                    d	                     |sJ n|}|                    |	|d
d
          }||j        dS |j        }|	                                }|j        }|sJ t          ||||                                ||          |j        fS )Nr   z$Unparseable C cross-reference: %r
%sr   rN  r   r   rk  rl  rz   Trn  )r   r   rq  r   r   r   r  rw  rx  ry  rz  r{  r}   r   r~   r"   get_newest_idr   )r   r   r  r  r  r  r|  r  r   r   r   r}  r   r   r   r}   display_namer~   s                     rh   _resolve_xref_innerzCDomain._resolve_xref_innerP  s    "&4
KKK	++--DD 	 	 	NN7T     :::::		
 (,xx'E'E
i. 	($/$=$=j$I$IM  2\6222_j999[--a00111     'M**#T + 
 
 9-: m..00)%%''
 
 !" 	"s   . 
A!AA!nodes.reference | Nonec           	     D    |                      |||||||          d         S )Nr   )r  )r   r   r  r  r  r  r|  r  s           rh   resolve_xrefzCDomain.resolve_xref  s3     ''gsFD(
 

 	rg   !list[tuple[str, nodes.reference]]c           
         t          j                    5  |                     |||d|||          \  }}d d d            n# 1 swxY w Y   |rd|                     |          z   |fgS g S )Nrm  zc:)r   suppress_loggingr  role_for_objtype)	r   r   r  r  r  r|  r  retnoder   s	            rh   resolve_any_xrefzCDomain.resolve_any_xref  s     %'' 	 	#77['5&$   GW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	FD11':::GDEE	s   ?AA-Iterator[tuple[str, str, str, str, str, int]]c              #    K   | j         d         }|                                D ]}|j        
|j        sJ |                                }t          |                              d          }|                                                    d          }|j        j        }|j        }|j        	                                }|||||dfV  d S )Nr   r   rz   )
rw  get_all_symbolsr}   r~   r   r   r   r   r   r  )	r   r   r   full_nested_namer   dispnamer   r~   r   s	            rh   get_objectszCDomain.get_objects  s      i.!1133 
	E 
	EF!)>!!!%::<<'((//44D'::<<CCCHHH ,7KnG*88::I+w	1DDDDD
	E 
	Erg   )r~   r   rb   rs   )r   r/   r~   r   r   r  rb   rs   )r  r+   rb   rs   )r  r  r  r   rb   rs   )r   r/   r  r   r  r-   r  r   r  r   r|  r+   r  r'   rb   r  )r   r/   r  r   r  r-   r  r   r  r   r|  r+   r  r'   rb   r  )r   r/   r  r   r  r-   r  r   r|  r+   r  r'   rb   r  )rb   r  )$r   r   r   r   r   r  r   r   object_typesr   r  r  r  r   r#  r&  r(  r*  r;  r@  r  r   r  r  rolesr   r  r   r  r  r  r  r  r  r  r  rf   rg   rh   r  r    s        DE '!!H++uhMMwqq}}eXv|LLGAAjMM6<HH7Wl;;'!!H++xvFF7WlFCC&		6<@@gaaoo|\JJ&		<88 A"##\5(F
 
 L$  #'%., J$ )++	y{{	T***)++	ikk		&&&%((( E vdD$d;;I IL    
7 7 7 7 9 9 9 96 6 6 6? ? ? ?*1" 1" 1" 1"f      "E E E E E Erg   r  appr,   r0   c                *   |                      t                     |                     dg dt          t          t
          h                     |                     dg dt          t          t
          h                     |                     dt          dt          t          t          t          t
          h                     |                     dd dt          t          t          h                     | 
                    t                     ddd	d	d
S )Nc_id_attributesr   )typesc_paren_attributesc_extra_keywordsr   builtin   T)r   env_versionparallel_read_safeparallel_write_safe)
add_domainr  add_config_value	frozensetlisttupler   setrR  r   add_post_transformrP  )r  s    rh   setupr    s   NN7*BYe}=U=UVVVb%y$/G/G     D#u566	     )h((	     >*** "#	  rg   N)rb   r   )r  r,   rb   r0   )r   
__future__r   r  r   typingr   docutilsr   docutils.parsers.rstr   sphinxr   sphinx.directivesr	   sphinx.domainsr
   r   sphinx.domains.c._astr   r   r   sphinx.domains.c._idsr   r   sphinx.domains.c._parserr   sphinx.domains.c._symbolr   r   sphinx.localer   r   sphinx.rolesr   sphinx.transformsr   !sphinx.transforms.post_transformsr   sphinx.utilr   sphinx.util.cfamilyr   r   r   sphinx.util.docfieldsr   r   r   sphinx.util.docutilsr    r!   sphinx.util.nodesr"   collections.abcr#   r$   r%   r&   docutils.nodesr'   r(   r)   r*   sphinx.addnodesr+   sphinx.applicationr,   sphinx.buildersr-   r.   sphinx.environmentr/   sphinx.util.typingr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   	getLoggerr   r   ri   rk   r   r  r  r  r  r   r#  r&  r(  r*  r;  r@  rE  rP  r   r  r  r  r  r  rf   rg   rh   <module>r     s     " " " " " "                         + + + + + +       / / / / / / * * * * * * * *         
 ; : : : : : : : 5 5 5 5 5 5 B B B B B B B B         ! ! ! ! ! ! - - - - - - @ @ @ @ @ @               
 B A A A A A A A A A < < < < < < < < * * * * * * A--------$$$$$$$$IIIIIIIIIIII,,,,,,))))))''''''222222333333@@@@@@@@1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1f 
	8	$	$O O O OIA IA IA IA IA/ IA IA IAX    G    Jaoo7   La  #	   
Ea	ll#	   
Ea	  ) :7 7 7 7 7g 7 7 77 7 7 7 77 7 7 7    G       7       '              '          D    ?   :    /   2
 
 
 
 
 
 
 
B}% }% }% }% }%_ }% }% }%@( ( ( ( ($S) ( ( (V       8# # # # #
 # # #LHE HE HE HE HEf HE HE HEV     rg   