+
    ik                    	   R t ^ RIHt ^ RIHt ]'       g   R]9   d   ^RIH	t	 M^ RI	t	 ^ RI
tR tR tR tR	 t ! R
 R]4      t^ RIt]	P(                  t^ RIHtHtHt ^ RItR R ltR R ltR R ltR R ltR R ltR R ltR R lt R R lt!R R lt"]	PF                  t# R R  lt$R! R" lt%R# R$ lt&R% R& lt'R' R( lt(RrR) R* llt)R+ R, lt*R- R. lt+R/ R0 lt,R1 R2 lt-R3 R4 lt.R5 R6 lt/RsR7 R8 llt0RsR9 R: llt1R; R< lt2R= R> lt3R? R@ lt4RA RB lt5RC RD lt6RtRE RF llt7RuRG RH llt8]	Pr                  t9 RuRI RJ llt:RrRK RL llt;RM RN lt<RO RP lt=]	P|                  t> ]	P~                  t? ]	P                  t@ RQ RR ltARS RT ltBRU RV ltC ! RW RX]D4      tE]	P                  ! ]E4       ]	P                  tG ]	P                  tH ]	P                  tI ]	P                  tJ ]	P                  tK ]	P                  tL ]	P                  tM ]	P                  tN ]	P                  tO  ! RY RZ]D4      tP]	P                  ! ]P4       ]	P                  tR RuR[ R\ lltS]	P                  tT]	P                  tU]	P                  tV]	P                  tW]	P                  tX]	P                  tY]	P                  tZ]	P                  t[]	P                  t\]	P                  t]]	P                  t^]	P                  t_]	P                  t` ! R] R^]D4      ta]	P                  ! ]a4       R_ R` ltcRa Rb ltdRvRc Rd llte]	P                  tf ]	P                  tg ]	P                  th RwRe Rf lltiRg Rh ltjRi Rj ltk ! Rk Rl]D4      tl]	P                  ! ]l4        ^ RIntn^ RIoto ]oP                  ! ]oP                  ]oP                  ]oP                  4      ts]oP                  ! ]oP                  ]oP                  ]oP                  ]oP                  4      ! ]	P8                  ! 4       4      tv^tw  ^tx  ^ty   ! Rn Ro]D4      tz/ s{Rp t|RxRq lt}R#   ] d	    ^ RIt EL
i ; i   ]oP                  ! ]oP                  ]oP                  ]oP                  4      ts L; i   Rm tvRts Lw; i)ya  Functions that deal with C-like expressions and built-in IDC language.

Functions marked THREAD_SAFE may be called from any thread. No simultaneous calls should be made for the same variable. We protect only global structures, individual variables must be protected manually.
)annotations)version_info.)	_ida_exprNc                     R V P                   P                  4       ,           pRV P                  P
                  : RV P                  P                  : RV: R2#   \        P                   d    Rp LPi ; i)z	proxy of  <r   z; z >)this__repr____builtin__	Exception	__class__
__module____name__)selfstrthiss   & @C:\Users\user\Downloads\ida93sp2\portable_win\python\ida_expr.py
_swig_reprr      sg    		 2 2 44 "^^669     s   !A A43A4c                   a  V 3R  lpV# )c                  < VR 8X  d   S! WV4       R# VR8X  d   V P                   P                  V4       R# \        W4      '       d5   \        \	        \        V 4      V4      \        4      '       d   S! WV4       R# \        RV ,          4      h)r	   thisownz(You cannot add instance attributes to %sN)r	   ownhasattr
isinstancegetattrtypepropertyAttributeError)r   namevaluesets   &&&r   set_instance_attrE_swig_setattr_nondynamic_instance_variable.<locals>.set_instance_attr   su    6>E"YIIMM% T  ZT
D0I& &E" !K"       )r    r!   s   f r   *_swig_setattr_nondynamic_instance_variabler%      s    
 r#   c                   a  V 3R  lpV# )c                   < \        W4      '       d+   \        \        W4      \        4      '       g   S! WV4       R# \	        R V ,          4      h)z%You cannot add class attributes to %sN)r   r   r   r   r   )clsr   r   r    s   &&&r   set_class_attr?_swig_setattr_nondynamic_class_variable.<locals>.set_class_attr,   s:    3j1CX&N&N5! !H3!NOOr#   r$   )r    r)   s   f r   '_swig_setattr_nondynamic_class_variabler+   *   s    P
 r#   c                   a  V 3R lpV# )zlClass decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclassc                p   < S! V P                   V P                  V P                  P                  4       4      # N)r   	__bases____dict__copy)r(   	metaclasss   &r   wrapper$_swig_add_metaclass.<locals>.wrapper7   s'    s}}cll6G6G6IJJr#   r$   )r2   r3   s   f r   _swig_add_metaclassr5   4   s    KNr#   c                  >    ] tR t^<tRt]! ]P                  4      tRtR# )_SwigNonDynamicMetazKMeta class to enforce nondynamic attributes (no new attributes) for a classr$   N)	r   r   __qualname____firstlineno____doc__r+   r   __setattr____static_attributes__r$   r#   r   r7   r7   <   s    U9$:J:JKKr#   r7   )TupleListUnionc                    V ^8  d   QhRRRR/#    nonnul_linestrreturnr$   )formats   "r   __annotate__rG   G        3 3# 3 3r#   c                .    \         P                  ! V 4      # r.   )r   compile_idc_filerC   s   &r   rJ   rJ   G       %%k22r#   c                    V ^8  d   QhRRRR/# rA   r$   )rF   s   "r   rG   rG   K   rH   r#   c                .    \         P                  ! V 4      # r.   )r   compile_idc_textrK   s   &r   rO   rO   K   rL   r#   c                   V ^8  d   QhRR/# rB   rE   intr$   )rF   s   "r   rG   rG   O   s     , ,S ,r#   c                 ,    \         P                  ! 4       # r.   )r   py_get_call_idc_funcr$   r#   r   rT   rT   O   s    ))++r#   c               (    V ^8  d   QhRRRRRRRR/# )rB   r   rD   argspy_fp'PyObject *'rE   rR   r$   )rF   s   "r   rG   rG   S   s(     > > >3 >| >s >r#   c                0    \         P                  ! WV4      # r.   )r   pyw_register_idc_func)r   rV   rW   s   &&&r   rZ   rZ   S   s    **4u==r#   c                    V ^8  d   QhRRRR/# )rB   ctxptrrR   rE   boolr$   )rF   s   "r   rG   rG   W   s     5 5C 54 5r#   c                .    \         P                  ! V 4      # r.   )r   pyw_unregister_idc_func)r\   s   &r   r_   r_   W   s    ,,V44r#   c               $    V ^8  d   QhRRRRRR/# )rB   out'idc_values_t'py_seqrX   rE   r]   r$   )rF   s   "r   rG   rG   [   s!     6 6^ 6\ 6T 6r#   c                .    \         P                  ! W4      # r.   )r   pyw_convert_defvals)ra   rc   s   &&r   re   re   [   s    ((55r#   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )rB   r   rD   fp_ptrrR   rV   defvalsrb   flagsrE   r]   r$   )rF   s   "r   rG   rG   _   sA     I I# Is I# III"&Ir#   c                2    \         P                  ! WW#V4      # r.   )r   py_add_idc_func)r   rg   rV   rh   ri   s   &&&&&r   rk   rk   _   s    $$T4%HHr#   c               (    V ^8  d   QhRRRRRRRR/# rB   rv'idc_value_t'wherezida_idaapi.ea_tlinerD   rE   r$   )rF   s   "r   rG   rG   d   s(     0 0- 0 0s 0c 0r#   c                0    \         P                  ! WV4      # )au  Compile and calculate an expression. 
        
