
    -Ph                    4   d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ er*d dlmZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d d	lmZ  ej        e          Z G d
 de          Z G d d          Z  G d d          Z!ddZ" G d d          Z#dS )    )annotations)TYPE_CHECKING)ASTDeclarationASTNestedNameASTNestedNameElement)__)logging)CallableIterableIteratorSequence)AnyNoReturn)ASTIdentifierASTOperatorASTTemplateArgsASTTemplateDeclarationPrefixASTTemplateIntroductionASTTemplateParams)BuildEnvironmentc                      e Zd ZddZdd	Zd
S )_DuplicateSymbolErrorsymbolSymboldeclarationr   returnNonec                2    |sJ |sJ || _         || _        d S N)r   r   )selfr   r   s      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/domains/cpp/_symbol.py__init__z_DuplicateSymbolError.__init__   s,    &    strc                <    d| j                             d          z  S )Nz'Internal C++ duplicate symbol error:
%sr   )r   dumpr    s    r!   __str__z_DuplicateSymbolError.__str__%   s    9DK<L<LQ<O<OOOr#   N)r   r   r   r   r   r   r   r$   )__name__
__module____qualname__r"   r(    r#   r!   r   r      sB        ' ' ' 'P P P P P Pr#   r   c                      e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ddZedd            Zedd            Zedd            Z	edd            Z
dS )SymbolLookupResultsymbolsparent_symbolident_or_optemplate_paramstemplate_argsIterable[Symbol]r1   r   r2   ASTIdentifier | ASTOperatorr3   r   r4   r   r5   r   r   c                L    || _         || _        || _        || _        || _        d S r   r0   )r    r1   r2   r3   r4   r5   s         r!   r"   zSymbolLookupResult.__init__8   s1     *&.*r#   c                    | j         S r   )r2   r'   s    r!   parentSymbolzSymbolLookupResult.parentSymbolF       !!r#   c                    | j         S r   )r3   r'   s    r!   	identOrOpzSymbolLookupResult.identOrOpJ   s    r#   c                    | j         S r   )r4   r'   s    r!   templateParamsz!SymbolLookupResult.templateParamsN   s    ##r#   c                    | j         S r   )r5   r'   s    r!   templateArgszSymbolLookupResult.templateArgsR   r;   r#   N)r1   r6   r2   r   r3   r7   r4   r   r5   r   r   r   r   r   )r   r7   )r   r   )r   r   )r*   r+   r,   	__slots____annotations__r"   propertyr:   r=   r?   rA   r-   r#   r!   r/   r/   )   s         I ,,,,""""+ + + + " " " X"       X  $ $ $ X$ " " " X" " "r#   r/   c                  6    e Zd ZU dZded<   ddZddZdd	Zd
S )	LookupKeydata^Sequence[tuple[ASTNestedNameElement, ASTTemplateParams | ASTTemplateIntroduction, str | None]]rI   r   r   c                   || _         d S r   rH   )r    rI   s     r!   r"   zLookupKey.__init__b   s     			r#   r$   c                    d| j         dS )Nz
LookupKey()rH   r'   s    r!   __repr__zLookupKey.__repr__o   s    *DI****r#   c                V    d                     d | j        D                       }d| dS )N, c              3  0   K   | ]\  }}}d | d| dV  dS )(rP   rM   Nr-   ).0ident_id_s       r!   	<genexpr>z$LookupKey.__str__.<locals>.<genexpr>s   s<      MM-%C-e--s---MMMMMMr#   [])joinrI   )r    inners     r!   r(   zLookupKey.__str__r   s2    		MM49MMMMM5|||r#   N)rI   rJ   r   r   r)   )r*   r+   r,   rC   rD   r"   rN   r(   r-   r#   r!   rG   rG   W   sk         I      + + + +     r#   rG   r4   +ASTTemplateParams | ASTTemplateIntroductionr5   r   r   boolc                   t          | j                  t          |j                  k    rdS t          | j                  dk    rdS t          t          | j                            D ]y}| j        |         }|j        |         }t	          |j                  }t	          |          }|                    d          }|j        |k    r dS |r
|d d         n|}||k    r dS zdS )NTr   z...F)lenparamsargsranger$   nameendswithisPack)	r4   r5   iparamarg
param_namearg_txtis_arg_pack_expansionarg_names	            r!   _is_specializationrn   w   s     ?!""c-*<&=&===t
?!""a''t3-..//  &q) #__
c(( ' 0 0 7 7<00044#8E73B3<<g!!44 "5r#   c                  ,    e Zd ZdZdZdZdZdbdZdcd	Ze	ddd            Z
dedZdf fdZdgdZdhd Zdid#Zded$Zded%Zdjd&Zdkd(Zedld*            Zdmd,Zdnd.Zdod:Zdpd=ZdqdFZdrdGZdsdMZ	 dtdudRZdvdSZdwdWZdxdXZ dyd]Z!dzd^Z"d{d`Z#d{daZ$ xZ%S )|r   r   z  Fr   r   c                    t           r   )AssertionErrorr'   s    r!   __copy__zSymbol.__copy__   s    r#   memor   c           	     H    | j         rt          t          d d d d d d d           S r   )parentrq   r   )r    rs   s     r!   __deepcopy__zSymbol.__deepcopy__   s,    ; 	!  dD$dD$???r#   rb   r   c                     t                               t          j        t          j        z  d           t          j        |   d S )N end)loggerdebugr   debug_indent_stringdebug_indent)rb   s    r!   debug_printzSymbol.debug_print   s6    V/&2EE2NNNdr#   c                    | j         s/| j        rJ | j        rJ | j        rJ | j        rJ | j        rJ d S | j        r	| j        sJ d S d S r   )ru   r=   r?   rA   r   docnamer'   s    r!   _assert_invariantszSymbol._assert_invariants   s    { 		$~%%%****((((''''|##### $|###$ $##r#   keyr$   valuec                b    |dk    rt           t                                          ||          S )Nchildren)rq   super__setattr__)r    r   r   	__class__s      r!   r   zSymbol.__setattr__   s.    *  ww""3...r#   ru   Symbol | Noner=   "ASTIdentifier | ASTOperator | Noner?   2ASTTemplateParams | ASTTemplateIntroduction | NonerA   r   ASTDeclaration | Noner   
str | Noneline
int | Nonec                   || _         d | _        d | _        || _        |t	          ||          sd }|| _        || _        || _        || _        || _	        d| _
        |                                  g | _        g | _        | j         r| j         j                            |            | j        r| | j        _        |                                  d S )NF)ru   siblingAbovesiblingBelowr=   rn   r?   rA   r   r   r   isRedeclarationr   	_children_anon_childrenappendr   !_add_template_and_function_params)r    ru   r=   r?   rA   r   r   r   s           r!   r"   zSymbol.__init__   s     +/+/" #,>L-
 -
