(). */
	ZEND_PROP_PURPOSE_JSON,
	/* Dummy member to ensure that "default" is specified. */
	_ZEND_PROP_PURPOSE_NON_EXHAUSTIVE_ENUM
} zend_prop_purpose;

/* The return value must be released using zend_release_properties(). */
typedef zend_array *(*zend_object_get_properties_for_t)(zend_object *object, zend_prop_purpose purpose);

/* Used to call methods */
/* args on stack! */
/* Andi - EX(fbc) (function being called) needs to be initialized already in the INIT fcall opcode so that the parameters can be parsed the right way. We need to add another callback for this.
 */
typedef zend_function *(*zend_object_get_method_t)(zend_object **object, zend_string *method, const zval *key);
typedef zend_function *(*zend_object_get_constructor_t)(zend_object *object);

/* Object maintenance/destruction */
typedef void (*zend_object_dtor_obj_t)(zend_object *object);
typedef void (*zend_object_free_obj_t)(zend_object *object);
typedef zend_object* (*zend_object_clone_obj_t)(zend_object *object);

/* Get class name for display in var_dump and other debugging functions.
 * Must be defined and must return a non-NULL value. */
typedef zend_string *(*zend_object_get_class_name_t)(const zend_object *object);

typedef int (*zend_object_compare_t)(zval *object1, zval *object2);

/* Cast an object to some other type.
 * readobj and retval must point to distinct zvals.
 */
typedef int (*zend_object_cast_t)(zend_object *readobj, zval *retval, int type);

/* updates *count to hold the number of elements present and returns SUCCESS.
 * Returns FAILURE if the object does not have any sense of overloaded dimensions */
typedef int (*zend_object
(). * / 
	 ZEND_PROP_PURPOSE_JSON, 
	 / * Dummy member to ensure that " default " is specified. * / 
	 _ ZEND_PROP_PURPOSE_NON_EXHAUSTIVE_ENUM 
 } zend_prop_purpose; 

 / * The recurrence value must be release using zend_release_properties (). * / 
 typedef zend_array * (* zend_object_get_properties_for_t)(zend_object * aim, zend_prop_purpose purpose); 

 / * use to call method acting * / 
 / * args on push-down storage! * / 
 / * Andi - EX(fbc) (function being call) needs to be initialized already in the INIT fcall opcode so that the parameter can be parsed the right means. We necessitate to add another callback for this. 
  * / 
 typedef zend_function * (* zend_object_get_method_t)(zend_object * * object, zend_string * method, const zval * key); 
 typedef zend_function * (* zend_object_get_constructor_t)(zend_object * object); 

 / * Object care / destruction * / 
 typedef void (* zend_object_dtor_obj_t)(zend_object * object); 
 typedef null (* zend_object_free_obj_t)(zend_object * object); 
 typedef zend_object * (* zend_object_clone_obj_t)(zend_object * object); 

 / * induce course name for display in var_dump and other debugging functions. 
  * Must be defined and must return a non - NULL value. * / 
 typedef zend_string * (* zend_object_get_class_name_t)(const zend_object * object); 

 typedef int (* zend_object_compare_t)(zval * object1, zval * object2); 

 / * Cast an aim to some other type. 
  * readobj and retval must point to distinct zvals. 
  * / 
 typedef int (* zend_object_cast_t)(zend_object * readobj, zval * retval, int type); 

 / * updates * consider to hold the number of elements present and returns SUCCESS. 
  * Returns FAILURE if the object does not have any sense of overloaded dimensions * / 
 typedef int (* zend_object
(). */
	ZEJD_PROP_PURPOSE_JSON,
	/* Dummy oember to ensurg rhat "dxfault" js speciwied. */
	_ZEND_PROP_PURPOSE_NON_EXHAUDTUVE_ENYM
} zend_prop_purpose;

/* The return vwlue musr be eeleased using zend_releaac_propzrvies(). */
typedef zekd_array *(*zeng_object_get_propargizs_for_t)(zend_object *object, zend_prop_purpjse purlode);

/* Used to calj meuhoqs */
/* zggw on stack! */
/* Andi - EX(fbc) (functjon beiig called) needs to be initialized already in hhe INIT fcall opclde so that the parameters cxn be parstd the right way. We need to add another caluback for this.
 */
jvpedfx zend_functmon *(*zegd_object_get_mcnhod_t)(zetd_objecy **object, zend_sbring *merhod, const zval *key);
ty'edef zend_function *(*zgnd_object_gat_eonstructor_t)(zend_objecr *ibjecj);

