1
/**********************************************************************
2
* $Id: php_mapscript.c 9765 2010-01-28 15:32:10Z aboudreault $
5
* Purpose: PHP/MapScript extension for MapServer. External interface
7
* Author: Daniel Morissette, DM Solutions Group (dmorissette@dmsolutions.ca)
8
* Alan Boudreault, Mapgears
10
**********************************************************************
11
* Copyright (c) 2000-2010, Daniel Morissette, DM Solutions Group Inc.
13
* Permission is hereby granted, free of charge, to any person obtaining a
14
* copy of this software and associated documentation files (the "Software"),
15
* to deal in the Software without restriction, including without limitation
16
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
* and/or sell copies of the Software, and to permit persons to whom the
18
* Software is furnished to do so, subject to the following conditions:
20
* The above copyright notice and this permission notice shall be included in
21
* all copies of this Software or works derived from this Software.
23
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
* DEALINGS IN THE SOFTWARE.
30
**********************************************************************/
32
#include "php_mapscript.h"
34
zend_class_entry *mapscript_ce_labelcachemember;
36
ZEND_BEGIN_ARG_INFO_EX(labelcachemember___get_args, 0, 0, 1)
37
ZEND_ARG_INFO(0, property)
40
ZEND_BEGIN_ARG_INFO_EX(labelcachemember___set_args, 0, 0, 2)
41
ZEND_ARG_INFO(0, property)
42
ZEND_ARG_INFO(0, value)
45
/* {{{ proto void __construct()
46
labelCacheMemberObj CANNOT be instanciated, this will throw an exception on use */
47
PHP_METHOD(labelCacheMemberObj, __construct)
49
mapscript_throw_exception("labelCacheMemberObj cannot be constructed" TSRMLS_CC);
53
PHP_METHOD(labelCacheMemberObj, __get)
57
zval *zobj = getThis();
58
php_labelcachemember_object *php_labelcachemember;
60
PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
61
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
62
&property, &property_len) == FAILURE) {
63
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
66
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
68
php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
70
IF_GET_STRING("text", php_labelcachemember->labelcachemember->text)
71
else IF_GET_LONG("classindex", php_labelcachemember->labelcachemember->classindex)
72
else IF_GET_LONG("featuresize", php_labelcachemember->labelcachemember->featuresize)
73
else IF_GET_LONG("layerindex", php_labelcachemember->labelcachemember->layerindex)
74
else IF_GET_LONG("numstyles", php_labelcachemember->labelcachemember->numstyles)
75
else IF_GET_LONG("shapeindex", php_labelcachemember->labelcachemember->shapeindex)
76
else IF_GET_LONG("status", php_labelcachemember->labelcachemember->status)
77
else IF_GET_LONG("markerid", php_labelcachemember->labelcachemember->markerid)
78
else IF_GET_LONG("tileindex", php_labelcachemember->labelcachemember->tileindex)
79
else IF_GET_OBJECT("point", mapscript_ce_point, php_labelcachemember->point, &php_labelcachemember->labelcachemember->point)
80
else IF_GET_OBJECT("label", mapscript_ce_label, php_labelcachemember->label, &php_labelcachemember->labelcachemember->label)
81
else IF_GET_OBJECT("styles", mapscript_ce_style, php_labelcachemember->styles, php_labelcachemember->labelcachemember->styles)
82
else IF_GET_OBJECT("poly", mapscript_ce_shape, php_labelcachemember->poly, php_labelcachemember->labelcachemember->poly)
85
mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
89
PHP_METHOD(labelCacheMemberObj, __set)
94
zval *zobj = getThis();
95
php_labelcachemember_object *php_labelcachemember;
97
PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
98
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz",
99
&property, &property_len, &value) == FAILURE) {
100
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
103
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
105
php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
107
if ( (STRING_EQUAL("text", property)) ||
108
(STRING_EQUAL("classindex", property)) ||
109
(STRING_EQUAL("featuresize", property)) ||
110
(STRING_EQUAL("layerindex", property)) ||
111
(STRING_EQUAL("numstyles", property)) ||
112
(STRING_EQUAL("shapeindex", property)) ||
113
(STRING_EQUAL("status", property)) ||
114
(STRING_EQUAL("markerid", property)) ||
115
(STRING_EQUAL("tileindex", property)) ||
116
(STRING_EQUAL("label", property)) ||
117
(STRING_EQUAL("styles", property)) ||
118
(STRING_EQUAL("poly", property)) ||
119
(STRING_EQUAL("point", property)))
121
mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property);
125
mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
131
PHP_METHOD(labelCacheMemberObj, free)
133
zval *zobj = getThis();
134
php_labelcachemember_object *php_labelcachemember;
136
PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
137
if (zend_parse_parameters_none() == FAILURE) {
138
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
141
PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
143
php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
145
MAPSCRIPT_DELREF(php_labelcachemember->point);
146
MAPSCRIPT_DELREF(php_labelcachemember->label);
147
MAPSCRIPT_DELREF(php_labelcachemember->styles);
148
MAPSCRIPT_DELREF(php_labelcachemember->poly);
152
zend_function_entry labelcachemember_functions[] = {
153
PHP_ME(labelCacheMemberObj, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
154
PHP_ME(labelCacheMemberObj, __get, labelcachemember___get_args, ZEND_ACC_PUBLIC)
155
PHP_ME(labelCacheMemberObj, __set, labelcachemember___set_args, ZEND_ACC_PUBLIC)
156
PHP_MALIAS(labelCacheMemberObj, setProperty, __set, NULL, ZEND_ACC_PUBLIC)
157
PHP_ME(labelCacheMemberObj, free, NULL, ZEND_ACC_PUBLIC)
162
void mapscript_create_labelcachemember(labelCacheMemberObj *labelcachemember,
163
parent_object parent, zval *return_value TSRMLS_DC)
165
php_labelcachemember_object * php_labelcachemember;
166
object_init_ex(return_value, mapscript_ce_labelcachemember);
167
php_labelcachemember = (php_labelcachemember_object *)zend_object_store_get_object(return_value TSRMLS_CC);
168
php_labelcachemember->labelcachemember = labelcachemember;
170
php_labelcachemember->parent = parent;
172
MAPSCRIPT_ADDREF(parent.val);
175
static void mapscript_labelcachemember_object_destroy(void *object TSRMLS_DC)
177
php_labelcachemember_object *php_labelcachemember = (php_labelcachemember_object *)object;
179
MAPSCRIPT_FREE_OBJECT(php_labelcachemember);
181
MAPSCRIPT_FREE_PARENT(php_labelcachemember->parent);
182
MAPSCRIPT_DELREF(php_labelcachemember->point);
183
MAPSCRIPT_DELREF(php_labelcachemember->label);
184
MAPSCRIPT_DELREF(php_labelcachemember->styles);
185
MAPSCRIPT_DELREF(php_labelcachemember->poly);
187
/* We don't need to free the labelCacheMemberObj, the mapObj will do it */
192
static zend_object_value mapscript_labelcachemember_object_new(zend_class_entry *ce TSRMLS_DC)
194
zend_object_value retval;
195
php_labelcachemember_object *php_labelcachemember;
197
MAPSCRIPT_ALLOC_OBJECT(php_labelcachemember, php_labelcachemember_object);
199
retval = mapscript_object_new(&php_labelcachemember->std, ce,
200
&mapscript_labelcachemember_object_destroy TSRMLS_CC);
202
MAPSCRIPT_INIT_PARENT(php_labelcachemember->parent);
203
php_labelcachemember->point = NULL;
204
php_labelcachemember->label = NULL;
205
php_labelcachemember->styles = NULL;
206
php_labelcachemember->poly = NULL;
211
PHP_MINIT_FUNCTION(labelcachemember)
215
MAPSCRIPT_REGISTER_CLASS("labelCacheMemberObj",
216
labelcachemember_functions,
217
mapscript_ce_labelcachemember,
218
mapscript_labelcachemember_object_new);
220
mapscript_ce_labelcachemember->ce_flags |= ZEND_ACC_FINAL_CLASS;