:param rv: pointer to the result
:param where: the current linear address in the addressing space of the program being disassembled. If will be used to resolve names of local variables etc. if not applicable, then should be BADADDR.
:param line: the expression to evaluate
:returns: true: ok
:returns: false: error, see errbuf)r   	eval_exprrn   rp   rq   s   &&&r   rs   rs   d   s     r$//r#   c               (    V ^8  d   QhRRRRRRRR/# rm   r$   )rF   s   "r   rG   rG   o   s(     4 4m 4O 43 4# 4r#   c                0    \         P                  ! WV4      # )zuSame as eval_expr(), but will always use the IDC interpreter regardless of the currently installed extlang. 
        )r   eval_idc_exprrt   s   &&&r   rw   rw   o   s     ""2d33r#   c                    V ^8  d   QhRRRR/# rB   vro   rE   	'error_t'r$   )rF   s   "r   rG   rG   z   s     " " ") "r#   c                .    \         P                  ! V 4      # )zmConvert IDC variable to a long (32/64-bit) number. 
        
:returns: v = 0 if impossible to convert to long)r   	idcv_longrz   s   &r   r}   r}   z   s     q!!r#   c                    V ^8  d   QhRRRR/# ry   r$   )rF   s   "r   rG   rG      s     # #- #9 #r#   c                .    \         P                  ! V 4      # )zdConvert IDC variable to a 64-bit number. 
        
:returns: v = 0 if impossible to convert to int64)r   
idcv_int64r~   s   &r   r   r      s     ""r#   c                    V ^8  d   QhRRRR/# ry   r$   )rF   s   "r   rG   rG      s     ! ! ! !r#   c                .    \         P                  ! V 4      # )zConvert IDC variable to a long number. 
        
:returns: * v = 0 if IDC variable = "false" string
* v = 1 if IDC variable = "true" string
* v = number if IDC variable is number or string containing a number
* eTypeConflict if IDC variable = empty string)r   idcv_numr~   s   &r   r   r      s     a  r#   c                    V ^8  d   QhRRRR/# ry   r$   )rF   s   "r   rG   rG      s     $ $= $I $r#   c                .    \         P                  ! V 4      # )z'Convert IDC variable to a text string.
)r   idcv_stringr~   s   &r   r   r      s       ##r#   c                    V ^8  d   QhRRRR/# ry   r$   )rF   s   "r   rG   rG      s     # #- #9 #r#   c                .    \         P                  ! V 4      # )z*Convert IDC variable to a floating point.
)r   
idcv_floatr~   s   &r   r   r      s     ""r#   c               $    V ^8  d   QhRRRRRR/# )rB   rz   ro   icls'idc_class_t const *'rE   r{   r$   )rF   s   "r   rG   rG      s#     * *= *(= **r#   c                .    \         P                  ! W4      # )a3  Create an IDC object. The original value of 'v' is discarded (freed). 
        
