Esempio n. 1
0
static void init_generated_pool_once(TSRMLS_D) {
  if (generated_pool_php == NULL) {
    MAKE_STD_ZVAL(generated_pool_php);
    Z_TYPE_P(generated_pool_php) = IS_OBJECT;
    generated_pool = ALLOC(DescriptorPool);
    descriptor_pool_init_c_instance(generated_pool TSRMLS_CC);
    Z_OBJ_HANDLE_P(generated_pool_php) = zend_objects_store_put(
        generated_pool, NULL,
        (zend_objects_free_object_storage_t)descriptor_pool_free,
        NULL TSRMLS_CC);
    Z_OBJ_HT_P(generated_pool_php) = zend_get_std_object_handlers();
  }
}
Esempio n. 2
0
File: money.c Progetto: Peekmo/money
static zend_object_value money_create_object(zend_class_entry *ce)
{
	zend_object_value retval;
	zend_object *obj;

	obj = emalloc(sizeof(zend_object));
	zend_object_std_init(obj, ce);
	object_properties_init(obj, ce);

	retval.handle   = zend_objects_store_put(obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t)zend_objects_free_object_storage, NULL);
	retval.handlers = &money_object_handlers;

	return retval;
}
Esempio n. 3
0
static zend_object_value php_runkit_sandbox_parent_ctor(zend_class_entry *ce)
{
	php_runkit_sandbox_parent_object *objval;
	zend_object_value retval;

	if (RUNKIT_G(current_sandbox)) {
		objval = ecalloc(1, sizeof(php_runkit_sandbox_parent_object));
		objval->obj.ce = ce;
		objval->self = RUNKIT_G(current_sandbox);
	} else {
		/* Assign a "blind" stdClass when invoked from the top-scope */
		objval = ecalloc(1, sizeof(zend_object));
		objval->obj.ce = zend_standard_class_def;
	}
	ALLOC_HASHTABLE(objval->obj.properties);
	zend_hash_init(objval->obj.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
	retval.handle = zend_objects_store_put(objval, NULL, (zend_objects_free_object_storage_t)php_runkit_sandbox_parent_dtor, NULL);

	retval.handlers = RUNKIT_G(current_sandbox) ? &php_runkit_sandbox_parent_handlers : zend_get_std_object_handlers();

	return retval;
}
Esempio n. 4
0
void server_websocket_route_handle_request(zval *zroute, zval *zrequest, zval *params TSRMLS_DC);
static void server_dtor(void *object TSRMLS_DC);

static zend_object_value server_ctor(zend_class_entry *ce TSRMLS_DC)
{
    struct php_can_server *server;
    zend_object_value retval;

    server = ecalloc(1, sizeof(*server));
    server->logformat = NULL;
    server->logfile = NULL;
    server->router = NULL;
    zend_object_std_init(&server->std, ce TSRMLS_CC);
    PHP_CAN_INIT_OBJ_PROPS(server, ce);
    retval.handle = zend_objects_store_put(server,
            (zend_objects_store_dtor_t)zend_objects_destroy_object,
            server_dtor,
            NULL TSRMLS_CC);
    retval.handlers = &server_obj_handlers;
    return retval;
}

static void server_dtor(void *object TSRMLS_DC)
{
    struct php_can_server *server = (struct php_can_server*)object;

    if (server->http) {
        free(server->http);
        server->http = NULL;
    }

    zend_objects_store_del_ref(&server->refhandle TSRMLS_CC);
Esempio n. 5
0
    
#else

    // not in thread mode: no special parameter for the tsrm_ls variable
    using DestructType = void(zend_object*,unsigned int);
    using FreeType = void(zend_object*);
    
#endif
    
    // store the two destruct methods in temporary vars
    DestructType *destructMethod = &ClassBase::destructObject;
    FreeType *freeMethod = &ClassBase::freeObject;

    // the destructor and clone handlers are set to NULL. I dont know why, but they do not
    // seem to be necessary...
    _handle = zend_objects_store_put(result, (zend_objects_store_dtor_t)destructMethod, (zend_objects_free_object_storage_t)freeMethod, NULL TSRMLS_CC);
    
    // done
    return result;
}

/**
 *  Overridable method that is called right before an object is destructed
 */
void Base::__destruct() const
{
    // throw exception, so that the PHP-CPP library will check if the user
    // somehow registered an explicit __destruct method
    throw NotImplemented();
}
Esempio n. 6
0
zend_object_value spl_ds_linked_list_create_handler(zend_class_entry *class_type TSRMLS_DC)
{
    zend_object_value retval;
    spl_ds_dll_object *obj;

    obj = emalloc(sizeof(spl_ds_dll_object));

    zend_object_std_init(&obj->std, class_type TSRMLS_CC);
    object_properties_init(&obj->std, class_type);

    obj->list = spl_ds_dll_create();

    retval.handle = zend_objects_store_put(obj, NULL,
        (zend_objects_free_object_storage_t) spl_ds_dll_object_free_storage,
        (zend_objects_store_clone_t)         spl_ds_dll_object_clone_storage
        TSRMLS_CC
    );
    retval.handlers = &spl_ds_handlers_LinkedList;

    return retval;
}

SPL_DS_METHOD(LinkedList, getFirst)
{
    spl_ds_dll *list;
    zval *item;

    if (zend_parse_parameters_none() == FAILURE) {
        return;
    }
Esempio n. 7
0
/* {{{ finfo_objects_new
 */
PHP_FILEINFO_API zend_object_value finfo_objects_new(zend_class_entry *class_type TSRMLS_DC)
{
	zend_object_value retval;
	struct finfo_object *intern;

	intern = emalloc(sizeof(struct finfo_object));
	memset(intern, 0, sizeof(struct finfo_object));

	zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
	object_properties_init(&intern->zo, class_type);

	intern->ptr = NULL;

	retval.handle = zend_objects_store_put(intern, finfo_objects_dtor, NULL, NULL TSRMLS_CC);
	retval.handlers = (zend_object_handlers *) &finfo_object_handlers;

	return retval;
}
/* }}} */

/* {{{ arginfo */
ZEND_BEGIN_ARG_INFO_EX(arginfo_finfo_open, 0, 0, 0)
	ZEND_ARG_INFO(0, options)
	ZEND_ARG_INFO(0, arg)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_finfo_close, 0, 0, 1)
	ZEND_ARG_INFO(0, finfo)
ZEND_END_ARG_INFO()
Esempio n. 8
0
File: v8.cpp Progetto: metagoto/v8
zend_object_value v8_create_object(zend_class_entry* class_type TSRMLS_DC)
{
    zend_object_value retval;

    v8context_object* obj = (v8context_object*)emalloc(sizeof(v8context_object));
    memset(obj, 0, sizeof(v8context_object));

    zend_object_std_init(&obj->std, class_type TSRMLS_CC);
    zend_hash_copy(obj->std.properties, &class_type->default_properties
                   ,reinterpret_cast<copy_ctor_func_t>(zval_add_ref), static_cast<void*>(0), sizeof(zval*));

    obj->intern = new v8context;


    retval.handle = zend_objects_store_put(obj, reinterpret_cast<zend_objects_store_dtor_t>(zend_objects_destroy_object)
                                              , reinterpret_cast<zend_objects_free_object_storage_t>(v8_object_dtor)
                                              , NULL TSRMLS_CC);
    retval.handlers = &v8context_object_handlers;

    return retval;
}



PHP_METHOD(V8Context, __construct)
{

}


Esempio n. 9
0

zend_object_value webkitgtk_webresource_new(zend_class_entry *class_type TSRMLS_DC)
{
	WebKitWebResource_object *intern;
	zend_object_value retval;

	intern = emalloc(sizeof(WebKitWebResource_object));
	memset(intern, 0, sizeof(WebKitWebResource_object));
	intern->webResource = NULL;

	zend_object_std_init(&intern->std, class_type TSRMLS_CC);
	object_properties_init(&intern->std, class_type);


	retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object,
			(zend_objects_free_object_storage_t) webkitgtk_object_free_storage_webresource, NULL TSRMLS_CC);
	retval.handlers = &webkitgtk_object_handlers_webresource;

	return retval;
}