#  L,(&	$!!! (*,.; 	/K!((... 	+&*D# 	..00000r#   c                6    d|                      d          dS )Nz<Symbol r   )indent>)	to_stringr'   s    r!   rN   zSymbol.__repr__   s!    7$...227777r#   r   intc                   |                                   | j        J | j        J | j        J |J |J |J || _        | | j        _        || _        || _        |                                   |                                  d S r   )r   r   r   r   r   r   )r    r   r   r   s       r!   _fill_emptyzSymbol._fill_empty   s    !!!'''|###y   &&&"""&"&	!!!..00000r#   c                    t           j        r/t           xj        dz  c_        t                               d           | j        r| j        j        D ]}|                                s| j        rt          d|          }nd }t          |                                d           }t          |gdgd          }|                     |g || j        | j                   | j        | j        j        }| j        j        D ]p}|j        
|j        j        }|t          d|          }|j        rJ t%          |j                  dk    sJ |                     |g || j        | j                   qt           j        rt           xj        dz  c_        d S d S )N   z"_add_template_and_function_params:templateParam)
objectTyper   FrootedfunctionParam)r   debug_lookupr~   r   r?   ra   get_identifierr   r   r   r   _add_symbolsr   r   function_paramsri   rd   r   r`   names)r    tpdeclnnennfps         r!   r   z(Symbol._add_template_and_function_params   s    	E1$CDDD
  	I)0 
I 
I((** #  )_RTUUUDDD*2+<+<+>+>EE"C55'%@@@!!"b$diHHHH ( 0<&6 
I 
I6>V[:%bQQQ9$$$28}}))))!!"b$diHHHH 	%1$	% 	%r#   c                    | j         d S | | j         j        v sJ | j         j                            |            d | _         d S r   )ru   r   remover'   s    r!   r   zSymbol.remove  sI    ;Ft{,,,,,$$T***r#   c                J   g }| j         D ]}|                    |           |j        r^|j        |k    rSd |_        d |_        d |_        |j        |j        |j        _        |j        |j        |j        _        d |_        d |_        |                    |           || _         d S r   )r   	clear_docr   r   r   r   r   r   )r    r   new_childrens_childs       r!   r   zSymbol.clear_doc&  s    %'~ 	) 	)Gg&&&" 	,w''A'A&*#"&#'38?8LG(5'38?8LG(5'+$'+$((((%r#   Iterator[Any]c              #  Z   K   | V  | j         D ]}|                                E d {V  d S r   )r   get_all_symbols)r    r   s     r!   r   zSymbol.get_all_symbols7  sQ      


~ 	1 	1G..0000000000	1 	1r#   Iterator[Symbol]c              #  t   K   | j         D ]-}|V  |j                                        s |j        E d {V  .d S r   )r   r=   is_anonchildren_recurse_anon)r    cs     r!   r   zSymbol.children_recurse_anon<  sa       	/ 	/AGGG;&&(( .........	/ 	/r#   rG   c                    g }| }|j         r#|                    |           |j         }|j         #d t          |          D             }t          |          S )Nc                    g | ]D}t          |j        |j                  |j        |j        d n|j                                        fES r   )r   r=   rA   r?   r   get_newest_idrS   ss     r!   
<listcomp>z)Symbol.get_lookup_key.<locals>.<listcomp>O  s_     
 
 
 	 %Q[!.AA -1=3N3N3P3P
 
 
r#   )ru   r   reversedrG   )r    r1   r   r   s       r!   get_lookup_keyzSymbol.get_lookup_keyE  ss    
 h 	NN1A h 	
 
 g&&
 
 
 ~~r#   r   c                @   g }| }|j         r#|                    |           |j         }|j         #|                                 g }g }|D ]D}|                    t          |j        |j                             |                    d           Et          ||d          S )NFr   )ru   r   reverser   r=   rA   r   )r    r1   r   r   	templatess        r!   get_full_nested_namezSymbol.get_full_nested_nameY  s    h 	NN1A h 	 		 	$ 	$ALL-ak1>JJKKKU####UIe<<<<r#   r3   r7   r4   r\   r5   ASTTemplateArgs | Nonetemplate_shorthandr]   
match_selfrecurse_in_anoncorrect_primary_template_argsc           
         t           j        rt                               d           |                     |||||||d          }	 t	          |          S # t
          $ r Y d S w xY w)Nz_find_first_named_symbol ->F)search_in_siblings)r   r   r   _find_named_symbolsnextStopIteration)	r    r3   r4   r5   r   r   r   r   ress	            r!   _find_first_named_symbolzSymbol._find_first_named_symbolg  s      	><===&&)$ ' 	
 	
	99 	 	 	44	s   A 
A"!A"r   r   c	              #     K   t           j        rrt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d           t                                                   t           j        dz             d           t                               d           t                               d           t                               d           t                               d	           t                               d
           t                               d           t                               d|           t                               d|           |rt                    sd dfd}	d fd}
 |
            D ]}t           j        rVt                               d           t                              |                    t           j        dz             d            |	|          rut           j        rDt           xj        dz  c_        t                               d           t           xj        dz  c_        |V  t           j        rt           xj        dz  c_        t           j        rt           xj        dz  c_        d S d S )Nr   z_find_named_symbols:self:rx   ry   zident_or_op:                  ztemplate_params:              ztemplate_args:                ztemplate_shorthand:           zmatch_self:                   zrecurse_in_anon:              zcorrect_primary_template_args:zsearch_in_siblings:           r   r   r   r]   c                    | j         k    rdS | j        d u d u k    rdS sdS r't          | j                  t                    k    rdS | j        d u d u k    rdS | j        r't          | j                  t                    k    rdS dS )NFT)r=   r?   r$   rA   )r   r3   r5   r4   r   s    r!   matchesz+Symbol._find_named_symbols.<locals>.matches  s    {k))u D(o.EFF". 5) ! 5 !q'((C,@,@@@ 5$&MT,ABBu~ !q~&&#m*<*<<< 54r#   r   c               3    K   } t           j        rVt                               d           t                              |                     t           j        dz             d           	 r| V  r| j        E d {V  n| j        E d {V  | j	        d S | j	        } t           j        rVt                               d           t                              |                     t           j        dz             d           )Nzsearching in self:r   rx   ry   Tzsearching in sibling:)
r   r   r   r{   r|   r   r~   r   r   r   )r   r   r   r    s    r!   
candidatesz.Symbol._find_named_symbols.<locals>.candidates  s     A" K""#7888Q[[)<q)@AArJJJO GGG" + 666666666 {*******>)EN& O&&'>???LLV-@1-D!E!E2LNNNOr#   
candidate:r         )r   r   r   r]   r   r   )r   r   r~   r   r{   r|   r   rn   )r    r3   r4   r5   r   r   r   r   r   r   r   r   s   ```````     r!   r   zSymbol._find_named_symbols  s       	U1$56661$w'''LL(;a(?@@bLIII?MMM?QQQ?OOO?ASTTT?LLL?QQQ02O   ?ASTTT( 	)*}/H */=II )$(M	 	 	 	 	 	 	 	 	,	O 	O 	O 	O 	O 	O 	O 	O(  	- 	-A" K""<000Q[[)<q)@AArJJJwqzz -& -''1,''&&y111''1,''& -''1,'' 	%1$	% 	%r#   nested_nametemplate_decls	list[Any]on_missing_qualified_symbolTCallable[[Symbol, ASTIdentifier | ASTOperator, Any, ASTTemplateArgs], Symbol | None]strict_template_param_arg_listsancestor_lookup_typeSymbolLookupResult | Nonec           
     
   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d           t                              |                     t           j        dz             d           t                               d|           t                               dd                    d	 |D                                  t                               d
|           t                               d|           t                               d|           t                               d|           t                               d|           t                               d|	           t                               d|
           |r5|                                }t          |          }||k    s|dz   |k    sJ n*t          |          |                                dz   k    sJ |j
        }| }|j        r|j        r|j        }|j        ||d         }|                                sl|j        re|                    |j        |||
          r9t          |          dk    r%|dk    r|r|j        r|j        j        |j        k    rnn|j        }|j        et           j        rVt                               d           t                              |                    t           j        dz             d           d}|d d         D ]}|j        }|j        }|r(|r#|t          |          k     sJ ||         }|dz  }n(d }n%|r!|t          |          k     r||         }|dz  }nd }|                    |||||||	          }|4 |||||          }|$t           j        rt           xj        dz  c_         d S d}|}t           j        rVt                               d           t                              |                    t           j        dz             d           |d         }|j        }|j        }|t          |          k     r!|dz   t          |          k    sJ ||         }n|t          |          k    sJ d }|                    ||||||d|
          }t           j        r$t'          |          }t           xj        dz  c_        t)          |||||          S )Nr   z_symbol_lookup:r   rx   ry   znested_name:         ztemplate_decls:      ,c              3  4   K   | ]}t          |          V  d S r   r$   rS   ts     r!   rW   z(Symbol._symbol_lookup.<locals>.<genexpr>  s(      1Q1QQ#a&&1Q1Q1Q1Q1Q1Qr#   z strict_template_param_arg_lists:zancestor_lookup_type:ztemplate_shorthand:  zmatch_self:          zrecurse_in_anon:     z correct_primary_template_args:  zsearch_in_siblings:  r   )	matchSelfrecurseInAnonsearchInSiblingsclasszstarting point:r   r   r   r   r   Fzhandle last name from:)r   r   r   r   r   )r   r   r~   r   r{   r|   r   rZ   num_templatesr`   r   r   ru   is_operatorfind_identifierr=   rA   r   r   listr/   )r    r   r   r   r   r   r   r   r   r   r   num_nested_templatesnum_template_declsr   r2   
first_namei_template_declrd   r3   r5   r4   r   r1   s                          r!   _symbol_lookupzSymbol._symbol_lookup  s   "  	L1$01111$w'''LL(;a(?@@bLIII6DDD'1Q1Q.1Q1Q1Q)Q)Q   24S   68LMMM68JKKK6
CCC6HHH24Q   68JKKK* 
	J $/#<#<#>#> !$^!4!4$(:::'!+/AAAAA ~&&+*C*C*E*E*IIIII!  	5& 5 - 4  & 5+qJ))++ 9#* 9$44",",&5);	 5   "  JJ!OO 4 ? ? * !@ - 4 !@ !. 4 >*BV V V !$1$8M' $* 9*  	S0111LL001Dq1HIIrLRRR #2#J *	# *	#D.K -M. +  +*S-@-@@@@@&4_&EO#q(OO&*OO ! +_s>7J7J%J%J&4_&EO#q(OO&*O";;#5% /.K <  F ~44!;  >* 1++q0++44
 J"MM 	S7888LL001Dq1HIIrLRRR Ryn)S0000"Q&#n*=*=====,_=OO"c.&9&99999"O331!+*/1 4 	
 	
  	%7mmG1$!]K-
 
 	
r#   c                8   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               dd                    d |D                                  t                               d|           t                               d           t                               d d	            d3d}|                     |||dd ddddd
  
        J t          j                  }t          |          dk    r8t           j        rt                               d           t           xj        dz  c_        t                               dj	                   t                               dj
                   t                               dj                   t                               d           t                               d d	            t           xj        dz  c_        t          j        j
        j	        j                  }t           j        rt           xj        d z  c_        |S t           j        rlt                               d!           t           xj        dz  c_        t                               d"t          |                     t           xj        dz  c_        sCt           j        r/t                               d#           t           xj        d z  c_        |d         S g }	g }
