Annotation of embedaddon/php/ext/mysqlnd/mysqlnd_reverse_api.c, revision 1.1.1.2

1.1       misho       1: /*
                      2:   +----------------------------------------------------------------------+
                      3:   | PHP Version 5                                                        |
                      4:   +----------------------------------------------------------------------+
1.1.1.2 ! misho       5:   | Copyright (c) 2006-2013 The PHP Group                                |
1.1       misho       6:   +----------------------------------------------------------------------+
                      7:   | This source file is subject to version 3.01 of the PHP license,      |
                      8:   | that is bundled with this package in the file LICENSE, and is        |
                      9:   | available through the world-wide-web at the following url:           |
                     10:   | http://www.php.net/license/3_01.txt                                  |
                     11:   | If you did not receive a copy of the PHP license and are unable to   |
                     12:   | obtain it through the world-wide-web, please send a note to          |
                     13:   | license@php.net so we can mail you a copy immediately.               |
                     14:   +----------------------------------------------------------------------+
                     15:   | Authors: Andrey Hristov <andrey@mysql.com>                           |
                     16:   |          Ulf Wendel <uwendel@mysql.com>                              |
                     17:   |          Georg Richter <georg@mysql.com>                             |
                     18:   +----------------------------------------------------------------------+
                     19: */
                     20: 
                     21: /* $Id: mysqlnd.c 317989 2011-10-10 20:49:28Z andrey $ */
                     22: #include "php.h"
                     23: #include "mysqlnd.h"
                     24: #include "mysqlnd_priv.h"
                     25: #include "mysqlnd_debug.h"
                     26: #include "mysqlnd_reverse_api.h"
                     27: 
                     28: 
                     29: static HashTable mysqlnd_api_ext_ht;
                     30: 
                     31: 
                     32: /* {{{ mysqlnd_reverse_api_init */
                     33: PHPAPI void
                     34: mysqlnd_reverse_api_init(TSRMLS_D)
                     35: {
                     36:        zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1);
                     37: }
                     38: /* }}} */
                     39: 
                     40: 
                     41: /* {{{ mysqlnd_reverse_api_end */
                     42: PHPAPI void
                     43: mysqlnd_reverse_api_end(TSRMLS_D)
                     44: {
                     45:        zend_hash_destroy(&mysqlnd_api_ext_ht);
                     46: }
                     47: /* }}} */
                     48: 
                     49: 
                     50: /* {{{ myslqnd_get_api_extensions */
                     51: PHPAPI HashTable *
                     52: mysqlnd_reverse_api_get_api_list(TSRMLS_D)
                     53: {
                     54:        return &mysqlnd_api_ext_ht;
                     55: }
                     56: /* }}} */
                     57: 
                     58: 
                     59: /* {{{ mysqlnd_reverse_api_register_api */
                     60: PHPAPI void
                     61: mysqlnd_reverse_api_register_api(MYSQLND_REVERSE_API * apiext TSRMLS_DC)
                     62: {
                     63:        zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name) + 1, &apiext,
                     64:                                  sizeof(MYSQLND_REVERSE_API), NULL);
                     65: }
                     66: /* }}} */
                     67: 
                     68: 
                     69: /* {{{ zval_to_mysqlnd */
                     70: PHPAPI MYSQLND *
                     71: zval_to_mysqlnd(zval * zv TSRMLS_DC)
                     72: {
                     73:        MYSQLND * retval;
                     74:        MYSQLND_REVERSE_API ** elem;
                     75: 
                     76:        for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht);
                     77:                 zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS;
                     78:                 zend_hash_move_forward(&mysqlnd_api_ext_ht))
                     79:        {
                     80:                if ((*elem)->conversion_cb) {
                     81:                        retval = (*elem)->conversion_cb(zv TSRMLS_CC);
                     82:                        if (retval) {
                     83:                                return retval;
                     84:                        }
                     85:                }
                     86:        }
                     87: 
                     88:        return NULL;
                     89: }
                     90: /* }}} */
                     91: 
                     92: 
                     93: /*
                     94:  * Local variables:
                     95:  * tab-width: 4
                     96:  * c-basic-offset: 4
                     97:  * End:
                     98:  * vim600: noet sw=4 ts=4 fdm=marker
                     99:  * vim<600: noet sw=4 ts=4
                    100:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>