void webkitgtk_object_free_storage_webresource(void *object TSRMLS_DC)
{
	WebKitWebResource_object *intern = (WebKitWebResource_object *)object;

	// FIXME: Trocar para o destroy do webkit
	if (intern->webResource && GTK_IS_WIDGET(intern->webResource)) {
		gtk_widget_destroy(intern->webResource);
	}

	zend_object_std_dtor(&intern->std TSRMLS_CC);
Esempio n. 10
0
    //add properties table
#if PHP_VERSION_ID < 50399
    zend_hash_copy(
        intern->std.properties, &class_type->default_properties,
        (copy_ctor_func_t)zval_add_ref,
        (void *)&tmp,
        sizeof tmp
    );
#else
    object_properties_init(&intern->std, class_type);
#endif

    // create a destructor for this struct
    retval.handle = zend_objects_store_put(
        intern,
        (zend_objects_store_dtor_t) zend_objects_destroy_object,
        free_kafka_connection,
        NULL TSRMLS_CC
    );
    retval.handlers = zend_get_std_object_handlers();

    return retval;
}

//clean current connections
void free_kafka_connection(void *object TSRMLS_DC)
{
    int interval = 1;
    kafka_connection *connection = ((kafka_connection *) object);
    //no confirmation, wait to close connection a bit longer, for what it's worth
    if (connection->delivery_confirm_mode == PHP_KAFKA_CONFIRM_OFF)
        interval = 50;
Esempio n. 11
0
}