g }|D ]Q}|j        |	                    |           |j        r|                    |           <|
                    |           Rt           j        rxt                               d$t          |	                     t                               d%t          |
                     t                               d&t          |                     d4fd'}t          |
          dk    rd }n |            }d5fd+}j        d,k    r't          |
          dk    sJ  ||
d         |                                           }t           j        rt                               d-|           |
D ]p}|j        j        d,k    r |||           |j                                        }t           j        rt                               d.|           ||k    r |||           qt          |	          dk    rt           j        rft                               d/           |t                               d0           nt                               d1           t           xj        d z  c_        ||S  |            S t           j        r2t                               d2|d u           t           xj        d z  c_        ||                                 |	d         }|                               |S )6Nr   z_add_symbols:ztdecls:r   c              3  4   K   | ]}t          |          V  d S r   r   r   s     r!   rW   z&Symbol._add_symbols.<locals>.<genexpr>  s(      2R2Ra3q662R2R2R2R2R2Rr#   z
nn:       z
decl:     z
location: :r2   r   r3   r7   r4   r   r5   r   r   r   c           	        t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d|           t                               d|           t                               d|           t           xj        dz  c_        t          | |||d d d           S )Nr   z*_add_symbols, on_missing_qualified_symbol:template_params:ident_or_op:    template_args:  r   ru   r=   r?   rA   r   r   r   )r   r   r~   r   r2   r3   r4   r5   s       r!   r   z8Symbol._add_symbols.<locals>.on_missing_qualified_symbol  s     " )##q(##""#OPPP##q(##""#5GGG""#5{CCC""#5}EEE##q(##$%.*    r#   TFr   r   r   r   r   r   r   r   z _add_symbols, result, no symbol:r  r  r  zdeclaration:    zlocation:      r  r   z_add_symbols, result, symbols:znumber symbols:zno declarationz#no_decl:  z#with_decl:z#dup_decl: c            	         t           j        rt                               d           t          j        j        j        j                  } t           j        rt                               d           | S )Nz begin: creating candidate symbolr  z end:   creating candidate symbol)r   r   r   r2   r3   r4   r5   )r   r   r   r   lookup_results    r!   make_cand_symbolz-Symbol._add_symbols.<locals>.make_cand_symbol  s    " G""#EFFF$2'3,<*8'  F " G""#EFFFMr#   r   cand_symbolr   c                    t           j        rYt           xj        dz  c_        t                               d           t           xj        dz  c_        t           xj        dz  c_        d|_        t          |           )Nr   redeclarationr   T)r   r   r~   r   r   r   )r   r  r   s     r!   handle_duplicate_declarationz9Symbol._add_symbols.<locals>.handle_duplicate_declaration  sz     & -''1,''&&777''1,''''1,''
 /3++FK@@@r#   functionzcand_id:zold_id: zno match, no emptyz%result is already created cand_symbolzresult is make_cand_symbol()zBno match, but fill an empty declaration, cand_sybmol is not None?:
r2   r   r3   r7   r4   r   r5   r   r   r   rB   )r   r   r  r   r   r   )r   r   r~   r   rZ   r   r   r1   r`   r4   r3   r5   r2   r   r   r   r   r   r   r   )r    r   r   r   r   r   r   r1   r   no_decl	with_decldup_declr   r
  r  r  cand_idold_idr	  s      ```            @r!   r   zSymbol._add_symbols  s     	>1$///1$y#((2R2R>2R2R2R*R*RSSS|[999|[999<G<<d<<===	 	 	 	0 ++',0!%$!*.$ , 
 
 (((},--w<<1" )""#EFFF##q(##""#5}7TUUU""#5}7PQQQ""#5}7RSSS""#5{CCC""#EW#E#Et#E#EFFF##q(##$2'3,<*8'  F " )##q(##M 	%?@@@1$0#g,,???1$ 	" )""#3444##q(## 1:	 	$ 	$A}$q!!!!" $""""  #### 	=}c'll;;;}c)nn===}c(mm<<<	 	 	 	 	 	 	 	 	  y>>QKK**,,KA A A A A A %339~~****,,Yq\;GGG "//11G" 8"":w777# 
F 
F %0J>>00EEE+99;;& ;&&z6:::f$$00EEE w<<1" )""#7888*&&'NOOOO&&'EFFF##q(##&""'')))" )""Xt+   ##q(##&""$$$ QZF {GT:::Mr#   otherdocnames	list[str]envr   c                ~	   t           j        r/t           xj        dz  c_        t                               d           |J dd}t           j        rt           xj        dz  c_        |j        D ],}t           j        rMt                               d	|                    t           j                             t           xj        dz  c_        |j        rH || |           t           j        r/t                               d
           t           xj        dz  c_        |                     |j        |j	        |j
        ddddd          }t          |          }t           j        r(t                               dt          |                     d |D             }t           j        r(t                               dt          |                     t          |          dk    r/ || |           t           j        rt           xj        dz  c_        d }	|j        /t           j        rt                               d           |d         }	n|j                                        }
