Ë
    !täi‘G  ã                   óº   — d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZmZ ddgZ G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)zÍ
    pygments.lexers.c_cpp
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for C/C++ languages.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚincludeÚbygroupsÚusingÚthisÚinheritÚdefaultÚwords)Úget_bool_opt)	ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚ
WhitespaceÚCLexerÚCppLexerc                   ó 
  — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
e
› de› d�Zdej                  dfdej                  dfdez   dz    e ee«      ej                  «      dfdez   dz    e ee«      ej                  «      dfdez   dz    eeej(                  ee«      fdefdefdefe
ej.                  feej0                  fdej0                  fg ed«       ed«      d eej6                  e«      dfd eej6                  ej8                  ej8                  ej8                  «      fdez   d z   ez   d!z   ez   d"z   ez   d#z   ez   d$z   ej<                  fd%ez   d z   ez   d!z   ez   d"z   ez   d&z   ez   d'z   ej<                  fd(ez   d)z   ez   d*z   ez   d+z   ez   d,z   ej<                  fd-ez   ez   ej>                  fd.ez   ej@                  fd/ez   ejB                  fd0ez   ez   ejD                  fd1e#fd2efd3ejH                  feefg e%d4d5d6¬7«      e&jN                  f e%d8d6¬9«      e&jP                  fgd: ee&e«      d;fd<e&d=f e%d>d6¬9«      e&f e%d?d6¬9«      e&jN                  fd@e&jN                  f e%dAd5d6¬7«      e&jN                  fg edB«       ed«      dCe	z   dDz   ez   dEz   e	z   dEz   ez   dFz   ez   dGz    e ee«       eedB¬H«      ejR                   eedB¬H«       ee«       eedB¬H«       ee«      e«      dIfdCe	z   dDz   ez   dEz   e	z   dEz   ez   dFz   ez   dJz    e ee«       eedB¬H«      ejR                   eedB¬H«       ee«       eedB¬H«       ee«      e«      f ed«       e*dK«      g edB«       edL«      dMefdNedOfg edB«       edL«      dPefdQedRfdMedOfgdSedOfdTejV                  fdUefdefdVefgdCez   dWz   ez   dXz    e ee«      ej                   ee«      ejX                  ej.                  «      fdCez   dWz   ez   dYz    e ee«      ej                   ee«      ejX                  ej.                  «      fdZej                  fd[ej0                  fd\ej.                  dOfd]ej                  fd^ej                  fdej                  dOfgd_ej                  dRfd`ej                  dOfdaej                  dOfdbefgeejZ                  dOfdcedOf e*dO«      gddedOfeej\                  f edB«       edL«      gdeœZ/h df£Z0h dg£Z1h dh£Z2h di£Z3dj„ Z4dmdk„Z5yl)nÚCFamilyLexerzg
    For C family source code.  This is used as a base class to avoid repetitious
    definitions.
    z\s*(?:/[*].*?[*]/\s*)?z[0-9a-fA-F](\'?[0-9a-fA-F])*z
\d(\'?\d)*z:(([uU]?[zZ])|([zZ][uU])|([uU][lL]{0,2})|([lL]{1,2}[uU]?))?z4(?!\d)(?:[\w$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8})+z7(?!\d)(?:[\w$]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|::)+z//(?:.|(?<=\\)\n)*\nz5/(?:\\\n)?[*](?:[^*]|[*](?!(?:\\\n)?/))*[*](?:\\\n)?/z\s*(?:(?:(?:z)|(?:z))\s*)*z^#if\s+0Úif0z^#Úmacroz^(z
)(#if\s+0)z)(#)z4(^[ \t]*)(?!(?:public|private|protected|default)\b)(z)(\s*)(:)(?!:)z\nz[^\S\n]+z\\\nz/(\\\n)?[*][\w\W]*ÚkeywordsÚtypesz([LuU]|u8)?(")ÚstringzA([LuU]|u8)?(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')z0[xX](z\.z|\.Ú|z
)[pP][+-]?z[lL]?z(-)?(z
)[eE][+-]?z[fFlL]?z(-)?((z\.(z)?|\.z)[fFlL]?)|(z[fFlL])z	(-)?0[xX]z(-)?0[bB][01](\'?[01])*z(-)?0(\'?[0-7])+z(-)?z[~!%^&*+=|?:<>/-]z
[()\[\],.]z(true|false|NULL|nullptr)\b)Úint8Úint16Úint32Úint64Úwchar_tÚ__ú\b©ÚprefixÚsuffix)ÚboolÚintÚlongÚfloatÚshortÚdoubleÚcharÚunsignedÚsignedÚvoidÚ_BitIntÚ__int128©r(   z(struct|union)(\s+)Ú	classnamezcase\bú
case-value)!ÚasmÚautoÚbreakÚconstÚ	constexprÚcontinuer	   ÚdoÚelseÚenumÚexternÚforÚgotoÚifÚregisterÚ
restrictedÚreturnÚsizeofÚstructÚstaticÚswitchÚtypedefÚtypeofÚtypeof_unqualÚvolatileÚwhileÚunionÚthread_localÚalignasÚalignofÚstatic_assertÚ_PragmaÚfortran)ÚinlineÚ_inlineÚ__inlineÚnakedÚrestrictÚthreadz(__m(128i|128d|128|64))\b)r8   ÚbasedÚexceptÚstdcallÚcdeclÚfastcallÚdeclspecÚfinallyÚtryÚleaveÚw64Ú	unalignedÚraiseÚnoopÚ
identifierÚforceinlineÚassumeÚnullÚ
whitespaceÚ(z(?:[&*\s])+)(z)(z)(\([^;"\')]*?\))(z)([^;{/"\']*)(\{))ÚstateÚfunctionz)([^;/"\']*)(;)Ú	statementÚ
statementsz\}z[{;]ú#popÚ;z\{z#pushÚ"zO\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})z	[^\\"\n]+z\\z)(include)(z)("[^"]+")([^\n]*)z)(<[^>]+>)([^\n]*)z[^/\n]+z/[*](.|\n)*?[*]/z//.*?\nÚ/z	(?<=\\)\nz^\s*#if.*?(?<!\\)\nz^\s*#el(?:se|if).*\nz^\s*#endif.*?(?<!\\)\nz.*?\nú\s*(?=>)z(?<!:)(:)(?!:))ro   rt   r   r   Úrootrs   rr   r   r   r   r6   r7   >   ÚDIRÚFILEÚdiv_tÚoff_tÚfpos_tÚldiv_tÚsize_tÚtime_tÚwint_tÚclock_tÚjmp_bufÚssize_tÚva_listr#   Úwctype_tÚ	mbstate_tÚ	ptrdiff_tÚ	wctrans_tÚsig_atomic_t>   Úint8_tÚint16_tÚint32_tÚint64_tÚuint8_tÚintmax_tÚintptr_tÚuint16_tÚuint32_tÚuint64_tÚ	uintmax_tÚ	uintptr_tÚint_fast8_tÚint_fast16_tÚint_fast32_tÚint_fast64_tÚint_least8_tÚuint_fast8_tÚint_least16_tÚint_least32_tÚint_least64_tÚuint_fast16_tÚuint_fast32_tÚuint_fast64_tÚuint_least8_tÚuint_least16_tÚuint_least32_tÚuint_least64_t>   Úid_tÚdev_tÚgid_tÚino_tÚkey_tÚpid_tÚsig_tÚuid_tÚmode_tÚnfds_tÚrlim_tÚtimer_tÚsigset_tÚsigval_tÚ	clockid_tÚ	cpu_set_tÚ	cpumask_tÚ	siginfo_tÚ	socklen_tÚsighandler_t>%   Ú
atomic_intÚatomic_boolÚatomic_charÚatomic_longÚatomic_uintÚatomic_llongÚatomic_scharÚatomic_shortÚatomic_ucharÚatomic_ulongÚatomic_size_tÚatomic_ullongÚatomic_ushortÚatomic_wchar_tÚatomic_char16_tÚatomic_char32_tÚatomic_intmax_tÚatomic_intptr_tÚatomic_ptrdiff_tÚatomic_uintmax_tÚatomic_uintptr_tÚatomic_int_fast8_tÚatomic_int_fast16_tÚatomic_int_fast32_tÚatomic_int_fast64_tÚatomic_int_least8_tÚatomic_uint_fast8_tÚatomic_int_least16_tÚatomic_int_least32_tÚatomic_int_least64_tÚatomic_uint_fast16_tÚatomic_uint_fast32_tÚatomic_uint_fast64_tÚatomic_uint_least8_tÚatomic_uint_least16_tÚatomic_uint_least32_tÚatomic_uint_least64_tc                 óÀ   — t        |dd«      | _        t        |dd«      | _        t        |dd«      | _        t        |dd«      | _        t        j                  | fi |¤Ž y )NÚstdlibhighlightingTÚc99highlightingÚc11highlightingÚplatformhighlighting)r   rã   rä   rå   ræ   r   Ú__init__)ÚselfÚoptionss     úd/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/pygments/lexers/c_cpp.pyrç   zCFamilyLexer.__init__ø   s^   € Ü".¨wÐ8LÈdÓ"SˆÔÜ+¨GÐ5FÈÓMˆÔÜ+¨GÐ5FÈÓMˆÔÜ$0°Ð:PÐRVÓ$WˆÔ!Ü×Ñ˜DÑ, GÓ,ó    c              #   óÀ  K  — t        j                  | ||«      D ]À  \  }}}|t        u r«| j                  r|| j                  v rt
        j                  }n€| j                  r|| j                  v rt
        j                  }nU| j                  r|| j                  v rt
        j                  }n*| j                  r|| j                  v rt
        j                  }|||f–— ŒÂ y ­w)N)r   Úget_tokens_unprocessedr   rã   Ústdlib_typesr   ÚTyperä   Ú	c99_typesrå   Úc11_atomic_typesræ   Úlinux_types)rè   ÚtextÚstackÚindexÚtokenÚvalues         rê   rí   z#CFamilyLexer.get_tokens_unprocessedÿ   s·   è ø€ ä×1Ñ1°$¸¸eÖDñ  ˆE�5˜%àœ‰}Ø×*Ò*¨u¸×8IÑ8IÑ/IÜ#ŸL™L‘EØ×)Ò)¨e°t·~±~Ñ.EÜ#ŸL™L‘EØ×)Ò)¨e°t×7LÑ7LÑ.LÜ#ŸL™L‘EØ×.Ò.°5¸D×<LÑ<LÑ3LÜ#ŸL™L�EØ˜ Ð%Ó%ñ Eùs   ‚CCN))rz   )6Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_ws1Ú_hexpartÚ_decpartÚ