static zend_object_value collator_object_create(zend_class_entry *ce TSRMLS_DC)
{
	php_collator_obj *intern;
	zend_object_value retval;
	zval *tmp;

	intern = emalloc(sizeof(php_collator_obj));
	memset(intern, 0, sizeof(php_collator_obj));

	zend_object_std_init(&intern->std, ce TSRMLS_CC);
	zend_hash_copy(intern->std.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *));
	
	retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) collator_object_free_storage, NULL TSRMLS_CC);
	retval.handlers = &unicode_object_handlers_collator;
	
	return retval;
}

static void collator_object_free_storage(void *object TSRMLS_DC)
{
	php_collator_obj *intern = (php_collator_obj *)object;

	if (intern->zcoll) {
		zend_collator_destroy(intern->zcoll);
	}

	zend_object_std_dtor(&intern->std TSRMLS_CC);
	
Esempio n. 12
0
    efree(object);
}

// Constructor
zend_object_value TestExtObj_object_new(zend_class_entry *ce TSRMLS_DC)
{
    zend_object_value retval;
    TestExtObj_object *intern;

    intern = ecalloc(1, sizeof(TestExtObj_object));
    zend_object_std_init(&(intern->std), ce TSRMLS_CC);
    zend_hash_copy(intern->std.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));

    intern->is_loser = 0;

    retval.handle = zend_objects_store_put(intern, TestExtObj_object_dtor, NULL, NULL TSRMLS_CC);
    retval.handlers = &TestExtObj_handlers;
    return retval;
}

static void *myrealloc(void *ptr, size_t size)
{
    /* There might be a realloc() out there that doesn't like reallocing
    	NULL pointers, so we take care of it here */
    if(ptr)
        return realloc(ptr, size);
    else
        return malloc(size);
}

static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
Esempio n. 13
0
};


static zend_object_value mongo_mongo_cursor_new(zend_class_entry *class_type TSRMLS_DC) {
  zend_object_value retval;
  mongo_cursor *intern;
  zval *tmp;

  intern = (mongo_cursor*)emalloc(sizeof(mongo_cursor));
  memset(intern, 0, sizeof(mongo_cursor));

  zend_object_std_init(&intern->std, class_type TSRMLS_CC);
  zend_hash_copy(intern->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, 
                 (void *) &tmp, sizeof(zval *));

  retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, mongo_mongo_cursor_free, NULL TSRMLS_CC);
  retval.handlers = &mongo_default_handlers;

  return retval;
}