t           j        rt                               d|
           |D ]|}|j        )t           j        rt                               d           |}	2|j                                        }t           j        rt                               d|           ||
k    r|}	 n}t           j        rt           xj        dz  c_        |	 || |           |j        rI|j        |v r?|	j        s(|	                    |j        |j        |j                   n|	j        |j        k    rft%          |	j                  }t'          d          }t(                              ||	j        |	j        |	j        j        ||j        |j        fdd           n|	j        j        }|j        j        }|	j        j        }|j        j        }||k    r|dv r||k    rnYd}|d|	                    d          z   z  }|d|                    d          z   z  }t(                              ||j                   |	                    |||           .t           j        rt           xj        dz  c_        d S d S ) Nr   zmerge_with:r    r   other_childr   r   c                p    | j                             |           | |_        |                                 d S r   )r   r   ru   r   )r    r  s     r!   unconditional_addz,Symbol.merge_with.<locals>.unconditional_add^  s8    N!!+...!%K**,,,,,r#   zother_child:
is_redeclarationF)r3   r4   r5   r   r   r   r   r   zraw candidate symbols:c                     g | ]}|j         	|S r-   )r   r   s     r!   r   z%Symbol.merge_with.<locals>.<listcomp>  s     FFFQA4EFqFFFr#   z non-duplicate candidate symbols:r   zno declaration in other childzquery_id:  zempty candidater   zRDuplicate C++ declaration, also defined at %s:%s.
Declaration is '.. cpp:%s:: %s'.duplicate_declarationcpp)locationtypesubtype>   r   r   z1Internal C++ domain error during symbol merging.
zour_child:
z
other_child:
)r"  r   )r    r   r  r   r   r   )r   r   r~   r   r   r   r   r   r=   r?   rA   r   r`   r   r   r   r   r   r$   r   r{   warningdirectiveTyper   ru   
merge_with)r    r  r  r  r  r  candiate_iterr   r1   	our_childquery_idr   r  rd   msgour_object_typeother_object_typeour_child_parent_declother_child_parent_decls                      r!   r'  zSymbol.merge_withV  s<     	.1$}---   	- 	- 	- 	-  	%1$ ? k	= k	=K" )""$k&;&;F<O&P&P   ##q(##* !!$444& -&&'9:::''1,'' 44'1 + :)6#(  %.3#( 5 	 	M m,,J" N""#;S__MMMFF*FFFG" U""#Es7||TTT7||q  !!$444& -''1,''I&.& H&&'FGGG#AJ		&2@@BB& @&&}h???%  F)1!. B"../@AAA %+	 $0>>@@G* B**<AAA(**$*	 + " )##q(## !!$444& *J;+>(+J+J , )J))#/1DkFV    &+*===y455D; C NN!)!!-;"-"5{7G!H4 % # 	 	 	 	 '0&;&FO(3(?(J%,5,<,H).9.@.L+)_<<-1SSS15LLL  S~	0C0CA0F0FFF1K4I4I!4L4LLLs[5HIII  h<<<< 	%1$	% 	%r#   N
nestedNametemplatePrefix#ASTTemplateDeclarationPrefix | Nonec                
   t           j        r/t           xj        dz  c_        t                               d           |r|j        }ng }|                     ||d d d           }t           j        rt           xj        dz  c_        |S )Nr   z	add_name:)r   r   r   )r   r   r~   r   r   r   )r    r0  r1  r   r   s        r!   add_namezSymbol.add_name  s    
  	,1${+++ 	 +5NNND$T   
 
  	%1$
r#   c                B   t           j        r/t           xj        dz  c_        t                               d           |J |J |J |j        }|j        r|j        j        }ng }|                     |||||          }t           j        rt           xj        dz  c_        |S )Nr   zadd_declaration:)r   r   r~   r   rd   r1  r   r   )r    r   r   r   r   r   r   s          r!   add_declarationzSymbol.add_declaration  s      	31$1222&&&"""!&% 	 (7ANNN^['SWXX 	%1$
r#   r   r   r   c                   t           j        rt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d|           t                               d|           t                               d|           t                               d|           t                              |                     t           j        dz             d           t           xj        d	z  c_        | }|t           j        rt           xj        d	z  c_        t                               d
           t                              |                    t           j        dz             d           t           xj        d	z  c_        |r|j        |k    r|S |r|j        }n|j	        }|D ]}|j        |k    r|c S |sn	|j
        }|d S )Nr   zfind_identifier:zidentOrOp:       zmatchSelf:       zrecurseInAnon:   zsearchInSiblings:rx   ry   r   ztrying:)r   r   r~   r   r{   r|   r   r=   r   r   r   )r    r=   r   r   r   currentr   r   s           r!   r   zSymbol.find_identifier  s     		%1$12221$2I>>>2I>>>2MBBB24DEEELL(;a(?@@bLIII1$!" )##q(##""9---W..v/BQ/FGGRPPP##q(## W.);; --4-J",  ;)++HHH ,# *G# !$ tr#   c           
        t           j        rDt           xj        dz  c_        t                               d           t           xj        dz  c_        | }|j        D ]G\  }}}|8d }|j        D ]+}|j        
