Ë *¢±r\ùã óþ—ddlmZddlmZmZmZmZd„Zd„Zd„Z dd„Z d„Z d „Z ejejejej ej"ej$fZej(ej*ej,ej.fZej2ej4ej6ej8ej:ej<ej>ej@ejBejDejFejHf Z%ejLejNfZ(ejRejTfZ+ej2ej:ej<ej>ej@ejBejFejHej*ej.f Z,ejZejDej(ej,fZ.d „Z/dd „Z0d „Z1dd „Z2d„Z3y)é)Ú ScopedName)Ú ArgumentTypeÚ CachedNameÚ IfaceFileÚ IfaceFileTypecóN—|j|ury||vry|j|«y)z/ Append an IfaceFile object to a list of them. N)ÚusedÚappend)Úiface_file_listÚ iface_files ú=/usr/lib/python3.12/site-packages/sipbuild/generator/utils.pyÚappend_iface_filer s.€ð‡�˜/Ñ)Øð�_Ñ$Øà×ј:Õ&ócóî—|j�|jj�rõ|jtjur€t |j j«}|dz }d}|j jjD]}|r|dz }nd}|t|«z }Œ|jd«r|dz }|dz }�nx|jtjtjfvrt |j «}�n5|jtjtjfvrd}�n|jtj tj"tj$tj&tj(fvrd }�n¨|jtj*tj,fvrd }�nx|jtj.urd }�nX|jtj0urd }�n8|jtj2urd }�n|jtj4urd}�nø|jtj6tj8fvrd}�nÈ|jtj:urd}�n¨|jtj<urd}�nˆ|jtj>urd}�nh|jtj@urd}�nH|jtjBtjDfvrd}�n|jtjFtjHfvrd}né|jtjJtjLfvrd}nº|jtjNurd}n›|jtjPurd}n||jtjRurd}n]|jtjTurd}n>|jtjVur"d}nt |jjX«}j[d«r|dd}|j\D]}|dz }Œ |j^r|dz }|S) z6 Convert an Argument object to a string of valid C++. NÚÚ z unsigned charÚcharz signed charÚwchar_tzunsigned shortÚshortÚuintÚintz unsigned longÚlongzunsigned long longz long longÚfloatÚdoubleÚboolÚvoidzvoid *Ú Py_ssize_tÚsize_tÚ Py_hash_tz::éÚ*Ú&)0Úoriginal_typedefÚ no_type_nameÚtyperÚTEMPLATEÚstrÚ definitionÚcpp_nameÚtypesÚargsÚargument_as_strÚendswithÚSTRUCTÚDEFINEDÚUBYTEÚUSTRINGÚBYTEÚSTRINGÚ ASCII_STRINGÚ LATIN1_STRINGÚ UTF8_STRINGÚSBYTEÚSSTRINGÚWSTRINGÚUSHORTÚSHORTÚUINTÚINTÚCINTÚULONGÚLONGÚ ULONGLONGÚLONGLONGÚFLOATÚCFLOATÚDOUBLEÚCDOUBLEÚBOOLÚCBOOLÚVOIDÚCAPSULEÚSSIZEÚSIZEÚHASHÚ fq_cpp_nameÚ startswithÚderefsÚ is_reference)ÚargÚsÚ need_commaÚsub_argÚ_s r r.r.s|€ð ×ÑÐ# s×';Ñ';×'HÓ'HØ �8‰8”|×,Ñ,Ñ ,Ü�C—N‘N×+Ñ+Ó,ˆAØ �‰HˆAàˆJØŸ>™>×/Ñ/×4Ô4�ÙØ˜‘H‘Aà!%�Jà”_ WÓ-Ñ-‘ð 5ð�z‰z˜#Œà�S‘�à �‰HŠAà �X‰Xœ,×-Ñ-¬|×/CÑ/CÐDÑ DÜ�C—N‘NÓ#ŠAà �X‰Xœ,×,Ñ,¬l×.BÑ.BÐCÑ CØŠAà �X‰Xœ,×+Ñ+¬\×-@Ñ-@Ä,×B[ÑB[Ô]i×]wÑ]wôzF÷zRñzRðSñSØŠAà �X‰Xœ,×,Ñ,¬l×.BÑ.BÐCÑ CØŠAà �X‰Xœ×-Ñ-Ñ -ØŠAà �X‰Xœ×,Ñ,Ñ ,Ø ŠAà �X‰Xœ×+Ñ+Ñ +ØŠAà �X‰Xœ×*Ñ*Ñ *ØŠAà �X‰Xœ,×*Ñ*¬L×,=Ñ,=Ð>Ñ >ØŠAà �X‰Xœ×+Ñ+Ñ +ØŠAà �X‰Xœ×*Ñ*Ñ *ØŠAà �X‰Xœ×/Ñ/Ñ /Ø$ŠAà �X‰Xœ×.Ñ.Ñ .ØŠAà �X‰Xœ,×,Ñ,¬l×.AÑ.AÐBÑ BØŠAà �X‰Xœ,×-Ñ-¬|×/CÑ/CÐDÑ D؉Aà �X‰Xœ,×+Ñ+¬\×-?Ñ-?Ð@Ñ @؉Aà �X‰Xœ×*Ñ*Ñ *؉Aà �X‰Xœ×-Ñ-Ñ -؉Aà �X‰Xœ×+Ñ+Ñ +؉Aà �X‰Xœ×*Ñ*Ñ *؉Aà �X‰Xœ×*Ñ*Ñ *؉Aô �×$Ñ$×0Ñ0Ó 1ˆð ‡|�|�DÔØ ˆaˆbˆEˆà �ZŒZˆØ ˆS‰‰ðð ×ÒØ ˆS‰ˆà €Hrcó¼—|jjt|«g«}|D]}|j|k(sŒ|cSt |«}|j |«|S)zB Add a name to the cache if necessary and return the cached name. )Ú name_cacheÚ setdefaultÚlenÚnamerr )Úspecr]ÚlineÚnds r Ú cached_namera€sV€ð �?‰?× %Ñ %¤c¨$£i°Ó 4€DóˆØ �7‰7�d‹?ØŠIðô �DÓ €B؇K�K�„Oà €IrNc óΗ|jD�]‹}|jj||¬«sŒ"|j|ur6|tj us|jtj ur|d«|tj urL|j�@|j|ur2|jD]}|j|usŒ|j} nd} | rŒÄ|tjk(r‘|j|urƒ|jD]r} | j|urŒ|jtjus=| jjtjust|| j«sŒk|d«Œt�Œh|tj ur|j|ur�ŒŠ|cSt#||«}t%|t'|t)|««|¬«}|jj+d|«|S)zf Return an interface file for a fully qualified C/C++ name and type creating it if necessary. )ÚscopezXa class, exception, namespace or mapped type has already been defined with the same nameFz:the mapped type has already been defined in another module)r+rPé)Ú iface_filesrPÚmatchesr'rÚ EXCEPTIONÚCLASSÚmoduleÚclassesr ÚexternalÚ MAPPED_TYPEÚ mapped_typesrr(Úsame_base_typeÚ NAMESPACEÚnormalised_scoped_namerrar)Úinsert) r^ÚmodrPÚiface_file_typeÚ error_loggerÚcpp_typercÚiffÚcdrkÚmtds r Úfind_iface_filery“s²€ð×ÕˆØ�‰×&Ñ& {¸%Ð&Ô@Ø ð �8‰8˜?Ñ *ؤm×&=Ñ&=Ñ=ÀÇÁÔQ^×QdÑQdÑAdÙØrôtð œm×1Ñ1Ñ 1°c·j±jÐ6LÐQT×Q[ÑQ[ÐcfÑQfØ—l”l�Ø—=‘= CÒ'Ø!Ÿ{™{�HÙð#ð !�áØð œm×7Ñ7Ò 7¸C¿J¹JÈcÑ‘>¨Ñ,Øà—=‘=¬ ×(=Ñ(=Ñ=Ø—H‘H—M‘M¬×)>Ñ)>Ñ>Ü" 8¨S¯X©XÕ6Ù ØXõZð)ñ ð œm×5Ñ5Ñ 5¸#¿*¹*ÈCÑ:OÙ àŠ ð_ ôd)¨°eÓ<€Kä �OÜ$ T¬3¨{Ó+;Ó<Ø'ô )€Cð  ×Ñ×јA˜sÔ#à €Jrcó`—|jD]}|jj|k(sŒ|cSy)z[ Return the Member object for a named member of a class or None if there was none. N)ÚmembersÚpy_namer])Úklassr]Úmembers r Ú find_methodrØs.€ð —-”-ˆØ �>‰>× Ñ  $Ó &ØŠMð ð rcóŒ—t|«}|jr |S|€|j«|S|jr'|j |j j «|S|d}|j j }|�5|j|k(r|d=|j |« |S|j}|�Œ5|j«|S)z2 Convert a scoped name to a fully qualified name. rd) rÚ is_absoluteÚ make_absoluteÚ is_simpleÚprependr rPÚ base_namerc)Ú scoped_namercÚfq_scoped_nameÚ names_scopeÚscope_fq_cpp_names r rprpäsè€ô   Ó,€Nà×!Ò!Ø ð, Ðð+ ˆØ×$Ñ$Ô&ð( Ðð' × !Ò !Ø×јu×/Ñ/×;Ñ;Ô<ð$ Ðð% QÑ'ˆ Ø!×,Ñ,×8Ñ8ÐàÐ+Ø ×*Ñ*¨kÒ9Ø" 1Ð%Ø×&Ñ&Ð'8Ô9Øð Ðð !2× 7Ñ 7Ð ð  Ñ+ð × (Ñ (Ô *à Ðrcóv—|jtvxs&|jtvxs|jtvS)z5 Return True if Python will interpret a type as int. )r'Ú_PY_INTÚ_PY_LONGÚ _PY_ULONG)r's r Ú py_as_intrŽs/€ð �9‰9œÐ Ò R 4§9¡9´Ð#8Ò R¸D¿I¹IÌÐRÑ>RÑ0Rà×#Ñ#×.Ñ.×:Ñ:×BÑBÀ5×CSÑCSÓTÐ Tà �:‰:œ×-Ñ-Ñ -°%·*±*Ä ×@RÑ@RÑ2RØ×#Ñ#×.Ñ.×:Ñ:×BÑBÀ5×CSÑCSÓTÐ Tà �:‰:œ×,Ñ,Ñ ,°·±¼|×?SÑ?SÑ1SØ×#Ñ#×.Ñ.×:Ñ:×BÑBÀ5×CSÑCSÓTÐ Tà �:‰:œ×-Ñ-Ñ -°%·*±*Ä ×@SÑ@SÑ2SØ×#Ñ#×.Ñ.×:Ñ:×BÑBÀ5×CSÑCSÓTÐ Tà �:‰:œ×*Ñ*Ñ *¨u¯z©z¼\×=QÑ=QÑ/QØ×#Ñ#×/Ñ/×7Ñ7¸×8HÑ8HÓIÐ Ià �:‰:œ×-Ñ-Ñ -°%·*±*Ä ×@QÑ@QÑ2QØ×#Ñ#×/Ñ/×7Ñ7¸×8HÑ8HÓIÐ Iàà ‡z�z”\×'Ñ'Ñ'Ø×Ñ 5×#3Ñ#3Ð3Ð3à ‡z�z”\×&Ñ&Ñ&Ø×Ñ 5×#3Ñ#3Ð3Ð3à ‡z�z”\×*Ñ*Ñ*Ø×шØ×шà �<‰<× Ñ  C§L¡L×$9Ñ$9Ò 9Øä ˆs�y‰y�~‰~Ó ¤# c§i¡i§n¡nÓ"5Ò 5Øä˜CŸI™IŸN™N¨C¯I©I¯N©NÖ;‰HˆC�Ü�3—:‘:‹¤# c§j¡j£/Ò1Ùä! # sÕ+Ùð <ðà ‡z�z”l×)Ñ)¬<×+=Ñ+=Ð>Ñ>Ø×Ñ 5×#3Ñ#3Ñ3Ð3à ‡z�z”\×)Ñ)Ñ)Ø×Ñ 5×#3Ñ#3Ñ3Ð3à ‡z�z”\×(Ñ(Ñ(Ø×Ñ 5×#3Ñ#3Ð3Ð3ð rcóØ—|r+t|j«}t|j«}nLd}|jD]}|j�n|dz }Œd}|jD]}|j�n|dz }Œ||k7rytt|j««D]J}|s|j|j�yt ||j||j||¬«rŒJyy)z> Compare two signatures and return True if they are the same. rdrF)r›T)r\r-Ú default_valueÚrangerœ)r^Úsig1Úsig2r›Úna1Úna2rTÚas r Úsame_signaturer°¥sæ€ñä�$—)‘)‹nˆÜ�$—)‘)‹n‰ðˆà—9”9ˆCØ× Ñ Ð,Ùà �1‰H‰Cð ð ˆà—9”9ˆCØ× Ñ Ð,Ùà �1‰H‰Cð ð ˆc‚zØô”3�t—y‘y“>Ö "ˆÙ˜$Ÿ)™) A™,×4Ñ4Ð@Ø ð ô " $¨¯ © °!© °d·i±iÀ±lÈ6ÖRÙð #ð rcó —t|«}|j«|jD]}|j|k(sŒny|jj|_|j xs|jj |_|jj |_|jj|jj«|jxs|jj|_ |jxs|jj|_ |jxs|jj|_ |jxs|jj|_ |j€||_ yy)zD Search the typedefs and update the given type from any definition. N)rr‚ÚtypedefsrPr'Ú allow_noner*rRÚextendÚ disallow_noner‘rSÚ type_hintsr%)r^r+r'rPÚtypedefs r Úsearch_typedefsr¸Îs!€ô˜XÓ&€KØ×ÑÔà—=”=ˆØ × Ñ  +Ó -Ù ð!ð ð— ‘ ×!Ñ!€D„IØ—o‘oÒ@¨¯©×)@Ñ)@€D„OØ—l‘l×-Ñ-€D„O؇K�K×Ñ�w—|‘|×*Ñ*Ô+Ø×+Ñ+ÒI¨w¯|©|×/IÑ/I€DÔØ—M‘MÒ: W§\¡\×%:Ñ%:€D„MØ×)Ñ)ÒF¨W¯\©\×-FÑ-F€DÔØ—o‘oÒ@¨¯©×)@Ñ)@€D„Oð ×ÑÐ$Ø 'ˆÕð%r)NN)T)4r†rÚ specificationrrrrrr.raryrrpr3r:r5r6r7r8r–rFrErHrGr—rIrOrMrNr4r9r2r=r<r@r?r>r‹rBrDrŒrArCr�r˜rJr’rŽrœrnr°r¸©rr Úr»sÝðõ $ßMÓMò 'òe òPð("óBòJ òðB×"Ñ" L×$8Ñ$8¸,×:MÑ:MØ×!Ñ! <×#=Ñ#=Ø× Ñ ð"€ ð× Ñ  ,×"4Ñ"4°l×6JÑ6JØ×Ñð € à × Ñ ˜l×/Ñ/°×1CÑ1CØ×ј<×,Ñ,¨l×.@Ñ.@Ø×јL×.Ñ.° ×0CÑ0CØ×ј<×+Ñ+¨\×->Ñ->ð @€ð × Ñ ˜|×4Ñ4Ð 5€Ø × Ñ  ×!7Ñ!7Ð 8€ Ø × Ñ ˜|×0Ñ0°,×2DÑ2DØ×јL×.Ñ.° ×0CÑ0CØ×ј,×+Ñ+¨\×-?Ñ-?Ø×Ñð €ð ×%Ñ% |×'8Ñ'8¸,×:MÑ:MØ×Ñð€òSó >&òBCóL&óR(r