:param v: variable to hold the object. any previous value will be cleaned
:param icls: ptr to the desired class. nullptr means "object" class this ptr must be returned by add_idc_class() or find_idc_class()
:returns: always eOk)r   idcv_object)rz   r   s   &&r   r   r      s       ))r#   c               $    V ^8  d   QhRRRRRR/# rB   dstro   srcrE   r{   r$   )rF   s   "r   rG   rG      !     ) )= )} )	 )r#   c                .    \         P                  ! W4      # )zxMove 'src' to 'dst'. This function is more effective than copy_idcv since it never copies big amounts of data. 
        )r   	move_idcvr   r   s   &&r   r   r           s((r#   c               $    V ^8  d   QhRRRRRR/# r   r$   )rF   s   "r   rG   rG      r   r#   c                .    \         P                  ! W4      # )zJCopy 'src' to 'dst'. For idc objects only a reference is copied. 
        )r   	copy_idcvr   s   &&r   r   r      r   r#   c               $    V ^8  d   QhRRRRRR/# r   r$   )rF   s   "r   rG   rG      s!     . . .M .Y .r#   c                .    \         P                  ! W4      # )zDeep copy an IDC object. This function performs deep copy of idc objects. If 'src' is not an object, copy_idcv() will be called 
        )r   deep_copy_idcvr   s   &&r   r   r      s     ##C--r#   c                    V ^8  d   QhRRRR/# rB   rz   ro   rE   Noner$   )rF   s   "r   rG   rG      s     " " "$ "r#   c                .    \         P                  ! V 4      # )znFree storage used by VT_STR/VT_OBJ IDC variables. After this call the variable has a numeric value 0 
        )r   	free_idcvr~   s   &r   r   r      s     q!!r#   c               $    V ^8  d   QhRRRRRR/# )rB   v1ro   v2rE   r   r$   )rF   s   "r   rG   rG      s!     ( (= (m (t (r#   c                .    \         P                  ! W4      # )zSwap 2 variables.
)r   
swap_idcvs)r   r   s   &&r   r   r      s     ''r#   c                    V ^8  d   QhRRRR/# rB   objro   rE   rD   r$   )rF   s   "r   rG   rG      s     . .] .c .r#   c                .    \         P                  ! V 4      # )zwRetrieves the IDC object class name. 
        
:param obj: class instance variable
:returns: error code, eOk on success)r   get_idcv_class_namer   s   &r   r   r      s    
 ((--r#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rB   resro   r   attrrD   may_use_getattrr]   rE   r{   r$   )rF   s   "r   rG   rG      s8     	D 	D} 	D= 	D 	D	D#,	Dr#   c                0    \         P                  ! WW#4      # )aj  Get an object attribute. 
        
:param res: buffer for the attribute value
:param obj: variable that holds an object reference. if obj is nullptr it searches global variables, then user functions
:param attr: attribute name
:param may_use_getattr: may call getattr functions to calculate the attribute if it does not exist
:returns: error code, eOk on success)r   get_idcv_attr)r   r   r   r   s   &&&&r   r   r      s     ""3TCCr#   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rB   r   ro   r   rD   r   may_use_setattrr]   rE   r{   r$   )rF   s   "r   rG   rG      s8     	F 	F} 	FC 	F 	F	F#,	Fr#   c                0    \         P                  ! WW#4      # )aO  Set an object attribute. 
        
:param obj: variable that holds an object reference. if obj is nullptr then it tries to modify a global variable with the attribute name
:param attr: attribute name
:param value: new attribute value
:param may_use_setattr: may call setattr functions for the class
:returns: error code, eOk on success)r   set_idcv_attr)r   r   r   r   s   &&&&r   r   r      s     ""3eEEr#   c               $    V ^8  d   QhRRRRRR/# )rB   r   ro   r   rD   rE   r{   r$   )rF   s   "r   rG   rG      s!     . .} .C .9 .r#   c                .    \         P                  ! W4      # )zDelete an object attribute. 
        
:param obj: variable that holds an object reference
:param attr: attribute name
:returns: error code, eOk on success)r   del_idcv_attrr   r   s   &&r   r   r      s     ""3--r#   c                    V ^8  d   QhRRRR/# r   r$   )rF   s   "r   rG   rG      s     * * *# *r#   c                .    \         P                  ! V 4      # r.   )r   first_idcv_attrr   s   &r   r   r      s    $$S))r#   c                    V ^8  d   QhRRRR/# r   r$   )rF   s   "r   rG   rG      s     ) ) ) )r#   c                .    \         P                  ! V 4      # r.   )r   last_idcv_attrr   s   &r   r   r      s    ##C((r#   c               $    V ^8  d   QhRRRRRR/# rB   r   ro   r   rD   rE   r$   )rF   s   "r   rG   rG      !     / / /S /C /r#   c                .    \         P                  ! W4      # r.   )r   next_idcv_attrr   s   &&r   r   r          ##C..r#   c               $    V ^8  d   QhRRRRRR/# r   r$   )rF   s   "r   rG   rG      r   r#   c                .    \         P                  ! W4      # r.   )r   prev_idcv_attrr   s   &&r   r   r      r   r#   c               (    V ^8  d   QhRRRRRRRR/# )rB   rz   ro   r   rD   indentrR   rE   r$   )rF   s   "r   rG   rG      s(     1 1- 1s 1 1# 1r#   c                0    \         P                  ! WV4      # )z(Get text representation of idc_value_t.
)r   
print_idcv)rz   r   r   s   &&&r   r   r      s     00r#   c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
rB   r   ro   rz   i1rR   i2ri   rE   r{   r$   )rF   s   "r   rG   rG     s8     
; 
; 
;- 
;S 
;c 
;
;
;r#   c                2    \         P                  ! WW#V4      # )a   Get slice. 
        
:param res: output variable that will contain the slice
:param v: input variable (string or object)
:param i1: slice start index
:param i2: slice end index (excluded)
:param flags: IDC variable slice flags or 0
:returns: eOk if success)r   get_idcv_slice)r   rz   r   r   ri   s   &&&&&r   r   r     s     ##CBE::r#   c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
rB   rz   ro   r   rR   r   _inri   rE   r{   r$   )rF   s   "r   rG   rG     s8     	; 	;m 	; 	;# 	;M 	;	;	;r#   c                2    \         P                  ! WW#V4      # )zSet slice. 
        
:param v: variable to modify (string or object)
:param i1: slice start index
:param i2: slice end index (excluded)
:param flags: IDC variable slice flags or 0
:returns: eOk on success)r   set_idcv_slice)rz   r   r   r   ri   s   &&&&&r   r   r     s     ##A2E::r#   c               $    V ^8  d   QhRRRRRR/# )rB   r   rD   superr   rE   'idc_class_t *'r$   )rF   s   "r   rG   rG   #  s#     0 0 0$9 00r#   c                .    \         P                  ! W4      # )aa  Create a new IDC class. 
        