|j                                        |k    r|} n,|}n*|j        }|j	        }	|
                    |||	dddd          }t           j        rt                               d|           t                               d|           t                               d|           |=t                              |                    t           j        dz             d	           nt                               d
           |$t           j        rt           xj        dz  c_         d S It           j        rt           xj        dz  c_        |S )Nr   zdirect_lookup:Fr   zname:           r  zid:             rx   ry   z	not foundr   )r   r   r~   r   rI   r   r   r   r=   rA   r   r{   r|   r   )
r    r   r   rd   r4   rV   r   candr3   r5   s
             r!   direct_lookupzSymbol.direct_lookup!  s    	%1$/0001$*-( !	 !	&D/3K  D'/ '55773>>" ? "n $ 1..#!',$$)27 /   " 4""#5t<<<""#5GGG""#5s;;;=LLV-@1-D!E!E2LNNNN&&{333y& -''1,''tt   	%1$r#   templateDeclstyptemplateShorthandtuple[list[Symbol] | None, str]c                    t           j        rWt           xj        dz  c_        t                               d           t           xj        dz  c_        t                               d           t                              |                     t           j        dz             d           t                               d|           t                               d|           t                               d|           t                               d	|           t                               d
|           t                               d|           t                               d|            G d dt                    d"fd}	 |                     |||d||||d|
  
        }	n# $ r Y dS w xY w|	#t           j        rt           xj        dz  c_        dS t          |	j
                  }
