~ubuntu-branches/ubuntu/saucy/mapserver/saucy-security

« back to all changes in this revision

Viewing changes to mapscript/php/labelcachemember.c

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2011-12-23 14:02:06 UTC
  • mfrom: (26.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20111223140206-n3h9t2hsa8hyslmu
Tags: 6.0.1-2
Added missed stuff for libmapscript-perl.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**********************************************************************
 
2
 * $Id: php_mapscript.c 9765 2010-01-28 15:32:10Z aboudreault $
 
3
 *
 
4
 * Project:  MapServer
 
5
 * Purpose:  PHP/MapScript extension for MapServer.  External interface 
 
6
 *           functions
 
7
 * Author:   Daniel Morissette, DM Solutions Group (dmorissette@dmsolutions.ca)
 
8
 *           Alan Boudreault, Mapgears
 
9
 *
 
10
 **********************************************************************
 
11
 * Copyright (c) 2000-2010, Daniel Morissette, DM Solutions Group Inc.
 
12
 *
 
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:
 
19
 * 
 
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.
 
22
 * 
 
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
 **********************************************************************/
 
31
 
 
32
#include "php_mapscript.h"
 
33
 
 
34
zend_class_entry *mapscript_ce_labelcachemember;
 
35
 
 
36
ZEND_BEGIN_ARG_INFO_EX(labelcachemember___get_args, 0, 0, 1)
 
37
  ZEND_ARG_INFO(0, property)
 
38
ZEND_END_ARG_INFO()
 
39
 
 
40
ZEND_BEGIN_ARG_INFO_EX(labelcachemember___set_args, 0, 0, 2)
 
41
  ZEND_ARG_INFO(0, property)
 
42
  ZEND_ARG_INFO(0, value)
 
43
ZEND_END_ARG_INFO()
 
44
 
 
45
/* {{{ proto void __construct() 
 
46
   labelCacheMemberObj CANNOT be instanciated, this will throw an exception on use */
 
47
PHP_METHOD(labelCacheMemberObj, __construct)
 
48
{
 
49
    mapscript_throw_exception("labelCacheMemberObj cannot be constructed" TSRMLS_CC);
 
50
}
 
51
/* }}} */
 
52
 
 
53
PHP_METHOD(labelCacheMemberObj, __get)
 
54
{
 
55
    char *property;
 
56
    long property_len;
 
57
    zval *zobj = getThis();
 
58
    php_labelcachemember_object *php_labelcachemember;
 
59
 
 
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);
 
64
        return;
 
65
    }
 
66
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
67
    
 
68
    php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
69
 
 
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) 
 
83
    else 
 
84
    {
 
85
        mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
 
86
    }
 
87
}
 
88
 
 
89
PHP_METHOD(labelCacheMemberObj, __set)
 
90
{
 
91
    char *property;
 
92
    long property_len;
 
93
    zval *value;
 
94
    zval *zobj = getThis();
 
95
    php_labelcachemember_object *php_labelcachemember;
 
96
 
 
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);
 
101
        return;
 
102
    }
 
103
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
104
    
 
105
    php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
106
 
 
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)))
 
120
    {
 
121
        mapscript_throw_exception("Property '%s' is read-only and cannot be set." TSRMLS_CC, property);
 
122
    }
 
123
    else 
 
124
    {
 
125
        mapscript_throw_exception("Property '%s' does not exist in this object." TSRMLS_CC, property);
 
126
    }      
 
127
}
 
128
 
 
129
/* proto void free()
 
130
   Free the object */
 
131
PHP_METHOD(labelCacheMemberObj, free)
 
132
{
 
133
    zval *zobj = getThis();
 
134
    php_labelcachemember_object *php_labelcachemember;
 
135
 
 
136
    PHP_MAPSCRIPT_ERROR_HANDLING(TRUE);
 
137
    if (zend_parse_parameters_none() == FAILURE) {
 
138
        PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
139
        return;
 
140
    }
 
141
    PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE);
 
142
    
 
143
    php_labelcachemember = (php_labelcachemember_object *) zend_object_store_get_object(zobj TSRMLS_CC);
 
144
 
 
145
    MAPSCRIPT_DELREF(php_labelcachemember->point);
 
146
    MAPSCRIPT_DELREF(php_labelcachemember->label);
 
147
    MAPSCRIPT_DELREF(php_labelcachemember->styles);
 
148
    MAPSCRIPT_DELREF(php_labelcachemember->poly);
 
149
}
 
150
/* }}} */
 
151
 
 
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)
 
158
    {NULL, NULL, NULL}
 
159
};
 
160
 
 
161
 
 
162
void mapscript_create_labelcachemember(labelCacheMemberObj *labelcachemember, 
 
163
                                        parent_object parent, zval *return_value TSRMLS_DC)
 
164
{
 
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;
 
169
 
 
170
    php_labelcachemember->parent = parent;
 
171
 
 
172
    MAPSCRIPT_ADDREF(parent.val);
 
173
}
 
174
 
 
175
static void mapscript_labelcachemember_object_destroy(void *object TSRMLS_DC)
 
176
{
 
177
    php_labelcachemember_object *php_labelcachemember = (php_labelcachemember_object *)object;
 
178
 
 
179
    MAPSCRIPT_FREE_OBJECT(php_labelcachemember);
 
180
 
 
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);
 
186
 
 
187
    /* We don't need to free the labelCacheMemberObj, the mapObj will do it */ 
 
188
 
 
189
    efree(object);
 
190
}
 
191
 
 
192
static zend_object_value mapscript_labelcachemember_object_new(zend_class_entry *ce TSRMLS_DC)
 
193
{
 
194
    zend_object_value retval;
 
195
    php_labelcachemember_object *php_labelcachemember;
 
196
 
 
197
    MAPSCRIPT_ALLOC_OBJECT(php_labelcachemember, php_labelcachemember_object);
 
198
 
 
199
    retval = mapscript_object_new(&php_labelcachemember->std, ce,
 
200
                                  &mapscript_labelcachemember_object_destroy TSRMLS_CC);
 
201
 
 
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;
 
207
 
 
208
    return retval;
 
209
}
 
210
 
 
211
PHP_MINIT_FUNCTION(labelcachemember)
 
212
{
 
213
    zend_class_entry ce;
 
214
 
 
215
    MAPSCRIPT_REGISTER_CLASS("labelCacheMemberObj", 
 
216
                             labelcachemember_functions,
 
217
                             mapscript_ce_labelcachemember,
 
218
                             mapscript_labelcachemember_object_new);
 
219
 
 
220
    mapscript_ce_labelcachemember->ce_flags |= ZEND_ACC_FINAL_CLASS; 
 
221
    
 
222
    return SUCCESS;
 
223
}
 
224