:param name: name of the new class
:param super: the base class for the new class. if the new class is not based on any other class, pass nullptr
:returns: pointer to the created class. If such a class already exists, a pointer to it will be returned. Pointers to other existing classes may be invalidated by this call.)r   add_idc_class)r   r   s   &&r   r   r   #  s     ""4//r#   c                    V ^8  d   QhRRRR/# )rB   r   rD   rE   r   r$   )rF   s   "r   rG   rG   -  s     * * * *r#   c                .    \         P                  ! V 4      # )zFind an existing IDC class by its name. 
        
:param name: name of the class
:returns: pointer to the class or nullptr. The returned pointer is valid until a new call to add_idc_class())r   find_idc_classr   s   &r   r   r   -  s    
 ##D))r#   c               $    V ^8  d   QhRRRRRR/# )rB   rz   ro   
vref_flagsrR   rE   'idc_value_t *'r$   )rF   s   "r   rG   rG   5  s!     / /- /S /O /r#   c                .    \         P                  ! W4      # )a  Dereference a VT_REF variable. 
        
:param v: variable to dereference
:param vref_flags: Dereference IDC variable flags
:returns: pointer to the dereference result or nullptr. If returns nullptr, qerrno is set to eExecBadRef "Illegal variable reference")r   
deref_idcv)rz   r   s   &&r   r   r   5  s     ..r#   c               $    V ^8  d   QhRRRRRR/# )rB   refro   rz   rE   r]   r$   )rF   s   "r   rG   rG   I  s!     - - -= -D -r#   c                .    \         P                  ! W4      # )zCreate a variable reference. Currently only references to global variables can be created. 
        
:param ref: ptr to the result
:param v: variable to reference
:returns: success)r   create_idcv_ref)r   rz   s   &&r   r   r   I  s     $$S,,r#   c                    V ^8  d   QhRRRR/# rB   r   rD   rE   r   r$   )rF   s   "r   rG   rG   R  s     ( (s (o (r#   c                .    \         P                  ! V 4      # )zAdd global IDC variable. 
        
:param name: name of the global variable
:returns: pointer to the created variable or existing variable. NB: the returned pointer is valid until a new global var is added.)r   add_idc_gvarr   s   &r   r   r   R  s    
 !!$''r#   c                    V ^8  d   QhRRRR/# r   r$   )rF   s   "r   rG   rG   Z  s     ) ) ) )r#   c                .    \         P                  ! V 4      # )a  Find an existing global IDC variable by its name. 
        
:param name: name of the global variable
:returns: pointer to the variable or nullptr. NB: the returned pointer is valid until a new global var is added. FIXME: it is difficult to use this function in a thread safe manner)r   find_idc_gvarr   s   &r   r   r   Z  s    
 ""4((r#   c                  L   ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&    ]! ]P                  ]P                  4      tR]R	&    ]! ]P                   ]P"                  4      tR
]R&    ]! ]P&                  ]P(                  4      tR]R&   ]! ]P,                  ]P.                  4      tR]R&    ]! ]P2                  ]P4                  4      tR]R&    ]! ]P8                  ]P:                  4      tR]R&    ]! ]P>                  ]P@                  4      t!R]R&    R t"]PF                  t$R R lt%R R lt&R R lt'R R lt(R R lt)R  R! lt*R" R# lt+R$ R% lt,R& R' lt-R( R) lt.R* R+ lt/R, R- lt0R. R/ lt1R0 R1 lt2R2 R3 lt3]! R4 R5 4      t4R6t5R7# )8idc_value_tib  c                	6    V P                   P                  4       # r.   r	   r   xs   &r   <lambda>idc_value_t.<lambda>c      r#   c                	8    V P                   P                  V4      # r.   r   r   rz   s   &&r   r   r   c      AFFJJqMr#   The membership flagdocz'char'vtyperR   numz'fpvalue_t'ez'idc_object_t *'r   funcidx'void *'pvoid'int64'i64z'uchar [sizeof(qstring)]'reservec                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   idc_value_t_swiginitnew_idc_value_tr   rV   s   &*r   __init__idc_value_t.__init__  s    &&tY-F-F-MNr#   c                   V ^8  d   QhRR/# rB   rE   r   r$   )rF   s   "r   rG   idc_value_t.__annotate__  s     1 1d 1r#   c                .    \         P                  ! V 4      # )zSee free_idcv()
)r   idc_value_t_clearr   s   &r   clearidc_value_t.clear       **400r#   c                   V ^8  d   QhRR/# rB   rE   rD   r$   )rF   s   "r   rG   r    s     0 0S 0r#   c                .    \         P                  ! V 4      # zVT_STR
)r   idc_value_t_qstrr  s   &r   qstridc_value_t.qstr  s     ))$//r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     1 1c 1r#   c                .    \         P                  ! V 4      # r  )r   idc_value_t_c_strr  s   &r   c_stridc_value_t.c_str  r  r#   c                   V ^8  d   QhRR/# )rB   rE   z'uchar const *'r$   )rF   s   "r   rG   r    s     1 1o 1r#   c                .    \         P                  ! V 4      # r  )r   idc_value_t_u_strr  s   &r   u_stridc_value_t.u_str  r  r#   c                    V ^8  d   QhRRRR/# r   r$   )rF   s   "r   rG   r    s     3 3m 3t 3r#   c                .    \         P                  ! W4      # )zSet this = r and v = this.
)r   idc_value_t_swapr   rz   s   &&r   swapidc_value_t.swap  s     ))$22r#   c                   V ^8  d   QhRR/# rB   rE   r]   r$   )rF   s   "r   rG   r    s     3 3 3r#   c                .    \         P                  ! V 4      # )z$Does value represent the integer 0?
)r   idc_value_t_is_zeror  s   &r   is_zeroidc_value_t.is_zero  s     ,,T22r#   c                   V ^8  d   QhRR/# r1  r$   )rF   s   "r   rG   r    s     7 7D 7r#   c                .    \         P                  ! V 4      # )z.Does value represent a whole number? 
        )r   idc_value_t_is_integralr  s   &r   is_integralidc_value_t.is_integral  s     0066r#   c                   V ^8  d   QhRR/# r1  r$   )rF   s   "r   rG   r    s     : :t :r#   c                .    \         P                  ! V 4      # )z?Convertible types are VT_LONG, VT_FLOAT, VT_INT64, and VT_STR.
)r   idc_value_t_is_convertibler  s   &r   is_convertibleidc_value_t.is_convertible  s     33D99r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     @ @T @r#   c                	.    \         P                  ! V 4      # r.   )r    idc_value_t__create_empty_stringr  s   &r   _create_empty_string idc_value_t._create_empty_string  s    99$??r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     ? ?D ?r#   c                	.    \         P                  ! V 4      # r.   )r   idc_value_t_create_empty_stringr  s   &r   create_empty_stringidc_value_t.create_empty_string  s    88>>r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     = =$ =r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_value_t_set_stringr  s   &*r   
set_stringidc_value_t.set_string      //<t<<r#   c                    V ^8  d   QhRRRR/# )rB   rz   rR   rE   r   r$   )rF   s   "r   rG   r    s     7 7# 7 7r#   c                	.    \         P                  ! W4      # r.   )r   idc_value_t_set_longr-  s   &&r   set_longidc_value_t.set_long  s    --d66r#   c                    V ^8  d   QhRRRR/# )rB   pr  rE   r   r$   )rF   s   "r   rG   r    s     8 88 8t 8r#   c                	.    \         P                  ! W4      # r.   )r   idc_value_t_set_pvoid)r   rV  s   &&r   	set_pvoididc_value_t.set_pvoid      ..t77r#   c                    V ^8  d   QhRRRR/# )rB   rz   r  rE   r   r$   )rF   s   "r   rG   r    s     8 87 8d 8r#   c                	.    \         P                  ! W4      # r.   )r   idc_value_t_set_int64r-  s   &&r   	set_int64idc_value_t.set_int64  r[  r#   c                    V ^8  d   QhRRRR/# )rB   fz'fpvalue_t const &'rE   r   r$   )rF   s   "r   rG   r    s     8 8. 8$ 8r#   c                	.    \         P                  ! W4      # r.   )r   idc_value_t_set_float)r   rb  s   &&r   	set_floatidc_value_t.set_float  r[  r#   c                	"    V P                  4       # r.   )r#  r  s   &r   r   r     s
    