// tell db to destroy its cursor
static void kill_cursor(mongo_cursor *cursor TSRMLS_DC) {
  unsigned char quickbuf[128];
  buffer buf;
  mongo_msg_header header;

  // we allocate a cursor even if no results are returned,
  // but the database will throw an assertion if we try to
  // kill a non-existant cursor
Esempio n. 14
0
    memcpy(&distance_map_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
    distance_map_handlers.clone_obj = clone_distance_map_object;
}

zend_object_value create_distance_map_object(zend_class_entry *class_type TSRMLS_DC) {
    zend_object_value retval;

    distance_map_object *intern = emalloc(sizeof(distance_map_object));
    memset(intern, 0, sizeof(distance_map_object));

    // create a table for class properties
    zend_object_std_init(&intern->std, class_type TSRMLS_CC);
    object_properties_init(&intern->std, class_type);

    // create a destructor for this struct
    retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t)free_distance_map_object, NULL TSRMLS_CC);
    retval.handlers = zend_get_std_object_handlers();

    return retval;
}

static zend_object_value clone_distance_map_object(zval *object TSRMLS_DC) {
    distance_map_object *old_object = zend_object_store_get_object(object TSRMLS_CC);
    zend_object_value new_object_val = create_distance_map_object(Z_OBJCE_P(object) TSRMLS_CC);
    distance_map_object *new_object = zend_object_store_get_object_by_handle(new_object_val.handle TSRMLS_CC);

    zend_objects_clone_members(
        &new_object->std, new_object_val,
        &old_object->std, Z_OBJ_HANDLE_P(object) TSRMLS_CC
    );
Esempio n. 15
0
ZEND_GET_MODULE(opendkim)
#endif

/* opendkim handlers */
PHP_OPENDKIM_EXPORT(zend_object_value) opendkim_object_handler_new(zend_class_entry *class_type TSRMLS_DC)
{
	zend_object_value retval;
	opendkim_object_handler *intern;


	intern = emalloc(sizeof(opendkim_object_handler));
	memset(intern, 0, sizeof(opendkim_object_handler));
	intern->handler = NULL;

	zend_object_std_init(&intern->zo, class_type TSRMLS_CC);
	retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t) zend_objects_destroy_object, opendkim_object_handler_free_storage, NULL TSRMLS_CC);
    retval.handlers = zend_get_std_object_handlers();    

	return retval;
}

static void opendkim_object_handler_free_storage(void *object TSRMLS_DC)
{
   	zend_object *zo = (zend_object *)object;
	opendkim_object_handler *intern = (opendkim_object_handler *)object;
    DKIM *dkim;

    dkim = intern->handler;
    if (dkim) {
    	dkim_free(dkim);
    }
Esempio n. 16
0
	rtv_ce_rtvtemplate = zend_register_internal_class(&ce TSRMLS_CC);

	/* fields */
	zend_declare_property_bool(rtv_ce_rtvtemplate,"html", strlen("html"),1,ZEND_ACC_PUBLIC TSRMLS_CC);
}

zend_object_value create_rtv_template_fragments(zend_class_entry *class_type TSRMLS_DC){
	zend_object_value retval;
	rtv_template_fragments *intern;
	zval *tmp;

	intern = (rtv_template_fragments*)emalloc(sizeof(rtv_template_fragments));
	memset(intern,0,sizeof(rtv_template_fragments));
	zend_object_std_init(&intern->std, class_type TSRMLS_CC);
	zend_hash_copy(intern->std.properties, &class_type->default_properties,(copy_ctor_func_t) zval_add_ref,(void*) &tmp, sizeof(zval *));
	retval.handle = zend_objects_store_put(intern,(zend_objects_store_dtor_t) zend_objects_destroy_object, free_rtv_template_fragments, NULL TSRMLS_CC);
	retval.handlers = zend_get_std_object_handlers();

	return retval;
}