t          |
          dk    r%t           j        rt           xj        dz  c_        |
d fS |	j        j        |	j        j        j        d k    rdS |	j                            |	j        d d |||d!          }t           j        rt           xj        dz  c_        ||gd fS dS )#Nr   z
find_name:r   rx   ry   znestedName:       ztemplateDecls:    ztyp:              ztemplateShorthand:zmatchSelf:        zrecurseInAnon:    zsearchInSiblings: c                      e Zd ZdS )8Symbol.find_name.<locals>.QualifiedSymbolIsTemplateParamN)r*   r+   r,   r-   r#   r!   QualifiedSymbolIsTemplateParamrB  h  s        Dr#   rC  r2   r   r3   r7   r4   r   r5   r   r   r   c                :    | j         | j         j        dk    rd S )Nr   )r   r   )r2   r3   r4   r5   rC  s       r!   r   z5Symbol.find_name.<locals>.on_missing_qualified_symbolk  s*     (4 ,7?JJ884r#   Fr  )NtemplateParamInQualifiedr   )NNr   r   r   r  )r   r   r~   r   r{   r|   r   	Exceptionr   r   r1   r`   r2   r   r   r   r3   )r    r0  r<  r=  r>  r   r   r   r   r	  r   r   rC  s               @r!   	find_namezSymbol.find_nameM  s     	G1$|,,,1$w'''LL(;a(?@@bLIII3Z@@@3]CCC3S99935FGGG3Y???3]CCC35EFFF	 	 	 	 	Y 	 	 		 	 	 	 	 		4 //+05%(#4$ -.3#3 0  MM . 	4 	4 	4333	4  " )##q(##:=())s88q==" )##q(##9&2>*6A_TT77 ,EE%0 )*/ F 
 
  	%1$8T>!:s    F   F)(F)c                   t           j        r/t           xj        dz  c_        t                               d           |j        }|j        r|j        j        }ng }dd}|                     |||d||||dd
  
        }	t           j        rt           xj        dz  c_        |	d S t          |	j	                  }
t          |
          dk    rd S t          |	j        |	j        |	j        |	j        |dd          }|                                }|
