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

1.1     ! misho       1: /*
        !             2:   +----------------------------------------------------------------------+
        !             3:   | PHP Version 5                                                        |
        !             4:   +----------------------------------------------------------------------+
        !             5:   | Copyright (c) 2006-2012 The PHP Group                                |
        !             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>