Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 AøªjǬã@sÒddlmZddlmZmZddlmZmZyddlmZ Wne k rXddl Z YnXddl Z ddl Z ddl Z y(e jd.krˆddlZnddlZejƒZWne k r²dZYnXdd „Zd Ze jd e je jBƒZe jd e je jBƒZe jd e jƒZe jdƒZe jdƒZe jdƒZe jdƒZdae jde j ƒZ!e jdƒZ"e jdƒZ#e jdƒZ$e jdƒZ%e jdƒZ&e jdƒZ'e jdƒZ(dd„Z)dd„Z*dd„Z+d d!„Z,d"d#„Z-d$d%„Z.d&d'„Z/d(d)„Z0d*d+„Z1Gd,d-„d-e2ƒZ3dS)/é)Úmodel)Ú COMMON_TYPESÚresolve_common_type)ÚFFIErrorÚ CDefError)Ú _pycparseréNécCsddl}ddl}dS)Nr)Zpycparser.yacctabZpycparser.lextab)Ú pycparser©r ú,/tmp/pip-build-_d5lkt3n/cffi/cffi/cparser.pyÚ%_workaround_for_static_import_finderssr zz/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$z^[ \t]*#[ \t]*(?:line|\d+)\b.*$z=\s*\.\.\.\s*[,}]|\.\.\.\s*\}z__dotdotdot\d+__$z\[\s*\.\.\.\s*\]z\w+|\Sz-?0?x?[0-9a-f]+[lu]*$z\b(__stdcall|WINAPI)\bz[(]\s*(__stdcall|WINAPI)\bz \b__cdecl\bz9\bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.z'[*]\s*((const|volatile|restrict)\b\s*)+z3(\b(int|long|short|signed|unsigned|char)\s*)+\.\.\.z\b(double|float)\s*\.\.\.cCstdkrtjƒatS)N)Ú _parser_cacher ZCParserr r r r Ú _get_parser2srcCs g}xòtj|ƒ}|sP|j|d|jƒ…ƒ|jdƒd}|j|jƒƒ|jƒ}|jd|ƒrn|jdƒ|d7}d}|}x`|t|ƒkrÖ||}|dkrž|d7}n.|dkrº|dkr°P|d8}n|dkrÌ|dkrÌP|d7}qxW|||…|||d…}qW|j|ƒdj|ƒS)Nú(ú)Ú*rrz,;=Ú) Ú_r_star_const_spaceÚsearchÚappendÚstartÚgroupÚendÚ startswithÚlenÚjoin)ÚcsourceÚpartsÚmatchÚclosingÚendposÚlevelÚiÚcr r r Ú_workaround_for_old_pycparser8s<          r%cCs0g}�xtj|ƒ}|sP|jƒd}|j|d|jƒ…ƒd|jdƒkrT|jdƒn |jdƒ||dkrÌ|jd|ƒ}|dkr†tdƒ‚|jd|d|ƒdkr¤td ƒ‚|j||d|…ƒ||dd…}nB|jd |ƒ}|dkrètd ƒ‚|j|||d…ƒ||dd…}|jd ƒqW|j|ƒd j |ƒS)NrÚCz(void __cffi_extern_python_plus_c_start; z!void __cffi_extern_python_start; Ú{Ú}rz!'extern "Python" {': no '}' foundz7cannot use { } inside a block 'extern "Python" { ... }'ú;z'extern "Python": no ';' foundz void __cffi_extern_python_stop;r) Ú_r_extern_pythonrrrrrÚfindrÚNotImplementedErrorr)rrrr!r Z semicolonr r r Ú_preprocess_extern_pythonbs4         r-cCsNd|kr dSx<|jƒD]0}d|kr|jƒjdƒ rddl}|jdƒPqWdS)Nú"ú#rz¨String literal found in cdef() or type source. String literals are ignored here, but you should remove them anyway because some character sequences confuse pre-parsing.)Ú splitlinesÚlstriprÚwarningsÚwarn)rÚliner2r r r Ú_warn_for_string_literal”s r5cCs$|js ddl}|jd|jfƒdS)NrzrGlobal variable '%s' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern'))Zstorager2r3Úname)Údeclr2r r r Ú/_warn_for_non_extern_non_static_global_variable sr8cs$g‰‡fdd„}tj||ƒ}|ˆfS)Ncstˆƒ}ˆj|jƒƒd|S)Nz#line@%d)rrr)Úmr#)Úline_directivesr r Úreplace­sz(_remove_line_directives..replace)Ú_r_line_directiveÚsub)rr;r )r:r Ú_remove_line_directives§s  r>cs‡fdd„}tj||ƒS)Ncs.|jƒ}|jdƒstdƒ‚ˆt|dd…ƒS)Nz#line@zBunexpected #line directive (should have been processed and removedé)rrÚAssertionErrorÚint)r9Ús)r:r r r;µs z*_put_back_line_directives..replace)r<r=)rr:r;r )r:r Ú_put_back_line_directives´s rCc Cs®t|ƒ\}}dd„}tj||ƒ}i}x6tj|ƒD](}|jƒ\}}|jddƒjƒ}|||<q0Wtjd|ƒ}tj dkrzt |ƒ}t jd|ƒ}t jd|ƒ}t jd|ƒ}t|ƒ}t|ƒtjd |ƒ}ttj|ƒƒ}x®tt|ƒƒD]ž\}}|jƒ} || d k�r8|jd | |jƒƒ} | | k�st‚d |d| …||| d d…f}qÖ|| | d …d k�sRt‚d|d| …||| d d…f}qÖWtjd|ƒ}tjd|ƒ}|jd dƒ}t||ƒ}||fS)NcSsd|jƒjdƒdS)Nú Ú )rÚcount)r9r r r Úreplace_keeping_newlinesÃsz-_preprocess..replace_keeping_newlinesz\ rz2.14z volatile volatile const(z volatile volatile const rDz[__dotdotdotarray__]ú=z...z%s,__dotdotdot%d__ %sr z%s __dotdotdot%d__ %sz __dotdotdotint__ z __dotdotdotfloat__ z __dotdotdot__ )r>Ú _r_commentr=Ú _r_defineÚfinditerÚgroupsr;Ústripr Ú __version__r%Ú _r_stdcall2Ú _r_stdcall1Ú_r_cdeclr-r5Ú_r_partial_arrayÚlistÚ_r_partial_enumÚ enumerateÚreversedrr+rr@Ú_r_int_dotdotdotÚ_r_float_dotdotdotrC) rr:rGÚmacrosrZ macronameZ macrovalueÚmatchesÚnumberÚpÚp2r r r Ú _preprocess½sB              r^cCsttƒ}|jdƒ|jdƒ|jdƒ|jdƒ|jdƒtƒ}d}d}d}x®tj|ƒD] }||krô|dkrŠ|rô|j|ƒ|j|ƒd}nj|dkrœd }d}nX|dkr®|d 7}nF|dkrÀ|d 8}n4|dkrê|rô|dkrô|j|ƒ|j|ƒn |j|ƒ|}qXW|S) Nr)ú,rrÚtypedefFrrTr)ÚsetrÚaddÚ_r_wordsÚfindallÚdiscard)rZlook_for_wordsZ words_usedZ is_typedefZparenZ previous_wordÚwordr r r Ú_common_type_namesÿs>             rgc@sòeZdZdd„Zdd„Zdd„Zdd„Zd:d d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd;dd„Zd d!„Zdd&d'„Zd(d)„Zd?d*d+„Zd,d-„Zd@d.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd S)AÚParsercCs:i|_tƒ|_d|_tjƒ|_i|_i|_g|_ d|_ dS)Nr) Ú _declarationsraÚ_included_declarationsÚ_anonymous_counterÚweakrefÚWeakKeyDictionaryÚ_structnode2typeÚ_optionsÚ_int_constantsÚ _recompleteÚ_uses_new_feature)Úselfr r r Ú__init__)s zParser.__init__c Cs4t|ƒ\}}t|ƒ}g}x"ztypedef int %s;z@typedef int __dotdotdotint__, __dotdotdotfloat__, __dotdotdot__;z# 1 "%s"rE)r^rgÚsortedrirrreÚCDEF_SOURCE_STRINGrÚlockÚacquirerÚparser Zc_parserÚ ParseErrorÚconvert_pycparser_errorÚrelease) rsrrYZctnÚ typenamesr6Ú csourcelinesÚtypenameZ fullcsourceÚastÚer r r Ú_parse3s4          "  z Parser._parsecCsfd}t|ƒ}tjdtf|ƒ}|rbt|jdƒdƒ}|jƒ}d|koPt|ƒknrb||d}|S)Nz %s:(\d+):ré )ÚstrÚrerrwrArr0r)rsr‚rr4ÚmsgrÚlinenumrr r r Ú_convert_pycparser_errorYs zParser._convert_pycparser_errorcCs@|j||ƒ}t|ƒ}|r*d|jƒ|f}n d|f}t|ƒ‚dS)Nzcannot parse "%s" %szparse error %s)r‰r…rMr)rsr‚rr4r‡r r r r|gs   zParser.convert_pycparser_errorFNc Csz|r&|dkrtdƒ‚|r tdƒ‚d}n$|rF||d@rJtd|fƒ‚nd}|j}z|||dœ|_|j|ƒWd||_XdS)NTzB'packed' should be False or True; use 'pack' to give another valuez$cannot give both 'pack' and 'packed'rz%'pack' must be a power of two, not %rr)ÚoverrideÚpackedÚ dllexport)Ú ValueErrorroÚ_internal_parse)rsrrŠr‹ÚpackrŒZ prev_optionsr r r rzqs$   z Parser.parsec Cs.|j|ƒ\}}}|j|ƒt|jƒ}x |D]}|jdkr*Pq*WdsFt‚d}�yLd|_�x>|D�]4}|}t|tj j ƒr€|j |ƒq\t|tj j ƒ�rp|js t d|ƒ‚d}t|jjtj jƒrÖ|jjjdjdƒrÖ|j|ƒ}n‚t|jtj jƒ�r6t|jjtj jƒ�r6t|jjjtj jƒ�r6|jjjjdjdƒ�r6|j|ƒ}n"|j|j|jdd|jfd �\}}|jd |j||d �q\|jjd k�r€q\t d |jj|ƒ‚q\WWn�t k �rÜ} z&t| jƒdk�rÊ| j|f| _‚WYdd} ~ XnNtk �r(} z0|j| |ƒ} | �r| jdd| f| _‚WYdd} ~ XnXdS)NÚ __dotdotdot__rÚ__cffi_extern_python_stopz!typedef does not declare any namerZ __dotdotdotTz*(%s *)0)r6Úpartial_length_okÚtypedef_exampleztypedef )ÚqualsZPragmazBunexpected <%s>: this construct is valid C but not valid in cdef()z *** Err: %séÿÿÿÿr•)rƒÚ_process_macrosÚiterÚextr6r@Ú_inside_extern_pythonÚ isinstancer Úc_astZDeclÚ _parse_declZTypedefrÚtypeÚIdentifierTypeÚnamesrÚ_get_unknown_typeÚPtrDeclÚTypeDeclÚ_get_unknown_ptr_typeÚ_get_type_and_qualsÚ_declareÚ __class__Ú__name__rÚargsrr‰) rsrr�rYÚiteratorr7Z current_declr”Zrealtyper‚r‡r r r rމsZ           zParser._internal_parsecCs8||jkr*|j||krdStd|fƒ‚||j|<dS)Nz%multiple declarations of constant: %s)rpr)rsÚkeyÚvalr r r Ú_add_constantsÀs   zParser._add_constantscCsŠ|jƒjdƒ}|jdƒ}|r(|dd…}|jdƒrV|dkrV|jdƒ rVd|dd…}t|dƒ}|rj| }|j||ƒ|jd||ƒdS) NÚulú-rÚ0Ú0xZ0orzmacro )ÚlowerÚrstriprrAr¬r¥)rsr6Zint_strÚnegZpyvaluer r r Ú_add_integer_constantÈs     zParser._add_integer_constantcCshxb|jƒD]V\}}|jƒ}tj|ƒr2|j||ƒq |dkrL|jd||ƒq td||||fƒ‚q WdS)Nz...zmacro z¶only supports one of the following syntax: #define %s ... (literally dot-dot-dot) #define %s NUMBER (with NUMBER an integer constant, decimal/hex/octal) got: #define %s %s)ÚitemsrMÚ_r_int_literalrr´r¥r)rsrYrªÚvaluer r r r–×s zParser._process_macroscCsX|j||ƒ}|jjdƒrd}n$|jdkr.d}n|jdkr>d}nd}|j||j|ƒdS)NrŒzdllexport_python Z__cffi_extern_python_startzextern_python Z!__cffi_extern_python_plus_c_startzextern_python_plus_c z function )Ú_get_type_pointerroÚgetr™r¥r6)rsÚtpr”r7Útagr r r Ú_declare_functionès    zParser._declare_functioncCs|j}t|tjjƒrJ|j||jd�\}}t|tjƒs8t ‚|j |||ƒ�nÈt|tjj ƒrf|j d|ƒnHt|tjj ƒr‚|j d|ƒn,t|tjjƒrž|j d|ƒn|js®td|ƒ‚|j�r|j|dd�\}}|jrà|j |||ƒ�n2|jƒ�r(t|dƒ�r(t|jd ƒ�r(tj|jjƒ�r(|j|j|jjƒnê|jƒ�rŽt|jtjjƒ�rŽ|jjd k�rŽt|jjd ƒ�rŽtj|jjjƒ�rŽ|j|jd |jjjƒn„|tjk�r²|jjd ƒ�r²|j|_n`|jd k�rÆtd ƒ‚|tj@�rô|j �rô|j d|j||d�nt!|ƒ|j d|j||d�dS)N)r6ÚstructÚunionÚenumz'construct does not declare any variableT)r’Úinitr·r®Z__cffi_extern_python_r‘zÓsz/Parser._parse_function_type..r”r rÙrØZ __stdcallr•r•r•éýÿÿÿ)rSÚgetattrr¨rUrÇrrršr�r r›r¢ržrŸÚpoprrËr¤r”rÂÚtuple) rsríÚfuncnamerÒr#ÚargZellipsisr¨Úresultr”Úabir )rsr rì¾s6       zParser._parse_function_typecCs6t|tjƒrtj|j|ƒSt|tjƒr.|jƒS|SdS)N)ršrrérßÚitemrÂrÜ)rsr�r”r r r róás   zParser._as_func_argc Cs,y |j|Stk rYnX|}|j}|dkrb|dk rDd|}n|jd7_d|j}d}n"|}d||f}|jj|dƒ\}} |dk�r|dkr¨tj|dddƒ}nP|dkrÂtj|dddƒ}n6|dkrê|dkrÚt d ƒ‚|j ||j ƒ}nt d |fƒ‚|dk �r2|j ||ƒn"|dk�r2|j dk �r2td |ƒ‚|j�sD|j|ƒ|j�rjd |jk�rj|j d |j|ƒ||j|<|dk�r‚|S|jdk�r’|S|jdk �rªt d|ƒ‚g} g} g} g} xä|jD]Ú}t|jtjjƒ�rüdj|jjƒdk�rü|j||ƒ�qÂ|jdk�rd}n |j|jƒ}d|_|j|jdd�\}}|j�rH|j||ƒt|tjƒ�rj|j�rj|j||ƒ| j |j�pxdƒ| j |ƒ| j |ƒ| j |ƒ�qÂWt!| ƒ|_t!| ƒ|_"t!| ƒ|_#t!| ƒ|_$| dgt%| ƒk�rt|tjƒ�r|j�rtd|fƒ‚|j&jdƒ|_'|j(�r(d|_(|j)j |ƒ|S)Nz$%srz$%dz%s %sr½r¾r¿r�z!Enums cannot be declared with ...z kind = %rz^enum %s: the '{}' declaration should appear on the first time the enum is mentioned, not laterrÛz anonymous %sz"duplicate declaration of struct %srFT)r’z#%s: using both bitfields and '...;'r‹r)NNr•r•)*rnÚKeyErrorr6rkrir¹rZ StructTypeZ UnionTyperÚ_build_enum_typeÚvaluesr@r¥r,rÞZforce_the_nameÚdeclsÚfldnamesršr�r r›ržrrŸÚ _make_partialÚbitsizerèÚ_partial_lengthr¤ÚpartialrrùÚfldtypesÚ fldbitsizeÚfldqualsrror‹Z completedrq)rsÚkindr�r6rçZ force_nameÚ explicit_namerºrªÚ_rrr r r7rZfqualr r r rÄésœ                             z"Parser._get_struct_union_enum_typecCsBt|tjƒstd|fƒ‚|jƒ r8| r8td|fƒ‚d|_dS)Nz%s cannot be partialz%s is partial but has no C nameT)ršrZ StructOrUnionrZ has_c_namer,r)rsrºrçr r r r_s  zParser._make_partialc Csøt|tjjƒ�r,|j}d|dko,dknrÌ|jdƒ}y"|jdƒrRt|dƒSt|dƒSWn\tk rºt |ƒdkr¶|j ƒdd…d kr˜t|d ƒS|j ƒdd…d kr¶t|dƒSYnXt d |fƒ‚n`|dd k�r|d d k�rt |ƒdk�st |ƒdk�r|ddk�rt |d!ƒSt d |fƒ‚t|tjj ƒ�rT|jdk�rT|j|jƒSt|tjj ƒ�r~|jdk�r~|j|jƒ St|tjjƒ�r¨|j|jk�r¨|j|jSt|tjjƒ�rä|jdk�rä|�rÔd|_dStd|jjƒ‚t|tjjƒ�rä|j|jƒ}|j|jƒ}|jdk�r ||S|jdk�r4||S|jdk�rH||S|jdk�r`|j||ƒS|jdk�r€||j||ƒ|S|jdk�r”||>S|jdk�r¨||?S|jdk�r¼||@S|jdk�rÐ||BS|jdk�rä||AStd|jjƒ‚dS)"Nr¯rÚ9ZuUlLrur„rrÑr°éÚ0bzinvalid constant %rú'r éú\ú+r®Z__dotdotdotarray__Tz...zT:%d: unsupported '[...]' here, cannot derive the actual array length in this contextrú/ú%z<>ú&ú|ú^z?:%d: unsupported expression: expected a simple numeric constantr•éþÿÿÿ)ršr r›ÚConstantr·r²rrAr�rr±rÚordrÈrÉrèrÊrÓr6rprrrër4ZBinaryOpÚleftÚrightÚ_c_div)rsrÔr’rBrrr r r rèfsx     *                    zParser._parse_constantcCs0||}|dk|dkAr,||dkr,|d7}|S)Nrrr )rsÚaÚbrür r r r¯sz Parser._c_divc Cs´|dk r¢d}g}g}d}xb|jD]X}tj|jƒr6d}q |jdk rL|j|jƒ}|j|jƒ|j|ƒ|j|j|ƒ|d7}q Wt|ƒ}t|ƒ}t j |||ƒ}||_ nt j |ffƒ}|S)NFrTr) Ú enumeratorsÚ_r_enum_dotdotdotrr6r·rèrr¬rùrZEnumTyper) rsr rrr"Z enumvaluesZ nextenumvaluer¿rºr r r rµs*       zParser._build_enum_typecCszxP|jjƒD]B\}\}}|jdƒr$q |jddƒd}|d kr |j||d |d �q Wx"|jjƒD]\}}|j||ƒq^WdS) Nzanonymous $enum_$rDrrr½r¾r¿Ú anonymousr`T)r×r”)r½r¾r¿r$r`)rirµrrÕr¥rpr¬)rsÚotherr6rºr”r ÚkÚvr r r ÚincludeÍs zParser.includecCsŒ|jjj}|dgkr tj|jƒS|dgkrL|jdkr@d|j|_tj|jƒS|dgkrx|jdkrld|j|_tj|jƒStd|j j ƒ‚dS)Nr�Z__dotdotdotint__z'typedef int... %s'Z__dotdotdotfloat__z'typedef float... %s'z*:%d: unsupported usage of "..." in typedef) r�rŸrZ unknown_typer6rrZUnknownIntegerTypeZUnknownFloatTyperrër4)rsr7r~r r r r ×s           zParser._get_unknown_typecCs2|jjjjdgkrtj|jƒStd|jjƒ‚dS)Nr�z*:%d: unsupported usage of "..." in typedef)r�rŸrZunknown_ptr_typer6rrër4)rsr7r r r r£ês zParser._get_unknown_ptr_type)FFNF)Fr)N)NFN)N)NF)F)r§Ú __module__Ú __qualname__rtrƒr‰r|rzrŽr¬r´r–r¼rœrÐrÎr¥rÚr¸r¤rìrórÄrrèrrr(r r£r r r r rh's: &  7 3   h # v I rh)r )4rrZ commontypesrrÚerrorrrrr Ú ImportErrorrlr†ÚsysÚ version_infoÚthreadÚ_threadÚ allocate_lockrxr rwÚcompileÚDOTALLÚ MULTILINErIrJr<rTr#rRrcrÚ IGNORECASEr¶rPrOrQr*rrWrXrr%r-r5r8r>rCr^rgÚobjectrhr r r r ÚsZ               *2   B(