r#   c                	$    V P                  V4      # r.   )rM  r-  s   &&r   r   r     s    d
1?r#   r$   N)6r   r   r8   r9   r   r   r   r
   r   idc_value_t_vtype_getidc_value_t_vtype_setr  __annotations__idc_value_t_num_getidc_value_t_num_setr  idc_value_t_e_getidc_value_t_e_setr  idc_value_t_obj_getidc_value_t_obj_setr   idc_value_t_funcidx_getidc_value_t_funcidx_setr  idc_value_t_pvoid_getidc_value_t_pvoid_setr  idc_value_t_i64_getidc_value_t_i64_setr  idc_value_t_reserve_getidc_value_t_reserve_setr	  r  delete_idc_value_t__swig_destroy__r  r  r#  r(  r.  r4  r9  r>  rC  rH  rM  rS  rY  r_  re  rD   r<   r$   r#   r   r   r   b  s   -/I!#GHY<<iE6 	55yC i999A{ $Y%B%B%%'C	 'I==y!GS !y>>	E8 I999C )1)!B!B*DG& DO 331
0
1
1
3
3
7
:
@?=7888
, / Cr#   r   c                      ] tR tRt$ ]! R R RR7      t]t]! ]P                  ]P                  4      tR]R&   ]! ]P                  ]P                  4      tR]R	&   R
 t]P"                  tRtR# )idc_global_ti  c                	6    V P                   P                  4       # r.   r   r   s   &r   r   idc_global_t.<lambda>  r   r#   c                	8    V P                   P                  V4      # r.   r   r   s   &&r   r   r    r   r#   r   r   rD   r   ro   r   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   idc_global_t_swiginitnew_idc_global_tr  s   &*r   r  idc_global_t.__init__      ''i.H.H$.O 	r#   r$   N)r   r   r8   r9   r   r   r   r
   r   idc_global_t_name_getidc_global_t_name_setr   rk  idc_global_t_value_getidc_global_t_value_setr   r  delete_idc_global_tr{  r<   r$   r#   r   r}  r}    sp    -/I!#GH88)D# #I$D$D((*E= * !44r#   r}  c               $    V ^8  d   QhRRRRRR/# )rB   prefixrD   nrR   rE   r$   )rF   s   "r   rG   rG     s!     . .# .# .3 .r#   c                .    \         P                  ! W4      # r.   )r   find_idc_func)r  r  s   &&r   r  r    s    ""6--r#   c                      ] tR tRt]! R R RR7      t]t]P                  t
R R ltR R	 ltR
 R ltR R ltR tR tRtR# )highlighter_cbs_ti  c                	6    V P                   P                  4       # r.   r   r   s   &r   r   highlighter_cbs_t.<lambda>  r   r#   c                	8    V P                   P                  V4      # r.   r   r   s   &&r   r   r    r   r#   r   r   c               (    V ^8  d   QhRRRRRRRR/# )rB   arg0rR   arg1arg2z'syntax_highlight_style'rE   r   r$   )rF   s   "r   rG   highlighter_cbs_t.__annotate__  s0     M Mc M M4L MMr#   c                	0    \         P                  ! WW#4      # r.   )r   highlighter_cbs_t_set_style)r   r  r  r  s   &&&&r   	set_stylehighlighter_cbs_t.set_style  s    44TLLr#   c                   V ^8  d   QhRR/# rQ   r$   )rF   s   "r   rG   r    s     B B Br#   c                	.    \         P                  ! V 4      # r.   )r   "highlighter_cbs_t_prev_block_stater  s   &r   prev_block_state"highlighter_cbs_t.prev_block_state  s    ;;DAAr#   c                   V ^8  d   QhRR/# rQ   r$   )rF   s   "r   rG   r    s     A A Ar#   c                	.    \         P                  ! V 4      # r.   )r   !highlighter_cbs_t_cur_block_stater  s   &r   cur_block_state!highlighter_cbs_t.cur_block_state  s    ::4@@r#   c                    V ^8  d   QhRRRR/# )rB   r  rR   rE   r   r$   )rF   s   "r   rG   r    s     G GC G4 Gr#   c                	.    \         P                  ! W4      # r.   )r   !highlighter_cbs_t_set_block_state)r   r  s   &&r   set_block_state!highlighter_cbs_t.set_block_state  s    ::4FFr#   c                	    V P                   \        8X  d   R pMT p\        P                  ! V \        P                  ! V4      4       R # r.   )r   r  r   highlighter_cbs_t_swiginitnew_highlighter_cbs_t)r   _selfs   & r   r  highlighter_cbs_t.__init__"  s>    >>..EE,,T9!!4""'4) 	*r#   c                	    V P                   P                  4        \        P                  ! V 4       \        P
                  ! V 4      # r.   )r	   disownr   disown_highlighter_cbs_tweakrefproxyr  s   &r   
__disown__highlighter_cbs_t.__disown__*  s/    		**40}}T""r#   r$   N)r   r   r8   r9   r   r   r   r
   r   delete_highlighter_cbs_tr{  r  r  r  r  r  r  r<   r$   r#   r   r  r    sH    -/I!#GH 99MBAG*#r#   r  c               $    V ^8  d   QhRRRRRR/# )rB   pathrD   addr]   rE   r$   )rF   s   "r   rG   rG   3  s!     0 0# 0D 0D 0r#   c                .    \         P                  ! W4      # )aY  Set or append a header path. IDA looks for the include files in the appended header paths, then in the ida executable directory. 
        
:param path: list of directories to add (separated by ';') may be nullptr, in this case nothing is added
:param add: true: append. false: remove old paths.
:returns: true: success
:returns: false: no memory)r   set_header_path)r  r  s   &&r   r  r  3  s     $$T//r#   c                    V ^8  d   QhRRRR/# )rB   filerD   rE   r$   )rF   s   "r   rG   rG   =  s     , ,3 ,# ,r#   c                .    \         P                  ! V 4      # )zGet full name of IDC file name. Search for file in list of include directories, IDCPATH directory and system directories. 
        
