root/ext/spl/spl_engine.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. spl_instantiate
  2. spl_offset_convert_to_long

   1 /*
   2    +----------------------------------------------------------------------+
   3    | PHP Version 7                                                        |
   4    +----------------------------------------------------------------------+
   5    | Copyright (c) 1997-2016 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: Marcus Boerger <helly@php.net>                              |
  16    +----------------------------------------------------------------------+
  17  */
  18 
  19 #ifdef HAVE_CONFIG_H
  20 # include "config.h"
  21 #endif
  22 
  23 #include "php.h"
  24 #include "php_ini.h"
  25 #include "ext/standard/info.h"
  26 #include "zend_interfaces.h"
  27 
  28 #include "php_spl.h"
  29 #include "spl_functions.h"
  30 #include "spl_engine.h"
  31 
  32 #include "spl_array.h"
  33 
  34 /* {{{ spl_instantiate */
  35 PHPAPI void spl_instantiate(zend_class_entry *pce, zval *object)
  36 {
  37         object_init_ex(object, pce);
  38 }
  39 /* }}} */
  40 
  41 PHPAPI zend_long spl_offset_convert_to_long(zval *offset) /* {{{ */
  42 {
  43         zend_ulong idx;
  44 
  45 try_again:
  46         switch (Z_TYPE_P(offset)) {
  47         case IS_STRING:
  48                 if (ZEND_HANDLE_NUMERIC(Z_STR_P(offset), idx)) {
  49                         return idx;
  50                 }
  51                 break;
  52         case IS_DOUBLE:
  53                 return (zend_long)Z_DVAL_P(offset);
  54         case IS_LONG:
  55                 return Z_LVAL_P(offset);
  56         case IS_FALSE:
  57                 return 0;
  58         case IS_TRUE:
  59                 return 1;
  60         case IS_REFERENCE:
  61                 offset = Z_REFVAL_P(offset);
  62                 goto try_again;
  63         case IS_RESOURCE:
  64                 return Z_RES_HANDLE_P(offset);
  65         }
  66         return -1;
  67 }
  68 /* }}} */
  69 
  70 /*
  71  * Local variables:
  72  * tab-width: 4
  73  * c-basic-offset: 4
  74  * End:
  75  * vim600: fdm=marker
  76  * vim: noet sw=4 ts=4
  77  */

/* [<][>][^][v][top][bottom][index][help] */