void free_rtv_template_fragments(void *object TSRMLS_DC){
	rtv_template_fragments *fragments =(rtv_template_fragments*) object;
	if(fragments->code){
		efree(fragments->code);
	}
	efree(fragments);
}

/**
	 * Constructor
Esempio n. 17
0
    zend_iterator_class_entry.name = "__iterator_wrapper";
}

static void iter_wrapper_dtor(void *object, zend_object_handle handle TSRMLS_DC)
{
    zend_object_iterator *iter = (zend_object_iterator*)object;
    iter->funcs->dtor(iter TSRMLS_CC);
}

ZEND_API zval *zend_iterator_wrap(zend_object_iterator *iter TSRMLS_DC)
{
    zval *wrapped;

    MAKE_STD_ZVAL(wrapped);
    Z_TYPE_P(wrapped) = IS_OBJECT;
    Z_OBJ_HANDLE_P(wrapped) = zend_objects_store_put(iter, iter_wrapper_dtor, NULL, NULL TSRMLS_CC);
    Z_OBJ_HT_P(wrapped) = &iterator_object_handlers;

    return wrapped;
}

ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap(
    zval *array_ptr, zend_object_iterator **iter TSRMLS_DC)
{
    switch (Z_TYPE_P(array_ptr)) {
    case IS_OBJECT:
                if (Z_OBJ_HT_P(array_ptr) == &iterator_object_handlers) {
                *iter = (zend_object_iterator *)zend_object_store_get_object(array_ptr TSRMLS_CC);
                return ZEND_ITER_OBJECT;
            }
        if (Z_OBJPROP_P(array_ptr)) {
Esempio n. 18
0
void wingdi_region_object_destroy(void * object TSRMLS_DC);

/* {{{ zend_object_value wingdi_region_object_new(zend_class_entry *ce TSRMLS_DC)
	   Create new object and store it in objects store; boilerplate boredom.
*/
zend_object_value wingdi_region_object_new(zend_class_entry *ce TSRMLS_DC) 
{
	zend_object_value    ret;
	wingdi_region_object *reg;

	reg = emalloc(sizeof(wingdi_region_object));
	reg->std.ce = ce;
	reg->handle = zend_objects_store_put(
		reg, 
		(zend_objects_store_dtor_t)zend_objects_destroy_object,
        (zend_objects_free_object_storage_t)wingdi_region_object_destroy,
		NULL
		TSRMLS_CC
	);
	reg->region_handle = NULL;
    reg->constructed   = 0;

	ret.handle   = reg->handle;
	ret.handlers = zend_get_std_object_handlers();

	object_properties_init(&reg->std, ce);

	return ret;
}
/* }}} */
Esempio n. 19
0
    zval_dtor(&retval);
}

static zend_object_value createUVTimerResource(zend_class_entry *ce TSRMLS_DC) {
    zend_object_value retval;
    uv_timer_ext_t *resource;
    resource = (uv_timer_ext_t *) emalloc(sizeof(uv_timer_ext_t));
    memset(resource, 0, sizeof(uv_timer_ext_t));

    uv_timer_init(uv_default_loop(), &resource->uv_timer);
    zend_object_std_init(&resource->zo, ce TSRMLS_CC);
    object_properties_init(&resource->zo, ce);

    retval.handle = zend_objects_store_put(
        &resource->zo,
        (zend_objects_store_dtor_t) zend_objects_destroy_object,
        freeUVTimerResource,
        NULL TSRMLS_CC);

    retval.handlers = &OBJECT_HANDLER(UVTimer);
    return retval;
}