:param file: file name without full path
:returns: nullptr is file not found. otherwise returns pointer to buf)r   get_idc_filename)r  s   &r   r  r  =  s    
 %%d++r#   c               $    V ^8  d   QhRRRRRR/# )rB   r  rD   complain_if_no_filer]   rE   r$   )rF   s   "r   rG   rG   E  s&     C CS Ct CD Cr#   c                .    \         P                  ! W4      # )a  Compile and execute "main" function from system file. 
        
:param file: file name with IDC function(s). The file will be searched using get_idc_filename().
:param complain_if_no_file: * 1: display warning if the file is not found
* 0: don't complain if file doesn't exist
:returns: 1: ok, file is compiled and executed
:returns: 0: failure, compilation or execution error, warning is displayed)r   exec_system_script)r  r  s   &&r   r  r  E  s     ''BBr#   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	rB   funcrD   textresolverz'idc_resolver_t *'only_safe_funcsr]   rE   r$   )rF   s   "r   rG   rG   [  s9     
P 
Pc 
P 
P8J 
P
P),
Pr#   c                0    \         P                  ! WW#4      # )a  Compile text with IDC statements. 
        
:param func: name of the function to create out of the snippet
:param text: text to compile
:param resolver: callback object to get values of undefined variables This object will be called if IDC function contains references to undefined variables. May be nullptr.
:param only_safe_funcs: if true, any calls to functions without EXTFUN_SAFE flag will lead to a compilation error.
:returns: true: ok
:returns: false: error, see errbuf)r   compile_idc_snippet)r  r  r  r  s   &&&&r   r  r  [  s     ((XOOr#   c               0    V ^8  d   QhRRRRRRRRRRR	R/# )
rB   resultro   r  rD   r  rV   argsnumrR   rE   r$   )rF   s   "r   rG   rG   h  sA     H HM H HC HHH#&Hr#   c                2    \         P                  ! WW#V4      # )aA  Compile and execute IDC function(s) from file. 
        
:param result: ptr to idc_value_t to hold result of the function. If execution fails, this variable will contain the exception information. You may pass nullptr if you are not interested in the returned value.
:param path: text file containing text of IDC functions
:param func: function name to execute
:param args: array of parameters
:param argsnum: number of parameters to pass to 'fname' This number should be equal to number of parameters the function expects.
:returns: true: ok
:returns: false: error, see errbuf)r   exec_idc_script)r  r  r  rV   r  s   &&&&&r   r  r  h  s     $$V4wGGr#   c               $    V ^8  d   QhRRRRRR/# )rB   rro   descrD   rE   r{   r$   )rF   s   "r   rG   rG   v  s!     2 2= 2 2y 2r#   c                .    \         P                  ! W4      # )a}  Create an idc execution exception object. This helper function can be used to return an exception from C++ code to IDC. In other words this function can be called from idc_func_t() callbacks. Sample usage: if ( !ok ) return throw_idc_exception(r, "detailed error msg"); 
        