D ]A}|j        
|j                                        }||k    r|                                 |c S B|                                 d S )Nr   zfind_declaration:r2   r   r3   r7   r4   r   r5   r   r   r   c                    d S r   r-   r  s       r!   r   z<Symbol.find_declaration.<locals>.on_missing_qualified_symbol  s	     4r#   Fr  r   fakeDocnameForQuery*   r  r  )r   r   r~   r   rd   r1  r   r   r   r1   r`   r2   r3   r4   r5   r   r   r   )r    r   r=  r>  r   r   r   r   r   r	  r1   query_symbolr*  r   r  s                  r!   find_declarationzSymbol.find_declaration  s     	41$2333!&% 	 (7ANNN	 	 	 	 ++',1!$0 )*/$ , 
 
  	%1$ 4},--w<<14 .#/(8&4#)
 
 
 ,,.. 	 	F!)(6688G(""##%%% # 	tr#   r   c                X   t           j        |z  g}| j        s|                    d           n/| j        r7|                    t          | j                  dt           j        |z  f           | j        r(|                    t          | j                             n'|                    t          | j                             | j	        r'|                    t          | j	                             | j        rf|                    d           | j
        r|                    d           |                    d| j        j        dt          | j                  f           | j        r|                    d| j        df           |                    d           d	                    |          S )
Nz::
z: z!!duplicate!! {z} z	(rM   rx   )r   r}   ru   r   r?   extendr$   r=   r   rA   r   r   r   rZ   )r    r   r   s      r!   r   zSymbol.to_string  s   )F23{ 	JJt" 

+,,.7   
 ~ 2

3t~..////

3t/00111  3

3t011222 	

4   ' 1JJ/000

$/())	    < 	3JJt|S1222

4wws||r#   c                |    d                     |                               gfd| j        D                       S )Nrx   c              3  H   K   | ]}|                     d z             V  dS )r   N)r&   )rS   r   r   s     r!   rW   zSymbol.dump.<locals>.<genexpr>  s3      99QaffVaZ  999999r#   )rZ   r   r   )r    r   s    `r!   r&   zSymbol.dump  sK    wwNN6""
9999$.999
   	r#   )r   r   )rs   r   r   r   )rb   r   r   r   )r   r   )r   r$   r   r   r   r   )ru   r   r=   r   r?   r   rA   r   r   r   r   r   r   r   r   r   r)   )r   r   r   r$   r   r   r   r   )r   r$   r   r   )r   r   r   )r   rG   )r   r   )r3   r7   r4   r\   r5   r   r   r]   r   r]   r   r]   r   r]   r   r   )r3   r7   r4   r\   r5   r   r   r]   r   r]   r   r]   r   r]   r   r]   r   r   )r   r   r   r   r   r   r   r]   r   r$   r   r]   r   r]   r   r]   r   r]   r   r]   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r  r   r  r  r  r   r   r   r   )r0  r   r1  r2  r   r   )r   r   r   r$   r   r   r   r   )
r=   r7   r   r]   r   r]   r   r]   r   r   )r   rG   r   r   )r0  r   r<  r   r=  r$   r>  r]   r   r]   r   r]   r   r]   r   r?  )r   r   r=  r$   r>  r]   r   r]   r   r]   r   r   )r   r   r   r$   )&r*   r+   r,   r~   r}   r   debug_show_treerr   rv   staticmethodr   r   r   r"   rN   r   r   r   r   r   rE   r   r   r   r   r   r   r   r'  r4  r6  r   r;  rG  rM  r   r&   __classcell__)r   s   @r!   r   r      s       LLO   @ @ @ @    \
$ 
$ 
$ 
$/ / / / / /
,1 ,1 ,1 ,1\8 8 8 81 1 1 1 %% %% %% %%N   & & & &"1 1 1 1
 / / / X/   (= = = =   6[% [% [% [%zc
 c
 c
 c
JP P P Pd}% }% }% }%D ?C    &   &$ $ $ $L* * * *X\ \ \ \|A A A AF   @       r#   r   N)r4   r\   r5   r   r   r]   )$
__future__r   typingr   sphinx.domains.cpp._astr   r   r   sphinx.localer   sphinx.utilr	   collections.abcr
   r   r   r   r   r   r   r   r   r   r   r   sphinx.environmentr   	getLoggerr*   r{   rF  r   r/   rG   rn   r   r-   r#   r!   <module>r_     s   " " " " " "                     
             4FFFFFFFFFFFF$$$$$$$$                433333		8	$	$P P P P PI P P P+" +" +" +" +" +" +" +"\       @   6@ @ @ @ @ @ @ @ @ @r#   