_intsuffixÚ_identÚ_namespaced_identÚ_comment_singleÚ_comment_multilineÚ_possible_commentsr   ÚPreprocr   r   r   r   r   ÚLabelr   r   ÚSingleÚ	Multiliner   r   ÚAffixÚCharr   ÚFloatÚHexÚBinÚOctÚIntegerr   ÚBuiltinr
   r   ÚReservedrï   ÚFunctionr	   ÚEscapeÚPreprocFileÚClassÚConstantÚtokensrî   rð   rò   rñ   rç   rí   © rë   rê   r   r      sn  „ ñð %€Dð /€Hð €HàN€Jð E€FØRÐð .€OØQÐð )¨Ð(9¸Ð?QÐ>RÐRYÐZÐð
 ˜'Ÿ/™/¨5Ð1Ø�7—?‘? GÐ,à�D‰[˜=Ñ(Ù‘e˜D“k 7§?¡?Ó3°Uð<à�D‰[˜6Ñ!Ù‘e˜D“k 7§?¡?Ó3°Wð>ðð ñ	ð /ñ	/ñ
 �j $§*¡*¨j¸+ÓFðHð �JÐØ˜*Ð%Ø�dˆOØ˜gŸn™nÐ-Ø ×!2Ñ!2Ð3à" G×$5Ñ$5Ð6ð/
ñ4 �JÓÙ�GÓØ¡¨¯©°vÓ >ÀÐIØQÙ�f—l‘l F§K¡K°·±¸f¿k¹kÓJðLð ˜Ñ! EÑ)¨HÑ4°vÑ=ÀÑHØñØñØ,ñ-Ø/7ñ8Ø:BñCØDJÇLÁLðRð ˜Ñ  5Ñ(¨8Ñ3°fÑ<¸xÑGÈ$ÑNØñØ%ñ&Ø(0ñ1Ø3=ñ>Ø?E¿|¹|ðMà˜Ñ! FÑ*¨XÑ5¸Ñ@ØñØ&ñ'Ø)1ñ2Ø4>ñ?Ø@FÇÁðNà˜HÑ$ zÑ1°6·:±:Ð>Ø'¨*Ñ4°f·j±jÐAØ  :Ñ-¨v¯z©zÐ:Ø�xÑ *Ñ,¨f¯n©nÐ=Ø! 8Ð,Ø˜KÐ(Ø+¨T¯\©\Ð:Ø�TˆNð-
ñ2 ÐAÈ%Ø ô"Ø#*×#3Ñ#3ð5áð  à(-ô/à07·±ð>ð
ð $¡X¨g°zÓ%BÀKÐPØ˜ Ð.Ùð að
  ô!ð
 #*ð+ñ ð Ø&+ô-Ø.5×.>Ñ.>ð@ð *¨7×+;Ñ+;Ð<áð ?ð
  Uô,ð
 .5×-=Ñ-=ð?ð
ñ, �LÓ!Ù�JÓàÐ%Ñ%ð )ñ Ø&ñ'ð*ñà%ñ&ð)ñð 'ñ'ð*ñð
 'ñ'ð
*!ñ!ñ ‘e˜D“k¡5¨°\Ô#BØ—m‘m¡U¨4°|Ô%DÙ˜D“k¡5¨°\Ô#BÙ˜D“k ;ó0ð ðð Ð%Ñ%ð )ñ Ø&ñ'ð*ñà%ñ&ð)ñð 'ñ'ð*ñð
 'ñ'ð
*ññ ‘e˜D“k¡5¨°\Ô#BØ—m‘m¡U¨4°|Ô%DÙ˜D“k¡5¨°\Ô#BÙ˜D“k ;ó0ð
1ñ �GÓÙ�KÓ ð;
ñ@ �LÓ!Ù�LÓ!Ø�KÐ Ø�k 6Ð*ð	
ñ �LÓ!Ù�LÓ!Ø�+ÐØ�K Ð)Ø�K Ð(ð
ð �6˜6Ð"ð<Ø=C¿]¹]ðLà˜6Ð"Ø�fÐØ�FˆOð
ð �$‰Y�~Ñ% dÑ*Ð+@Ñ@Ù™˜t› g§o¡o±u¸T³{Ø ×,Ñ,¨g¯n©nó>ð?ð �$‰Y�~Ñ% dÑ*Ð+@Ñ@Ù™˜t› g§o¡o±u¸T³{Ø ×,Ñ,¨g¯n©nó>ð?ð ˜Ÿ™Ð)Ø  '×"3Ñ"3Ð4Ø˜Ÿ™¨Ð0Ø�7—?‘?Ð#Ø˜7Ÿ?™?Ð+Ø�G—O‘O VÐ,ð
ð $ W§_¡_°gÐ>Ø$ g§o¡o°vÐ>Ø&¨¯©¸Ð@Ø�wÐð	
ð �T—Z‘Z Ð(à˜$ Ð'Ù�F‹Oð	
ð  ¨VÐ4Ø�T—]‘]Ð#Ù�LÓ!Ù�LÓ!ð	
ñ{c€FòJ8€Lò:€IòA€Kò
CÐò-ô&rë   r   c                   óŠ   — e Zd ZdZdZdgZg d¢Zg d¢ZdZdZ	dZ
 ed	d
¬«      efeg edd
¬«      ej                  fegdœZd„ Zy)r   aÍ  
    For C source code with preprocessor directives.

    Additional options accepted:

    `stdlibhighlighting`
        Highlight common types found in the C/C++ standard library (e.g. `size_t`).
        (default: ``True``).

    `c99highlighting`
        Highlight common types found in the C99 standard library (e.g. `int8_t`).
        Actually, this includes all fixed-width integer types.
        (default: ``True``).

    `c11highlighting`
        Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
        (default: ``True``).

    `platformhighlighting`
        Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
        (default: ``True``).
    ÚCÚc)z*.cz*.hz*.idcz*.x[bp]m)ztext/x-chdrztext/x-csrczimage/x-xbitmapzimage/x-xpixmapz6https://en.wikipedia.org/wiki/C_(programming_language)Ú çš™™™™™¹?)Ú_AlignasÚ_AlignofÚ	_NoreturnÚ_CountofÚ_GenericÚ_Thread_localÚ_Static_assertÚ
