]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - vendor/pimple/pimple/ext/pimple/php_pimple.h
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / pimple / pimple / ext / pimple / php_pimple.h
1
2 /*
3  * This file is part of Pimple.
4  *
5  * Copyright (c) 2014 Fabien Potencier
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is furnished
12  * to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in all
15  * copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23  * THE SOFTWARE.
24  */
25
26 #ifndef PHP_PIMPLE_H
27 #define PHP_PIMPLE_H
28
29 extern zend_module_entry pimple_module_entry;
30 #define phpext_pimple_ptr &pimple_module_entry
31
32 #ifdef PHP_WIN32
33 #       define PHP_PIMPLE_API __declspec(dllexport)
34 #elif defined(__GNUC__) && __GNUC__ >= 4
35 #       define PHP_PIMPLE_API __attribute__ ((visibility("default")))
36 #else
37 #       define PHP_PIMPLE_API
38 #endif
39
40 #ifdef ZTS
41 #include "TSRM.h"
42 #endif
43
44 #define PIMPLE_VERSION "3.0.2"
45 #define PIMPLE_NS "Pimple"
46
47 #define PIMPLE_DEFAULT_ZVAL_CACHE_NUM   5
48 #define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
49
50 zend_module_entry *get_module(void);
51
52 PHP_MINIT_FUNCTION(pimple);
53 PHP_MINFO_FUNCTION(pimple);
54
55 PHP_METHOD(Pimple, __construct);
56 PHP_METHOD(Pimple, factory);
57 PHP_METHOD(Pimple, protect);
58 PHP_METHOD(Pimple, raw);
59 PHP_METHOD(Pimple, extend);
60 PHP_METHOD(Pimple, keys);
61 PHP_METHOD(Pimple, register);
62 PHP_METHOD(Pimple, offsetSet);
63 PHP_METHOD(Pimple, offsetUnset);
64 PHP_METHOD(Pimple, offsetGet);
65 PHP_METHOD(Pimple, offsetExists);
66
67 PHP_METHOD(PimpleClosure, invoker);
68
69 typedef struct _pimple_bucket_value {
70         zval *value; /* Must be the first element */
71         zval *raw;
72         zend_object_handle handle_num;
73         enum {
74                 PIMPLE_IS_PARAM   = 0,
75                 PIMPLE_IS_SERVICE = 2
76         } type;
77         zend_bool initialized;
78         zend_fcall_info_cache fcc;
79 } pimple_bucket_value;
80
81 typedef struct _pimple_object {
82         zend_object zobj;
83         HashTable values;
84         HashTable factories;
85         HashTable protected;
86 } pimple_object;
87
88 typedef struct _pimple_closure_object {
89         zend_object zobj;
90         zval *callable;
91         zval *factory;
92 } pimple_closure_object;
93
94 static const char sensiolabs_logo[] = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAAUCAMAAABvRTlyAAAAz1BMVEUAAAAAAAAAAAAsThWB5j4AAACD6T8AAACC6D+C6D6C6D+C6D4AAAAAAACC6D4AAAAAAACC6D8AAAAAAAAAAAAAAAAAAAAAAACC6D4AAAAAAAAAAACC6D4AAAAAAAAAAAAAAAAAAAAAAACC6D8AAACC6D4AAAAAAAAAAAAAAAAAAACC6D8AAACC6D6C6D+B6D+C6D+C6D+C6D8AAACC6D6C6D4AAACC6D/K/2KC6D+B6D6C6D6C6D+C6D8sTxUyWRhEeiEAAACC6D+C5z6B6D7drnEVAAAAQXRSTlMAE3oCNSUuDHFHzxaF9UFsu+irX+zlKzYimaJXktyOSFD6BolxqT7QGMMdarMIpuO28r9EolXKgR16OphfXYd4V14GtB4AAAMpSURBVEjHvVSJctowEF1jjME2RziMwUCoMfd9heZqG4n//6buLpJjkmYm03byZmxJa2nf6u2uQcG2bfhqRN4LoTKBzyGDm68M7mAwcOEdjo4zhA/Rf9Go/CVtTgiRhXfIC3EDH8F/eUX1/9KexRo+QgOdtHDsEe/sM7QT32/+K61Z1LFXcXJxN4pTbu1aTQUzuy2PIA0rDo0/0Aa5XFaJvKaVTrubywXvaa1Wq4Vu/Snr3Y7Aojh4VccwykW2N2oQ8wmjyut6+Q1t5ywIG5Npj1sh5E0B7YOzFDjfuRfaOh3O+MbbVNfTWS9COZk3Obd2su5d0a6IU9KLREbw8gEehWSr1r2sPWciXLG38r5NdW0xu9eioU87omjC9yNaMi5GNf6WppVSOqXCFkmCvMB3p9SROLoYQn5pDgQOujA1xjYvqH+plUdkwnmII8VxR/PKYkrfLLomhVlE3b/LhNbNr7hp0H2JaOc4v8dFB58HSsFTSafaqtY1sT3GO8wsy5rhokYPlRJdjPMajyYqTt1EHF/2uqSWQWmAjCUSmQ1MS3g8Btf1XOsy7YIC0CB1b5Xw1Vhba0zbxiCAQLH9TNPmHJXQUtJAN0KcDsoqLxsNvJrJExa7mKIdp2lRE2WexiS4pqWk/0jROlw6K6bV9YOBDGAuqMJ0bnuUKGB0L27bxgRhGEbzihbhxxXaQC88Vkwq8ldCi86RApWUb0Q+4VDosBCc+1s81lUdnBavH4Zp2mm3O44USwOfvSo9oBiwpFg71lMS1VKJLKljS3j9p+fOTvXXlsSNuEv6YPaZda9uRope0VJfKdo7fPiYfSmvFjXQbkhY0d9hCbBWIktRgEDieDhf1N3wbbkmNNgRy8hyl620yGQat/grV3HMpc2HDKTVmOPFz6ylPCKt/nXcAyV260jaAowwIW0YuBzrOgb/KrddZS9OmJaLgpWK4JX2DDuklcLZSDGcn8Vmx9YDNvT6UsjyBApRyFQVX7Vxm9TGxE16nmfRd8/zQoDmggQOTRh5Hv8pMt9Q/L2JmSwkMCE7dA4BuDjHJwfu0Om4QAhOjrN5XkIatglfiN/bUPdCQFjTYgAAAABJRU5ErkJggg==\">";
95
96 static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
97 static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
98
99 static void pimple_bucket_dtor(pimple_bucket_value *bucket);
100 static void pimple_free_bucket(pimple_bucket_value *bucket);
101
102 static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC);
103 static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC);
104 static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC);
105 static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC);
106 static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC);
107 static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC);
108
109 static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC);
110 static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC);
111 static zend_function *pimple_closure_get_constructor(zval * TSRMLS_DC);
112 static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
113
114 #ifdef ZTS
115 #define PIMPLE_G(v) TSRMG(pimple_globals_id, zend_pimple_globals *, v)
116 #else
117 #define PIMPLE_G(v) (pimple_globals.v)
118 #endif
119
120 #endif  /* PHP_PIMPLE_H */
121