void freeUVTimerResource(void *object TSRMLS_DC) {
    uv_timer_ext_t *resource;
    resource = FETCH_RESOURCE(object, uv_timer_ext_t);
    if(resource->start){
        uv_timer_stop((uv_timer_t *) resource);
    }
    
    uv_unref((uv_handle_t *) resource);
Esempio n. 20
0

zend_object_value splclassloader_create_object(zend_class_entry* class_type TSRMLS_DC)
{
    zend_object_value retval;

    splclassloader_object* obj = (splclassloader_object*)emalloc(sizeof(splclassloader_object));
    memset(obj, 0, sizeof(splclassloader_object));

    zend_object_std_init(&obj->std, class_type TSRMLS_CC);
    zend_hash_copy(obj->std.properties, &class_type->default_properties, (copy_ctor_func_t) zval_add_ref, (void*)0, sizeof(zval*));

    obj->file_ext = estrndup(".php", sizeof(".php")-1);
    obj->file_ext_len = sizeof(".php")-1;
    
    retval.handle = zend_objects_store_put(obj, (zend_objects_store_dtor_t)zend_objects_destroy_object, (void*)splclassloader_object_dtor, NULL TSRMLS_CC);
    retval.handlers = &splclassloader_object_handlers;

    return retval;
}


/* {{{ proto void SplClassLoader::__construct([string $namespace [, string $include_path]])
       Constructor */
PHP_METHOD(SplClassLoader, __construct)
{    
    char* ns = NULL;
    int   ns_len = 0;
    char* inc_path = NULL;
    int   inc_path_len = 0;
    splclassloader_object* obj;
Esempio n. 21
0
	memset(&object->data, 0, sizeof(kadm5_policy_ent_rec));
	object->conn = NULL;
	object->update_mask = 0;
	
	zend_object_std_init(&(object->std), ce TSRMLS_CC);

#if PHP_VERSION_ID < 50399
	zend_hash_copy(object->std.properties, &ce->default_properties,
					(copy_ctor_func_t) zval_add_ref, NULL, 
					sizeof(zval*));
#else
	object_properties_init(&(object->std), ce);
#endif

	retval.handle = zend_objects_store_put(object, php_krb5_kadm5_policy_object_dtor, NULL, NULL TSRMLS_CC);

	retval.handlers = &krb5_kadm5_policy_handlers;
	return retval;
}

PHP_METHOD(KADM5Policy, __construct)
{
	char *spolicy = NULL;
	int spolicy_len;

	krb5_kadm5_policy_object *obj;

	zval *connobj = NULL;
	zval *dummy_retval, *func;
Esempio n. 22
0
File: file.c Progetto: Intecture/api
}

zend_object_value create_php_file(zend_class_entry *class_type TSRMLS_DC) {
    zend_object_value retval;
    php_file  *intern;
    zval *tmp;

    intern = (php_file*)emalloc(sizeof(php_file));
    memset(intern, 0, sizeof(php_file));

    zend_object_std_init(&intern->std, class_type TSRMLS_CC);
    object_properties_init(&intern->std, class_type);

    retval.handle = zend_objects_store_put(
        intern,
        (zend_objects_store_dtor_t) zend_objects_destroy_object,
        free_php_file,
        NULL TSRMLS_CC
    );
    retval.handlers = zend_get_std_object_handlers();

    return retval;
}

void free_php_file(void *object TSRMLS_DC) {
    php_file *file = (php_file*)object;
    if (file->file) {
        int rc = file_free(file->file);
        assert(rc == 0);
    }
    efree(file);
}
Esempio n. 23
0
	zval *tmp;
#endif

	/* Create the object. */
	obj = (sync_Mutex_object *)ecalloc(1, sizeof(sync_Mutex_object));

	/* Initialize Zend. */
	zend_object_std_init(&obj->std, ce TSRMLS_CC);
#if PHP_VERSION_ID < 50399
	zend_hash_copy(obj->std.properties, &ce->default_properties, (copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *));
#else
	object_properties_init(&obj->std, ce);
#endif

	/* Initialize destructor callback. */
	retval.handle = zend_objects_store_put((void *)obj, (zend_objects_store_dtor_t)zend_objects_destroy_object, sync_Mutex_free_object, NULL TSRMLS_CC);
	retval.handlers = zend_get_std_object_handlers();

	/* Initialize Mutex information. */
#if defined(PHP_WIN32)
	obj->MxWinMutex = NULL;
	InitializeCriticalSection(&obj->MxWinCritSection);
#else
	obj->MxSemMutex = SEM_FAILED;
	obj->MxAllocated = 0;
	pthread_mutex_init(&obj->MxPthreadCritSection, NULL);
#endif
	obj->MxOwnerID = 0;
	obj->MxCount = 0;

	return retval;
Esempio n. 24
0
/* {{{ ResourceBundle_object_create */
static zend_object_value ResourceBundle_object_create( zend_class_entry *ce TSRMLS_DC )
{
	zend_object_value     retval;
	ResourceBundle_object *rb;

	rb = ecalloc( 1, sizeof(ResourceBundle_object) );

	zend_object_std_init( (zend_object *) rb, ce TSRMLS_CC );

	intl_error_init( INTL_DATA_ERROR_P(rb) TSRMLS_CC );
	rb->me = NULL;
	rb->child = NULL;

	retval.handlers = &ResourceBundle_object_handlers;
	retval.handle = zend_objects_store_put(	rb, ResourceBundle_object_destroy, NULL, NULL TSRMLS_CC );

	return retval;
}
/* }}} */

/* {{{ ResourceBundle_ctor */
static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS) 
{
	char *    bundlename;
	int       bundlename_len = 0;
	char *    locale;
	int       locale_len = 0;
	zend_bool fallback = 1;

	char *    pbuf;
Esempio n. 25
0
static zend_object_value server_websocket_route_ctor(zend_class_entry *ce TSRMLS_DC)
{
    struct php_can_server_route *route;
    zend_object_value retval;
    
    route = ecalloc(1, sizeof(*route));
    zend_object_std_init(&route->std, ce TSRMLS_CC);
    PHP_CAN_INIT_OBJ_PROPS(route, ce);
    route->handler = NULL;
    route->methods = PHP_CAN_SERVER_ROUTE_METHOD_GET;
    route->regexp = NULL;
    route->route = NULL;
    route->casts = NULL;
    retval.handle = zend_objects_store_put(route,       
            (zend_objects_store_dtor_t)zend_objects_destroy_object,
            server_websocket_route_dtor,
            NULL TSRMLS_CC);
    retval.handlers = &server_websocket_route_obj_handlers;
    return retval;
}

static void server_websocket_route_dtor(void *object TSRMLS_DC)
{
    struct php_can_server_route *route = (struct php_can_server_route*)object;

    if (route->handler) {
        zval_ptr_dtor(&route->handler);
    }
    
    if (route->regexp) {
        efree(route->regexp);
Esempio n. 26
0
	zend_iterator_class_entry.name = "__iterator_wrapper";
}

static void iter_wrapper_dtor(void *object, zend_object_handle handle TSRMLS_DC)
{
	zend_object_iterator *iter = (zend_object_iterator*)object;
	iter->funcs->dtor(iter TSRMLS_CC);
}

ZEND_API zval *zend_iterator_wrap(zend_object_iterator *iter TSRMLS_DC)
{
	zval *wrapped;
	
	MAKE_STD_ZVAL(wrapped);
	Z_TYPE_P(wrapped) = IS_OBJECT;
	wrapped->value.obj.handle = zend_objects_store_put(iter, iter_wrapper_dtor, NULL, NULL TSRMLS_CC);
	wrapped->value.obj.handlers = &iterator_object_handlers;

	return wrapped;
}

ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap(
	zval *array_ptr, zend_object_iterator **iter TSRMLS_DC)
{
	switch (Z_TYPE_P(array_ptr)) {
		case IS_OBJECT:
			if (Z_OBJ_HT_P(array_ptr) == &iterator_object_handlers) {
				*iter = (zend_object_iterator *)zend_object_store_get_object(array_ptr TSRMLS_CC);
				return ZEND_ITER_OBJECT;
			}
			if (HASH_OF(array_ptr)) {