_ImaginaryÚcountofÚnoreturnÚ	imaginaryÚcomplexr%   r5   )Ú_BoolÚ_ComplexÚ_AtomicÚ
_Decimal32Ú
_Decimal64Ú_Decimal128)r   r   c                 óœ   — t        j                  d| t         j                  «      ryt        j                  d| t         j                  «      ryy )Nz^\s*#include [<"]r  z^\s*#ifn?def )ÚreÚsearchÚ	MULTILINE©ró   s    rê   Úanalyse_textzCLexer.analyse_text;  s7   € Ü�9‰9Ð)¨4´·±Ô>ØÜ�9‰9Ð% t¬R¯\©\Ô:Øð ;rë   N)rø   rù   rú   rû   ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚurlÚversion_addedÚpriorityr
   r   r   rï   r  r5  r  rë   rê   r   r     s…   „ ñð, €DØˆe€GÚ3€IÚT€IØ
B€CØ€MØ€Hñ ð _ð ôð  'ð(ð ð
ñ Ð^ÐglÔmÐov×o{Ño{Ð|Øð
ñ€Fórë   c                   ó8  — e Zd ZdZdZdZddgZg d¢ZddgZd	Z	d
Z
d eej                  eej                  ej                  eej                  e«      fege eddd¬«      ej$                  fdej&                  fg ed«       edd¬«      efej,                  ej0                  dfdedf ed«      gd eee«      df edd¬«      efdedfd eee«      dfegdej8                  fegdedfd ej$                  fej,                  ej<                  f ed!«      gd"œZd#„ Z y$)%r   aÏ  
    For C++ source code with preprocessor directives.

    Additional options accepted:

    `stdlibhighlighting`
        Highlight common types found in the C/C++ standard library (e.g. `size_t`).
        (default: ``True``).

    `c99highlighting`
        Highlight common types found in the C99 standard library (e.g. `int8_t`).
        Actually, this includes all fixed-width integer types.
        (default: ``True``).

    `c11highlighting`
        Highlight atomic types found in the C11 standard library (e.g. `atomic_bool`).
        (default: ``True``).

    `platformhighlighting`
        Highlight common types found in the platform SDK headers (e.g. `clockid_t` on Linux).
        (default: ``True``).
    zC++zhttps://isocpp.org/Úcppzc++)z*.cppz*.hppz*.c++z*.h++z*.ccz*.hhz*.cxxz*.hxxz*.Cz*.Hz*.cpz*.CPPz*.tppz*.cppmz*.ixxz*.mxxztext/x-c++hdrztext/x-c++srcr  r  z<((?:[LuU]|u8)?R)(")([^\\()\s]{,16})(\()((?:.|\n)*?)(\)\3)("))Úvirtual_inheritanceÚuuidofÚsuperÚextendsÚsingle_inheritanceÚmultiple_inheritanceÚ	interfaceÚ
implementsÚeventrd   rn   r$   r%   r&   z#__(offload|blockingoffload|outer)\bro   )ÚclassrI   r5   ru   ry   z(class|concept|typename)(\s+)r6   )5ÚcatchÚ
const_castÚdeleteÚdynamic_castÚexplicitÚexportÚfriendÚmutableÚnewÚoperatorÚprivateÚ	protectedÚpublicÚreinterpret_castrH  Ú
__restrictÚstatic_castÚtemplater   ÚthrowÚthrowsre   Útypeidr   ÚvirtualÚconceptÚdecltypeÚnoexceptÚoverrideÚfinalÚ	constinitÚ	constevalÚco_awaitÚ	co_returnÚco_yieldÚrequiresÚimportÚmoduleÚtypenameÚandÚand_eqÚbitandÚbitorÚcomplÚnotÚnot_eqÚorÚor_eqÚxorÚxor_eqÚcontract_assertÚpreÚpostznamespace\bÚ	namespacez(enum)(\s+)Úenumnamezchar(16_t|32_t|8_t)\bz[;{])ru   rz   zinline\brs   )rt   rz   r{  r   r   rz  c                 ó`   — t        j                  d| «      ryt        j                  d| «      ryy )Nz#include <[a-z_]+>gš™™™™™É?zusing namespace gš™™™™™Ù?)r1  r2  r4  s    rê   r5  zCppLexer.analyse_text›  s+   € Ü�9‰9Ð)¨4Ô0ØÜ�9‰9Ð'¨Ô.Øð /rë   N)!rø   rù   rú   rû   r6  r:  r7  r8  r9  r;  r<  r   r   r	  Ú	Delimiterr   r
   r   r  ÚPseudor   r   r   r   r  r   r	   r   rï   r   Ú	Namespacer  r5  r  rë   rê   r   r   B  s¬  „ ñð, €DØ
€CØ�eˆn€Gò-€Ið ! /Ð2€IØ€MØ€Hð
 MÙ�f—l‘l F¨F×,<Ñ,<¸f×>NÑ>NØ˜f×.Ñ.°ó8ð9ð ð
ð áð cà¨ô/à07×0@Ñ0@ðBð 4°W·^±^ÐDð
ñ �LÓ!áÐ&¨uÔ5°wÐ?Ø× Ñ  $§*¡*¨fÐ5à˜$ Ð'Ù�F‹Oð
ð .©x¸ÀÓ/LÈkÐZÙð 	\ð ô
ð &ð
'ð ˜W kÐ2Ø™X g¨zÓ:¸JÐGØð
ð$ & w§|¡|Ð4Øð
ð
 �kÐ#3Ð4Ø˜'×*Ñ*Ð+Ø× Ñ  $§.¡.Ð1Ù�KÓ ð	
ñ_5€Fónrë   )rû   r1  Úpygments.lexerr   r   r   r   r   r   r	   r
   Úpygments.utilr   Úpygments.tokenr   r   r   r   r   r   r   r   r   Ú__all__r   r   r   r  rë   rê   Ú<module>r„     sf   ðñó 
÷"÷ "ó "å &÷$÷ $õ $ð �ZÐ
 €ôu&�:ô u&ôp1ˆ\ô 1ôh]ˆ|õ ]rë   