
    Mh;i                     V    d dl Z d dlZd dlZddlmZ ddlmZ  G d de          ZdZ	dS )    N   )modelVerificationErrorc                   8   e Zd ZdZdZd Zd Zd Zd Zd1dZ	d	 Z
d2dZd Zd Zd Zd Zd ZeZeZeZd ZeZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#	 	 d3d"Z$d# Z%eZ&d4d$Z'd% Z(d& Z)d' Z*d( Z+d5d*Z,d5d+Z-d, Z.d- Z/eZ0d. Z1d/ Z2eZ3d0 Z4d S )6VGenericEnginegFc                 H    || _         |j        | _        g | _        i | _        d S N)verifierffiexport_symbols_struct_pending_verification)selfr   s     P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cffi/vengine_gen.py__init__zVGenericEngine.__init__   s(     < ,.)))    c                 <    |                     d| j                   d S )Nr   )
setdefaultr   )r   kwdss     r   patch_extension_kwdsz#VGenericEngine.patch_extension_kwds   s"     	($*=>>>>>r   c                     |D ]_}||z   }|t           j        }|D ]G}t          j                            ||          }t          j                            |          r|c c S H`d S r   )syspathosjoinisfile)r   module_namer   so_suffixes	so_suffixbasenamedirnamefilenames           r   find_modulezVGenericEngine.find_module   s    $ 	$ 	$I"Y.H|x $ $7<<::7>>(++ $#OOOOO$$		$ 	$r   c                     d S r    )r   s    r   collect_typeszVGenericEngine.collect_types%       r    c                 @    | j                             |dz              d S )N
)_fwrite)r   whats     r   _prntzVGenericEngine._prnt(   s     dTk"""""r   c                 *   | j         } |t                      || j        j                   |                     d           t
          j        dk    rAt
          j        dk    rd}nd}| j                                        } |d||d           d S d S )Ndeclwin32   PyInit_initzvoid z(void) { }
)	r/   cffimod_headerr   preamble	_generater   platformversion_infoget_module_name)r   prntprefixmodnames       r   write_source_to_fz VGenericEngine.write_source_to_f+   s    z^T]#$$$ 	v
 <7""4''"m3355GDDFFGGG<===== #"r   r   c                 b     j         j        }t          j                            t          j         j        j                  }|                    ||           	                    d            G  fddt          j                   d          } 	                    d|           |S )Nloadingc                   0    e Zd ZZj        Zg Z fdZdS )/VGenericEngine.load_library.<locals>.FFILibraryc                     j         S r   )	_cffi_dir)r   
FFILibrarys    r   __dir__z7VGenericEngine.load_library.<locals>.FFILibrary.__dir__T   s    !++r   N)__name__
__module____qualname___cffi_generic_moduler   	_cffi_ffirF   rH   )rG   moduler   s   r   rG   rD   P   s@        #) II, , , , , , ,r   rG   r)   loaded)library)r   _backendr   r   r   curdirr   modulefilenameload_library_loadtypes
ModuleType)r   flagsbackendr#   rP   rG   rN   s   `    @@r   rT   zVGenericEngine.load_libraryA   s    (#7<<	4=+GHH%%h66 	

69%%%	, 	, 	, 	, 	, 	, 	, 	, 	,) 	, 	, 	, *R.. 	

68W
555r   c                     d | j         j        j                                        D             }|                                 |S )Nc                 "    g | ]\  }\  }}||fS r&   r&   ).0keytpquals       r   
<listcomp>z4VGenericEngine._get_declarations.<locals>.<listcomp>^   s7     H H H.c:BRy H H Hr   )r   _parser_declarationsitemssort)r   lsts     r   _get_declarationsz VGenericEngine._get_declarations]   sK    H H $ 0 > D D F FH H H



r   c                 F   |                                  D ]\  }}|                    dd          \  }}	 t          | d|d|          }n # t          $ r t	          d|z            w xY w	  |||           d# t
          $ r}t          j        ||            d }~ww xY wd S )N r   _generate_gen__znot implemented in verify(): %r)rf   splitgetattrAttributeErrorr   	Exceptionr   attach_exception_info)r   	step_namenamer^   kindrealnamemethodes           r   r9   zVGenericEngine._generatec   s    ..00 	 	HD"!ZZQ//ND(> @I	(K L L! > > >'5<> > >>r8$$$$   +At444	 	s#   AA(,A99
BBBc                     |                                  D ]h\  }}|                    dd          \  }}t          | d|d|          }	  ||||fi | A# t          $ r}	t	          j        |	|            d }	~	ww xY wd S )Nrh   r   rj   _gen_)rf   rk   rl   rn   r   ro   )
r   rN   rp   r   rq   r^   rr   rs   rt   ru   s
             r   rU   zVGenericEngine._loadr   s    ..00 	 	HD"!ZZQ//ND(TT999dd#CDDFr8V44t4444   +At444	 	s   
A
A; A66A;c                     d S r   r&   r   r^   rq   s      r   _generate_nothingz VGenericEngine._generate_nothing|   r(   r   c                     d S r   r&   r   r^   rq   rN   r   s        r   _loaded_noopzVGenericEngine._loaded_noop   r(   r   c           	      d   t          |t          j                  sJ |j        r|                     d||           d S | j        }t          |j                  }g }t          |j                  D ]=\  }}d}t          |t          j	                  rd}|
                    d||fz             >d|z  fdt          |j        |          D             }	|j        }
t          |
t          j	                  r6|	                    d|
                    d                     t          j        }
d	                    |	          pd
}	d|z  }| j        
                    |           |j        r|j        dz   }nd}d||d|	d}d|z   ||
                    |                      |d           t          |j        t          j	                  rd}n$t          |j        t          j                  sd}nd} |d||dd	                    |          d            |d            |             d S )NFr)   *z%sx%dzargument of %sc                 H    g | ]\  }}|                     d |z            S )z %s)
get_c_name)r\   typeargcontexts      r   r`   z>VGenericEngine._generate_gen_function_decl.<locals>.<listcomp>   s?     < < < tS ??53;88 < < <r   r   z *r, void
_cffi_f_%srh   ()zresult of %s{z*r = zreturn   );})
isinstancer   FunctionPtrTypeellipsis_generate_gen_constr/   lenargs	enumerateStructOrUnionappendzipresultinsertr   	void_typer   r   abiVoidType)r   r^   rq   r=   numargsargnamesir   indirectionarglisttpresultwrappernamer   funcdeclresult_coder   s                  @r   _generate_gen_function_declz*VGenericEngine._generate_gen_function_decl   sl   "e344444; 	 $$UD"555Fzbg,, )) 	8 	8GAtK$ 344 "!OOG{A&667777"T)< < < <$'$:$:< < <9h 344 	'NN1h11%AABBBH))G$$."T)"";///6 	&3,CCC"%#{{{GGG< 4'X  733444S			bi!455 	!KKBIu~66 	#KKKkk44481D1D1D1DEFFFS			r   c                    t          |t          j                  sJ |j        r|                     d|||          }ng }|}t          d |j        D                       s t          |j        t          j                  r9g }t          |j                  D ]_\  }	}
t          |
t          j                  r+t          j
        |
          }
|                    |	|
f           |                    |
           `|j        }t          |t          j                  rz|j        %t          d|                                d          t          j
        |          }|                    d|           |                    dd|f           t          j        }t          j        t#          |          ||j                  }| j                            |          }d|z  }|                    ||          }|D ]\  }	}
|                     ||	|
|          }t-          |||           t/          |          j                            |           d S )NFc              3   J   K   | ]}t          |t          j                  V  d S r   )r   r   r   )r\   typs     r   	<genexpr>z6VGenericEngine._loaded_gen_function.<locals>.<genexpr>   s/      LLSJsE$788LLLLLLr   'z'' is used as result type, but is opaquer   r   r   )r   r   r   r   _load_constantanyr   r   r   r   PointerTyper   fldtypes	TypeError_get_c_namer   r   tupler   _get_cached_btypeload_function_make_struct_wrappersetattrr   rF   )r   r^   rq   rN   rP   newfunctionindirectionsbase_tpindirect_argsr   r   indirect_resultBFuncr   s                 r   _loaded_gen_functionz#VGenericEngine._loaded_gen_function   sa   "e344444; 	A--eRvFFKKLGLLBGLLLLL I!")U-@AAI "'00 . .FAs!#u':;; 6#/44$++QH555!((----"$)ou/BCC 6&/7'i,;,G,G,I,I,I,I)L M M M ',&7&H&HO!((O<<< ''Ho+FGGG&+oO*5+?+?+:BKI IH..r22E&-K ..ukBBK& A A3"77Q8?A A{+++W&&t,,,,,r   c                     | j         j        | j                             |          dk    r| j         fd}nfd}||_        |S )Nr   c                  P                                   } |g| R   |d         S Nr   )new)r   resBTyper   oldfuncs     r   newfuncz4VGenericEngine._make_struct_wrapper.<locals>.newfunc   s3    ggenn#d####1vr   c                  z    | d                               |                    fz   | dz   d          z   }  |  S )Nr   )newp)r   r   rY   r   r   s    r   r   z4VGenericEngine._make_struct_wrapper.<locals>.newfunc   sG    BQBx7<<tAw#?#?"AAD1JNw~%r   )r   rQ   r   _cffi_base_type)	r   r   r   r^   r   r   r   rY   r   s	    ``   @@@r   r   z#VGenericEngine._make_struct_wrapper   s    (#**2..==(C       
& & & & & & & & #*r   c                 N    ||j         k    sJ |                     |d|           d S Nstructrq   _generate_struct_or_union_declry   s      r   _generate_gen_struct_declz(VGenericEngine._generate_gen_struct_decl   s/    rw++B$?????r   c                 6    |                      |d||           d S r   _loading_struct_or_unionr   r^   rq   rN   s       r   _loading_gen_structz"VGenericEngine._loading_gen_struct   s"    %%b(D&AAAAAr   c                 0    |                      |           d S r   _loaded_struct_or_unionr|   s        r   _loaded_gen_structz!VGenericEngine._loaded_gen_struct       $$R(((((r   c                 N    ||j         k    sJ |                     |d|           d S Nunionr   ry   s      r   _generate_gen_union_declz'VGenericEngine._generate_gen_union_decl   s/    rw++B>>>>>r   c                 6    |                      |d||           d S r   r   r   s       r   _loading_gen_unionz!VGenericEngine._loading_gen_union   s"    %%b'4@@@@@r   c                 0    |                      |           d S r   r   r|   s        r   _loaded_gen_unionz VGenericEngine._loaded_gen_union  r   r   c           	         |j         d S d|d|}d|d|}|d|                                }| j        } |d|d|d            |d            |d	            |d
           |                                D ]\  }}	}
}t	          |	t
          j                  r|	                                s|
dk    r |d|z             J	  |d|	                    dd|z  |          d|d           w# t          $ r%} |dt          |          z             Y d }~d }~ww xY w |d           | j                            |            |d|d            |d            |d|z              |d            |d|z              |d           |                                D ]t\  }}	}
}|
dk    r |d|d|d           t	          |	t
          j                  r(|	j        ! |d|	                                z             b |d|d |d           u |d!            |d"            |d#            |d$            |d%|d&            |d            |             d S )'N_cffi_check_rj   _cffi_layout_rh   zstatic void r   z *p)r   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r   z  (void)((p->%s) << 1);z  { z*tmpzfield %r)qualsz = &p->z; (void)tmp; }z
  /* %s */r   z	intptr_t z(intptr_t i)z,  struct _cffi_aligncheck { char x; %s y; };z  static intptr_t nums[] = {z    sizeof(%s),z)    offsetof(struct _cffi_aligncheck, y),z    offsetof(r   z),z    0,  /* %s */z    sizeof(((z *)0)->z    -1z  };z  return nums[i];z3  /* the next line is not executed, but compiled */r   z(0);)fldnamesstripr/   
enumfieldsr   r   PrimitiveTypeis_integer_typer   r   strr   r   	ArrayTypelengthr   )r   r^   r>   rq   checkfuncnamelayoutfuncnamecnamer=   fnameftypefbitsizefqualru   s                r   r   z-VGenericEngine._generate_struct_or_union_decl  sd   ;F /5vvtt<17>"FFDD)0022zuuu=>>>S			GHHH\-/]]__ 	0 	0)E5(E5%"566 0))++008A.677770DD((E1A(OOOO         ) 0 0 0DA.////////0S			"">222...:;;;S			;eCDDD+,,,&'''8999-/]]__ 	D 	D)E5(E1}}DDEEE5559:::%11 Del6J'%*;*;*=*==>>>>UUUEEEBCCCCXV !!!BCCC===*+++S			s   +C88
D'D""D'c                    |j         d S d|d|}| j                            d          d         }|                    ||          }g }d}		  ||	          }
|
dk     rn|                    |
           |	dz  }	-t          |t          j                  r|j        r|d         }|d         }|dd d         }|dd d         }|	                                 t          |          t          |          cxk    rt          |j                   k    sn J ||||f|_        d S |d	|                                }||f| j        |<   d S )
Nr   rj   zintptr_t(*)(intptr_t)r   Tr      r4   rh   )r   r   _typeof_lockedr   r   r   r   r   partialforce_flattenr   fixedlayoutr   r   )r   r^   r>   rq   rN   r   r   functionlayoutnumx	totalsizetotalalignmentfieldofs	fieldsizer   s                   r   r   z'VGenericEngine._loading_struct_or_union7  s   ;F 17>''(?@@C''~>>	A1uueMM!1HC		
 b%-.. 	B2: 	B q	I#AYNadd|Hqt!tIx==C	NNFFFFc"+6F6FFFFFFF%y)^KBNNN &-4466E4:EMD-b111r   c                    |j         d S | j                            |           || j        v rAd }| j        }|                    |          }| j                            |          \  }} ||d         |                    |          d            ||d         |                    |          d           d}|                                D ]\  }}	}
}|
dk    r |||         |                    ||          d|           ||dz            dk    rA|                    |	          } |||dz            |                    |          d|           |dz  }|t          |          k    sJ d S d S )	Nc                 <    | |k    rt          d||| fz            d S )Nz'%s (we have %d, but C compiler says %d)r   )	realvalueexpectedvaluemsgs      r   checkz5VGenericEngine._loaded_struct_or_union.<locals>.checkZ  s9    --+Ay9:; ; ; .-r   r   zwrong total sizer   zwrong total alignmentr   zwrong offset for field zwrong size for field )
r   r   r   r   popsizeofalignofr   offsetofr   )r   r^   r  r   BStructr   r   r   r   r   r   r   BFields                r   r   z&VGenericEngine._loaded_struct_or_unionS  s   ;F""2&&&222; ; ;
 (C++B//G =AA"EEMFEE&)SZZ002DEEEE&)S[[113JKKKA13 	 	-uhq==fQigu!=!=!=5:U<> > >!A#;!## 22599FE&1+szz&'9'9'97<u>@ @ @QF####/ 32. $#r   c                     t          |t          j                  r|                     ||d           d S |                     |d|           d S Nr)   )r   r   EnumType_generate_gen_enum_declr   ry   s      r   _generate_gen_anonymous_declz+VGenericEngine._generate_gen_anonymous_declu  sR    b%.)) 	>((T266666//B=====r   c                     t          |t          j                  r|                     |||d           d S |                     |d||           d S r  )r   r   r  _loading_gen_enumr   r   s       r   _loading_gen_anonymousz%VGenericEngine._loading_gen_anonymous{  sW    b%.)) 	@""2tVR88888))"b$?????r   c                     t          |t          j                  r | j        |||fi | d S |                     |           d S r   )r   r   r  _loaded_gen_enumr   r|   s        r   _loaded_gen_anonymousz$VGenericEngine._loaded_gen_anonymous  sU    b%.)) 	-!D!"dF;;d;;;;;((,,,,,r   Nconstc                    | j         }d|d|}| j                            |           |R|sJ |dk    sJ  |d|z              |d           |                     ||            |d            |d           n|rK|dk    sJ  |d|z              |d            |d	|d
            |d|d            |d           n|J |J |dk    rd}nd}d}	|dk    rt	          |t
          j                  rd}	d} ||                    d|	|d|                      |d            |d||d
            |d            |             d S )N_cffi_rj   r  int %s(char *out_error)r     return 0;r   zint %s(long long *out_value)z  *out_value = (long long)(r   z
  return (z) <= 0;var&r)   zconst *rh   z(void))r/   r   r   _check_int_constant_valuer   r   r   r   )
r   is_intrq   r^   categorycheck_valuer=   funcname	ampersandextras
             r   r   z"VGenericEngine._generate_gen_const  s   z$,HHdd3""8,,,"MMMw&&&&D*X5666DIII**4===DDIIII 	w&&&&D/(:;;;DIIIDDddd<===DD$$$0111DIIII>>>&&&5  			E7""z"e6I'J'J"!	Dxxx@$GGHHHDIIIDDyy$$$7888DIIIr   c                     t          |t          j                  o|                                }|                     |||           d S r   )r   r   r   r   r   )r   r^   rq   r!  s       r   _generate_gen_constant_declz*VGenericEngine._generate_gen_constant_decl  sC    B 344M9K9K9M9M  r22222r   c                 B   d|z  }||sJ |                      ||           |}ny|r| j                            d          d         }| j                            d          d         }	|                    |	|          }
| j                            |          } |
|          }t          |d                   }|dk     rE|sC| j                            d          d         }|dd| j                            |          z  z  z  }n|J d}t          |t          j	                  rd	|z   }| j                            |
                    ||                    d         }	|                    |	|          }
 |
            }t          |t          j	                  r|d         }|S )
Nz_cffi_const_%sz
long long*r   zint(*)(long long*)z	long longr      z	(*)(void)r   )_load_known_int_constantr   r   r   r   intr	  r   r   r   r   )r   r!  r^   rq   rN   r#  r$  valuer   r   r   pnegative	BLongLongfntypeextras                  r   r   zVGenericEngine._load_constant  s   #d*"MMM))&(;;;EE 	!H++L99!<EH++,@AA!DE++E8<<HU##Ax{{H!IIEqyyy H33K@@C	!$(//)"<"< <=>&&&%K"e122 0!K/H++BMM+t,L,LMMaPE++E8<<HHJJE"e122 !ar   c                    t          |t          j                  o|                                }|                     ||||          }t          |||           t          |          j                            |           d S r   )	r   r   r   r   r   r   r   rF   r   )r   r^   rq   rN   rP   r!  r-  s          r   _loaded_gen_constantz#VGenericEngine._loaded_gen_constant  ss    B 344M9K9K9M9M##FBf==u%%%W&&t,,,,,r   c                 X   | j         }|dk    r |d|||fz             n |d|||fz              |d            |d|z              |d|z              |d            |d|z              |d	            |d
|d d         |fz              |d            |d           d S )Nr   z&  if ((%s) > 0 || (long)(%s) != %dL) {z1  if ((%s) <= 0 || (unsigned long)(%s) != %dUL) {z    char buf[64];z    if ((%s) <= 0)z)        sprintf(buf, "%%ld", (long)(%s));z    elsez2        sprintf(buf, "%%lu", (unsigned long)(%s));z:    sprintf(out_error, "%s has the real value %s, not %s",z            "%s", buf, "%d");d   z    return -1;z  })r/   )r   rq   r-  r=   s       r   r   z(VGenericEngine._check_int_constant_value  s,   zA::D9dE=# # $ $ $ $ DDdEH# # $ $ $ !!!!D()))84?@@@ZA 	 	 	IJJJ,TcT
E/BBCCCUr   c                    | j                             d          d         }| j                             d          d         }|                    ||          }| j                             |d          } ||          dk     rI| j                             |          }t
          j        dk    rt          |d          }t          |          d S )Nzchar[]r   zint(*)(char*)   r3   zutf-8)	r   r   r   r   stringr   r;   r   r   )r   rN   r$  r   r   r   r.  errors           r   r+  z'VGenericEngine._load_known_int_constant  s    ''11!4''88;''x88HLL$$8A;;??HOOA&&E4''E7++#E***	 ?r   c                 >    |                     dd          }d|d|S )N$___D__cffi_e_rj   )replace)r   r>   rq   s      r   _enum_funcnamezVGenericEngine._enum_funcname  s(    ||C))"(&&$$//r   enumc                    |j         r"|j        D ]}|                     d|           d S |                     ||          }| j                            |           | j        } |d|z              |d           t          |j        |j                  D ]\  }}| 	                    ||            |d            |d            |             d S )NTr  r   r  r   )
r   enumeratorsr   r?  r   r   r/   r   
enumvaluesr   )r   r^   rq   r>   
enumeratorr$  r=   	enumvalues           r   r  z&VGenericEngine._generate_gen_enum_decl  s    : 	 n ; ;
((z::::F&&vt44""8,,,z&1222S			%(%G%G 	B 	B!J	**:yAAAA]S			r   c                      j         r2 fdj        D             }t          |          _        d_        d S                      ||          }                     |           d S )Nc                 @    g | ]}                     d |          S )T)r   )r\   rD  rN   r   r^   s     r   r`   z4VGenericEngine._loading_gen_enum.<locals>.<listcomp>  s=     < < <( --dB
FKK < < <r   T)r   rB  r   rC  partial_resolvedr?  r+  )r   r^   rq   rN   r>   rC  r$  s   `` `   r   r  z VGenericEngine._loading_gen_enum  s    : 	<< < < < < <,.N< < <J!*--BM"&B**6488H))&(;;;;;r   c                     t          |j        |j                  D ]=\  }}t          |||           t	          |          j                            |           >d S r   )r   rB  rC  r   r   rF   r   )r   r^   rq   rN   rP   rD  rE  s          r   r  zVGenericEngine._loaded_gen_enum  s`    %(%G%G 	7 	7!J	GZ333MM#**:6666	7 	7r   c                 L    |dk    rd }n|}|                      d||           d S Nz...T)r#  )r   )r   r^   rq   r#  s       r   _generate_gen_macro_declz'VGenericEngine._generate_gen_macro_decl   s8    ;;KKK  t EEEEEr   c                     |dk    rd }n|}|                      d||||          }t          |||           t          |          j                            |           d S rK  )r   r   r   rF   r   )r   r^   rq   rN   rP   r#  r-  s          r   _loaded_gen_macroz VGenericEngine._loaded_gen_macro)  sq    ;;KKK##D"dF0; $ = =u%%%W&&t,,,,,r   c                    t          |t          j                  r|                                rY| j        }d|}| j                            |            |d|z              |d            |d|d            |d           t          j        |j                  }| 	                    d||           d S t          j        |          }| 	                    d||d	           d S )
N_cffi_sizeof_zsize_t %s(void)r   z  return sizeof(r   r   Fr  )r"  )
r   r   r   length_is_unknownr/   r   r   r   itemr   )r   r^   rq   r=   r$  tp_ptrs         r   _generate_gen_variable_declz*VGenericEngine._generate_gen_variable_decl6  s   b%/** 	J##%% z046#**8444&1222S			ttt5666S			&rw//F$$UD&99999&r**F$$UD&5$IIIIIr   c                    t          |t          j                  r|                                rd|}| j                            d          d         }|                    ||          } |            }| j                            |j                  }	t          || j        
                    |	                    \  }
}|dk    rt          d|d|j                  |                    |
          }t          j        |j                  }|                     d|||          }|j        5| j                            |          }| j                            ||          }t#          |||           t%          |          j                            |           d S d|z  }| j                            |                    d|                    d         }|                    ||          } |            fd	}fd
}t#          t%          |          |t-          ||                     t%          |          j                            |           d S )NrP  zsize_t(*)(void)r   z
bad size: z! does not seem to be an array of Fz_cffi_var_%sz
*(*)(void)c                     d         S r   r&   )rP   ptrs    r   getterz3VGenericEngine._loaded_gen_variable.<locals>.getterg  s    q6Mr   c                     |d<   d S r   r&   )rP   r-  rW  s     r   setterz3VGenericEngine._loaded_gen_variable.<locals>.setteri  s    CFFFr   )r   r   r   rQ  r   r   r   r   rR  divmodr	  r   resolve_lengthr   r   r   castr   r   rF   r   r   property)r   r^   rq   rN   rP   r$  r   r   size	BItemTyper   restrS  r-  BArrayrX  rZ  rW  s                    @r   _loaded_gen_variablez#VGenericEngine._loaded_gen_variableH  sP   b%/** 	##%% / /046//0ABB1E!//x@@xzz H66rw??	%dDHOOI,F,FGG199++rww() ) ) &&v..&rw//F''vtVDDE y$33B77fe44GT5)))MM#**4000F "D(''lD(I(IJJ1M''x88hjj	 	 	 	 		 	 	 	 	WtXff%=%=>>>W&&t,,,,,r   )r)   )r   )Nr  Nr   )r@  )5rI   rJ   rK   
_class_key_gen_python_moduler   r   r$   r'   r/   r@   rT   rf   r9   rU   rz   r}   _generate_gen_typedef_decl_loading_gen_typedef_loaded_gen_typedefr   _loading_gen_functionr   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r(  _loading_gen_constantr   r3  r   r+  r?  r  r  r  rL  _loading_gen_macrorN  rT  _loading_gen_variablerc  r&   r   r   r   r      s       J/ / /? ? ?$ $ $  # # # #> > >,   8           $5#/#/
+ + +Z )"- "- "-H  &@ @ @B B B) ) )? ? ?A A A) ) )/ / /bB B B8$ $ $D> > >@ @ @- - - CJ(,# # # #J3 3 3 )   8- - -  &	+ 	+ 	+0 0 0
   "< < < <7 7 7F F F &- - -J J J  )$- $- $- $- $-r   r   ac  
#include <stdio.h>
#include <stddef.h>
#include <stdarg.h>
#include <errno.h>
#include <sys/types.h>   /* XXX for ssize_t on some platforms */

/* this block of #ifs should be kept exactly identical between
   c/_cffi_backend.c, cffi/vengine_cpy.py, cffi/vengine_gen.py
   and cffi/_cffi_include.h */
#if defined(_MSC_VER)
# include <malloc.h>   /* for alloca() */
# if _MSC_VER < 1600   /* MSVC < 2010 */
   typedef __int8 int8_t;
   typedef __int16 int16_t;
   typedef __int32 int32_t;
   typedef __int64 int64_t;
   typedef unsigned __int8 uint8_t;
   typedef unsigned __int16 uint16_t;
   typedef unsigned __int32 uint32_t;
   typedef unsigned __int64 uint64_t;
   typedef __int8 int_least8_t;
   typedef __int16 int_least16_t;
   typedef __int32 int_least32_t;
   typedef __int64 int_least64_t;
   typedef unsigned __int8 uint_least8_t;
   typedef unsigned __int16 uint_least16_t;
   typedef unsigned __int32 uint_least32_t;
   typedef unsigned __int64 uint_least64_t;
   typedef __int8 int_fast8_t;
   typedef __int16 int_fast16_t;
   typedef __int32 int_fast32_t;
   typedef __int64 int_fast64_t;
   typedef unsigned __int8 uint_fast8_t;
   typedef unsigned __int16 uint_fast16_t;
   typedef unsigned __int32 uint_fast32_t;
   typedef unsigned __int64 uint_fast64_t;
   typedef __int64 intmax_t;
   typedef unsigned __int64 uintmax_t;
# else
#  include <stdint.h>
# endif
# if _MSC_VER < 1800   /* MSVC < 2013 */
#  ifndef __cplusplus
    typedef unsigned char _Bool;
#  endif
# endif
# define _cffi_float_complex_t   _Fcomplex    /* include <complex.h> for it */
# define _cffi_double_complex_t  _Dcomplex    /* include <complex.h> for it */
#else
# include <stdint.h>
# if (defined (__SVR4) && defined (__sun)) || defined(_AIX) || defined(__hpux)
#  include <alloca.h>
# endif
# define _cffi_float_complex_t   float _Complex
# define _cffi_double_complex_t  double _Complex
#endif
)
r   r   rV   r)   r   r9  r   objectr   r7   r&   r   r   <module>rn     s            $ $ $ $ $ $a	- a	- a	- a	- a	-V a	- a	- a	-F9r   