:param r: object to hold the exception object
:param desc: exception description
:returns: eExecThrow)r   throw_idc_exception)r  r  s   &&r   r  r  v  s     ((11r#   c                     ] tR tRt]! R R RR7      t]tR t]	P                  tR R ltR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR) R* ltR+ R, ltR- R. ltR/ R0 lt R1 R2 lt!R3 R4 lt"R5 R6 lt#]$PJ                  t&]$PN                  t(]$PR                  t*R7t+R8# )9idc_values_ti  c                	6    V P                   P                  4       # r.   r   r   s   &r   r   idc_values_t.<lambda>  r   r#   c                	8    V P                   P                  V4      # r.   r   r   s   &&r   r   r    r   r#   r   r   c                	X    \         P                  ! V \         P                  ! V!  4       R # r.   )r   idc_values_t_swiginitnew_idc_values_tr  s   &*r   r  idc_values_t.__init__  r  r#   c                   V ^8  d   QhRR/# )rB   rE   z'idc_value_t &'r$   )rF   s   "r   rG   idc_values_t.__annotate__  s     = = =r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_push_backr  s   &*r   	push_backidc_values_t.push_back  rO  r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r         5 5 5r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_pop_backr  s   &r   pop_backidc_values_t.pop_back      ..t44r#   c                   V ^8  d   QhRR/# rQ   r$   )rF   s   "r   rG   r    s     1 1S 1r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_sizer  s   &r   sizeidc_values_t.size  s    **400r#   c                   V ^8  d   QhRR/# r1  r$   )rF   s   "r   rG   r         2 2d 2r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_emptyr  s   &r   emptyidc_values_t.empty      ++D11r#   c                    V ^8  d   QhRRRR/# )rB   _idxrR   rE   'idc_value_t const &'r$   )rF   s   "r   rG   r    s     5 5s 53 5r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t_at)r   r  s   &&r   atidc_values_t.at  s    ((44r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     3 3t 3r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_qclearr  s   &r   qclearidc_values_t.qclear  s    ,,T22r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_clearr  s   &r   r  idc_values_t.clear  r  r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     : :d :r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_resizer  s   &*r   resizeidc_values_t.resize  s    ,,T9D99r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    s     8 8D 8r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_growr  s   &*r   growidc_values_t.grow  s    **47$77r#   c                   V ^8  d   QhRR/# rQ   r$   )rF   s   "r   rG   r    s     5 5 5r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_capacityr  s   &r   capacityidc_values_t.capacity  r  r#   c                    V ^8  d   QhRRRR/# )rB   cntrR   rE   r   r$   )rF   s   "r   rG   r    s     9 93 9$ 9r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t_reserve)r   r  s   &&r   r	  idc_values_t.reserve  s    --d88r#   c                   V ^8  d   QhRR/# r  r$   )rF   s   "r   rG   r    r  r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_truncater  s   &r   truncateidc_values_t.truncate  r  r#   c                    V ^8  d   QhRRRR/# )rB   r  rb   rE   r   r$   )rF   s   "r   rG   r    s     4 4n 4 4r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t_swap)r   r  s   &&r   r.  idc_values_t.swap  s    **433r#   c                   V ^8  d   QhRR/# )rB   rE   r   r$   )rF   s   "r   rG   r    s     4 4 4r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t_extractr  s   &r   extractidc_values_t.extract      --d33r#   c               $    V ^8  d   QhRRRRRR/# )rB   sro   lenrR   rE   r   r$   )rF   s   "r   rG   r    s!     ; ; ;C ;4 ;r#   c                	0    \         P                  ! WV4      # r.   )r   idc_values_t_inject)r   r.  r/  s   &&&r   injectidc_values_t.inject  s    ,,Tc::r#   c                   V ^8  d   QhRR/# rB   rE   z('qvector< idc_value_t >::const_iterator'r$   )rF   s   "r   rG   r    s     9 9E 9r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_beginr  s   &*r   beginidc_values_t.begin      ++D8488r#   c                   V ^8  d   QhRR/# r5  r$   )rF   s   "r   rG   r    s     7 7C 7r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_endr  s   &*r   endidc_values_t.end  s    ))$666r#   c               $    V ^8  d   QhRRRRRR/# )rB   itro   r   rE   "'qvector< idc_value_t >::iterator'r$   )rF   s   "r   rG   r    s"     : : := :.:r#   c                	0    \         P                  ! WV4      # r.   )r   idc_values_t_insert)r   rA  r   s   &&&r   insertidc_values_t.insert  s    ,,Tq99r#   c                   V ^8  d   QhRR/# )rB   rE   rB  r$   )rF   s   "r   rG   r    s     9 9? 9r#   c                	2    \         P                  ! V .VO5!  # r.   )r   idc_values_t_eraser  s   &*r   eraseidc_values_t.erase  r:  r#   c                   V ^8  d   QhRR/# rQ   r$   )rF   s   "r   rG   r    s     4 4 4r#   c                	.    \         P                  ! V 4      # r.   )r   idc_values_t___len__r  s   &r   __len__idc_values_t.__len__  r,  r#   c                    V ^8  d   QhRRRR/# )rB   irR   rE   r  r$   )rF   s   "r   rG   r    s     ; ;S ;$9 ;r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t___getitem__)r   rR  s   &&r   __getitem__idc_values_t.__getitem__  s    11$::r#   c               $    V ^8  d   QhRRRRRR/# )rB   rR  rR   rz   ro   rE   r   r$   )rF   s   "r   rG   r    s!     > >S >] >d >r#   c                	0    \         P                  ! WV4      # r.   )r   idc_values_t___setitem__)r   rR  rz   s   &&&r   __setitem__idc_values_t.__setitem__  s    11$1==r#   c                    V ^8  d   QhRRRR/# )rB   r   ro   rE   r   r$   )rF   s   "r   rG   r    s     6 6 6 6r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t_appendr   r   s   &&r   appendidc_values_t.append      ,,T55r#   c                    V ^8  d   QhRRRR/# )rB   r   rb   rE   r   r$   )rF   s   "r   rG   r    s     6 6 6$ 6r#   c                	.    \         P                  ! W4      # r.   )r   idc_values_t_extendr_  s   &&r   extendidc_values_t.extend  rb  r#   r$   N),r   r   r8   r9   r   r   r   r
   r  r   delete_idc_values_tr{  r  r  r  r  r  r  r  r  r  r  r	  r!  r.  r*  r2  r8  r>  rE  rJ  rO  rU  rZ  r`  rf  
ida_idaapi_qvector_frontfront_qvector_backback_bounded_getitem_iterator__iter__r<   r$   r#   r   r  r    s    -/I!#GH !44=512532:859544;97:94;>66%%E##D33Hr#   r  c                     \        R 4       ^ # )z3IDC extensions need ctypes library in order to work)warning)rV   s   *r   call_idc_func__rr    s    EFr#   c                  8    ] tR tRtRtR t]! R 4      tR tRt	R# )_IdcFunctioni  z>
Internal class that calls pyw_call_idc_func() with a context
c                	2    Wn         \        V 4      V n        R # r.   )r\   _IDCFUNC_CB_Tcb)r   r\   s   &&r   r  _IdcFunction.__init__  s    %r#   c                	t    \         P                  ! V P                  \         P                  4      P                  # r.   )ctypescastrw  c_void_pr   r  s   &r   r   _IdcFunction.<lambda>  s    6;;tww#H#N#Nr#   c                	.    \        V P                  W4      # r.   )rr  r\   )r   rV   r   s   &&&r   __call___IdcFunction.__call__   s    t{{D66r#   )rw  r\   N)
r   r   r8   r9   r:   r  r   rg   r  r<   r$   r#   r   rt  rt    s    & NOF7r#   rt  c                    \         P                  V R4      pVf   R# V=\         V  \        P                  ! VP
                  4      # )z Delete an IDC function 
        NF)__IDC_FUNC_CTXSgetrw  r   r_   r\   )r   rb  s   & r   del_idc_funcr    s@     	D$'Ay	,,QXX66r#   c                   \         P                  V R4      pVe   \        V 4       RP                  V Uu. uF  p\	        V4      NK  	  up4      p\        V4      \        V4      8  d   R# \        4       p\        P                  ! Ws4      '       g   R# \        P                  ! WV4      pV^ 8X  d   R# \        V4      pV\         V &   \        P                  ! WP                  W'V4      # u upi )ab  Add an IDC function. This function does not modify the predefined kernel functions. Example: 
     error_t idaapi myfunc5(idc_value_t *argv, idc_value_t *res)
    
      msg("myfunc is called with arg0=%a and arg1=%s\n", argv[0].num, argv[1].str);
      res->num = 5;     // let's return 5
      return eOk;
    
     const char myfunc5_args[] = { VT_LONG, VT_STR, 0 };
     const ext_idcfunc_t myfunc_desc = { "MyFunc5", myfunc5, myfunc5_args, nullptr, 0, EXTFUN_BASE };
    
     after this:
    
    
     there is a new IDC function which can be called like this:
     "test");


        
:returns: successNr   F)r  r  r  joinchrr/  r  r   re   rZ   rt  rk   rg   )	r   fprV   rh   ri   rb  r   vdefvalsr\   s	   &&&&&    r   add_idc_funcr    s    * 	D$'A}T77D)DqCFD)*D
7|c$i~H((;;,,T<F{VAOD$$T88TUKK *s   C)r.   )F)N    )r  )T)NF)r$   r  )~r:   
__future__r   sysr   _swig_python_version_info__package__r   r   r   builtinsr   ImportErrorr   r%   r+   r5   r   r7   r  SWIG_PYTHON_LEGACY_BOOLtypingr=   r>   r?   ri  rJ   rO   rT   rZ   r_   re   rk   rs   rw   IDC_LANG_EXTr}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   VARSLICE_SINGLEr   r   r   r   	VREF_LOOP	VREF_ONCE	VREF_COPYr   r   r   objectr   idc_value_t_swigregisterVT_LONGVT_FLOATVT_WILDVT_OBJVT_FUNCVT_STRVT_PVOIDVT_INT64VT_REFr}  idc_global_t_swigregister
eExecThrowr  
HF_DEFAULTHF_KEYWORD1HF_KEYWORD2HF_KEYWORD3	HF_STRING
HF_COMMENT
HF_PREPROC	HF_NUMBERHF_USER1HF_USER2HF_USER3HF_USER4HF_MAXr  highlighter_cbs_t_swigregisterr  r  r  CPL_DEL_MACROSCPL_USE_LABELSCPL_ONLY_SAFEr  r  r  r  idc_values_t_swigregistertypesrz  WINFUNCTYPEc_intr|  rv  	CFUNCTYPEc_longrr  EXTFUN_BASEEXTFUN_NORETEXTFUN_SAFErt  r  r  r  r$   r#   r   <module>r     s   # 9#/"
 L$ L
 #;;  % % 33,>56I
04 %%"#!$#*))."(.	D	F.*)//1
; ++	;0*/ 			-()d& dN 
 " "; /





			


						56 5 
 # #L 1!!
. !!
######	!!
!!
				# #B 
 ( (): ;0,C ))))''
PH2T46 T4n 
 # #L 1**6<<OO
 &&v}}foo**3*H*H*JLO   P )76 7 	7#LM  `((vOO Ms6   P* :Q5 2P< 5AQ5 *P98P9<4Q20Q5 5Q>