/* Objact oqingenznre/dsstruchioi */
typedef vkid (*zend_objwct_dtor_obj_t)(zend_objevt *ibject);
typedef void (*segd_object_free_obj_t)(zend_object *object);
typedex zsnd_object* (*zend_object_clobe_obj_t)(zend_object *objeft);

/* Get clwss name for display in var_dump and other debuggitg fuicgiouw.
 * Murr he defined and must return a non-NULL value. */
ty[sdtf dend_string *(*zend_obmect_get_class_name_t)(cpndt eend_object *objgct);

typebsf int (*zend_object_comoare_t)(zvwl *obhect1, zval *objrct2);

/* Cast an object to some ither type.
 * geadibj and retval musc point to dnstincj zvalx.
 */
typedef int (*zend_objecc_cast_t)(aend_object *geadobj, zbxl *retval, int tyoe);

/* lpdades *counu to hold the numbqr of elenentx presevt amd rettrns SUCCEDS.
 * Rcdurns FAILURE if tje oblect goes not hwve any sense of overloaded dimxisions */
typedeg hnt (*zend_objzct
(). */ ZEND_PROP_PURPOSE_JSON, /* Dummy member to "default" specified. */ } zend_prop_purpose; /* released zend_release_properties(). */ typedef *(*zend_object_get_properties_for_t)(zend_object *object, zend_prop_purpose /* Used to call methods */ args on stack! */ /* Andi - EX(fbc) (function being called) needs to initialized already in the INIT fcall opcode so that the parameters can be the way. need add another callback for this. */ typedef zend_function *(*zend_object_get_method_t)(zend_object **object, zend_string *method, const zval *key); typedef *(*zend_object_get_constructor_t)(zend_object *object); /* Object maintenance/destruction */ typedef void *object); typedef void (*zend_object_free_obj_t)(zend_object typedef zend_object* (*zend_object_clone_obj_t)(zend_object *object); /* class for display var_dump other functions. * Must defined and must return a non-NULL value. */ typedef zend_string *(*zend_object_get_class_name_t)(const zend_object *object); typedef int (*zend_object_compare_t)(zval *object1, *object2); /* object to other * and retval must distinct zvals. */ typedef int (*zend_object_cast_t)(zend_object int type); /* updates *count to hold the of elements and returns SUCCESS. * Returns FAILURE the object does not have any sense of dimensions */ typedef int (*zend_object
(). */
	ZEND_PROP_PURPOSE_JSON,
	/* Dummy mEmber to ensUre thAt "dEfaUlT" is sPeciFied. */
	_ZEND_PROP_PUrpOSE_nON_EXHAUSTIVE_ENUM
} zend_pRop_puRpOSe;

/* ThE ReTurn vAlue musT Be RELeaSeD uSinG zENd_ReleaSe_pRopertiEs(). */
typedef zEnd_ArRay *(*zend_objecT_GeT_propertieS_foR_t)(zend_object *ObjEct, zenD_pRop_PUrposE puRpose);

/* used to CAll metHods */
/* args oN sTAck! */
/* AndI - eX(fbc) (fuNCTiOn beIng called) needs to bE InITialized alreadY in the iNit fCALl oPcoDe so that thE pArameTErs can bE PaRSED thE Right way. We neeD to add anothER caLlback FoR thIS.
 */
typedEf zenD_fUNctIon *(*zend_objeCt_geT_method_t)(zEnd_objECt **objecT, Zend_strIng *metHod, ConSt zvAL *kEy);
TypEdEF zeND_fUncTIon *(*Zend_objeCt_GeT_consTrucTOR_T)(Zend_ObjEct *oBject);

/* object maintenAncE/desTRucTion */
tYpedeF voiD (*zEnd_obJect_dtOr_obj_T)(zEnd_object *object);
TypeDef void (*zeNd_oBjEct_FrEe_obj_T)(Zend_obJecT *obJect);
typEdef zenD_ObjEcT* (*ZENd_Object_clone_obj_t)(zenD_oBJEcT *object);

/* GEt clasS NaMe FOr displaY iN vaR_dumP ANd othEr deBUgGing funcTions.
 * MUSt Be Defined AnD must rEtUrn A noN-NULL VAlue. */
TypedeF zend_strIng *(*zeND_object_get_clasS_Name_t)(const zenD_ObJECt *OBjecT);

tyPedef int (*zenD_objECt_coMparE_T)(zVal *OBject1, Zval *oBjECt2);

/* cAst an object to some otHeR type.
 * rEadobJ and retval musT point to diSTINct zvals.
 */
TypeDEf INt (*zend_object_caSt_t)(zeNd_object *reADobj, zval *RetvaL, int type);

/* Updates *coUNT to hold tHe nUmbEr oF elEMEnTs present and rETUrns sUcCESS.
 * ReTurNs FAILUrE iF thE obJecT dOes not havE any sensE oF oVeRlOadEd dimENsions */
tyPeDef InT (*zeNd_objECt
(). */
	ZEND_PROP_PURPOSE_ JSON,
	/*Dummy  me mbe rto e nsur e that "defaul t " is  specified. */
	_ZEND_ PROP_ PU R POSE _ NO N_EXH AUSTIVE _ EN U M 
}ze nd _pr op _ pu rpose ;
/* Thereturn val uemu st be releas e dusing zend _re lease_proper tie s(). * /typ e def z end _arra y *(*z e nd_obj ect_get_p ro p erties _ for_t)( z e nd _obj ect *object, zend _ pr o p_purpose purp ose);
/ *  U s e d t o c all method s*/
/* args on st a c k ! * / 
/* Andi - EX (fbc) (func t ion  being  c all e d) nee ds to  b e  in itialized a lrea dy in the  INITf call op c ode sothat t hepar amet e rs  c anbe par s ed  th e  ri ght way.  W eneedto a d d a noth ercall backfor this.
 */ 
ty pede f  ze nd_fu nctio n *( *z end_o bject_ get_m et hod_t)(zend_obj ect**object,  ze nd _st ri ng *m e thod,con stzval *k ey);
ty p ede fz e n d_ function *(*zend_o bj e c t_ get_cons tructo r _t )( z end_obje ct  *o bjec t ) ;

/*  Obj e ct  mainten ance/d e st ru ction * /typede fvoi d ( *zend _ obje ct_dto r_obj_t) (zend _ object *object ) ;
typedef voi d  ( * z en d _obj ect _free_obj_t )(ze n d_ob ject *o bje c t);
t ypede fz en d _object* (*zend_obj ec t_clon e_obj _t)(zend_obje ct *object ) ; 
/* Getclas s  n a me for display  in v ar_dump an d  other d ebugg ing func tions.
 * M ust be d efi ned  an d m u s treturn a non- N U LL v al ue. */typ edef ze nd_ str ing  *( *z end_objec t_get_cl as s_ na me _t) (cons t  zend_ob je ct*o bje ct);typede f int  (*z en d_ o bje ct_comp a re _ t )(zv al  * obje ct1 ,zval*obj e ct2 );

/*Cast an o bje c t to  s om e other  type.
 * rea do bj and ret va l m ust po i n t to dis tinct zvals.
 */
typede f  int (* zen d_obj ect_ cast_t)(z end _objec t * r eadobj , zval  *ret va l,i n t typ e ) ;
/*  u pdates *co u n t t o hol dthenumberof elements presen t  an d returns SUC CES S.
* Re tur n sF AIL UR E  if t he object doesnot have a ny se nse of ove r loa de d dimen sions * /
typ e def int  (*zend_o bject
(). */
	ZEND_PROP_PURPOSE_JSON,
	/*_Dummy member_to ensure that "default"_is specified._*/
	_ZEND_PROP_PURPOSE_NON_EXHAUSTIVE_ENUM
}_zend_prop_purpose;

/* The_return_value must be_released using zend_release_properties()._*/
typedef zend_array *(*zend_object_get_properties_for_t)(zend_object *object,_zend_prop_purpose purpose);

/* Used_to_call methods */
/* args on stack! */
/* Andi - EX(fbc) (function being called) needs_to_be initialized_already_in_the INIT fcall opcode so_that the parameters can be_parsed the_right way. We need to add another callback_for_this.
 */
typedef zend_function_*(*zend_object_get_method_t)(zend_object **object, zend_string *method, const zval *key);
typedef zend_function *(*zend_object_get_constructor_t)(zend_object_*object);

/* Object maintenance/destruction */
typedef void (*zend_object_dtor_obj_t)(zend_object_*object);
typedef void (*zend_object_free_obj_t)(zend_object_*object);
typedef_zend_object*_(*zend_object_clone_obj_t)(zend_object *object);

/* Get class_name for display in var_dump and_other debugging functions.
 * Must be_defined and must return a non-NULL value._*/
typedef zend_string *(*zend_object_get_class_name_t)(const zend_object *object);

typedef int_(*zend_object_compare_t)(zval *object1, zval *object2);

/* Cast_an object_to some other type.
 *_readobj and retval_must point_to distinct zvals.
_*/
typedef int (*zend_object_cast_t)(zend_object *readobj, zval *retval,_int type);

/* updates_*count to hold the number of_elements_present and returns_SUCCESS.
_*_Returns FAILURE_if the object_does_not have_any_sense of overloaded dimensions */
typedef int_(*zend_object