felipe Sun Aug 24 04:02:20 2008 UTC
Modified files:
/php-src/ext/gd gd.c
/php-src/ext/wddx wddx.c
Log:
- MFB: New parameter parsing API
- CS (wddx)
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/gd.c?r1=1.391&r2=1.392&diff_format=u
Index: php-src/ext/gd/gd.c
diff -u php-src/ext/gd/gd.c:1.391 php-src/ext/gd/gd.c:1.392
--- php-src/ext/gd/gd.c:1.391 Mon Aug 4 18:22:02 2008
+++ php-src/ext/gd/gd.c Sun Aug 24 04:02:20 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: gd.c,v 1.391 2008/08/04 18:22:02 felipe Exp $ */
+/* $Id: gd.c,v 1.392 2008/08/24 04:02:20 felipe Exp $ */
/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
Cold Spring Harbor Labs. */
@@ -4143,44 +4143,36 @@
Return the bounding box needed by a string if rasterized */
PHP_FUNCTION(imagepsbbox)
{
- zval **str, **fnt, **sz, **sp, **wd, **ang;
- int i, space, add_width = 0, char_width, amount_kern;
+ zval *fnt;
+ long sz = 0, sp, wd;
+ char *str;
+ int i, space = 0, add_width = 0, char_width, amount_kern;
int cur_x, cur_y, dx, dy;
int x1, y1, x2, y2, x3, y3, x4, y4;
int *f_ind;
- int per_char = 0;
+ int str_len, per_char = 0;
+ int argc = ZEND_NUM_ARGS();
double angle, sin_a = 0, cos_a = 0;
BBox char_bbox, str_bbox = {0, 0, 0, 0};
- switch (ZEND_NUM_ARGS()) {
- case 3:
- if (zend_get_parameters_ex(3, &str, &fnt, &sz) ==
FAILURE) {
- RETURN_FALSE;
- }
- space = 0;
- break;
- case 6:
- if (zend_get_parameters_ex(6, &str, &fnt, &sz, &sp,
&wd, &ang) == FAILURE) {
- RETURN_FALSE;
- }
- convert_to_long_ex(sp);
- convert_to_long_ex(wd);
- convert_to_double_ex(ang);
- space = Z_LVAL_PP(sp);
- add_width = Z_LVAL_PP(wd);
- angle = Z_DVAL_PP(ang) * M_PI / 180;
- sin_a = sin(angle);
- cos_a = cos(angle);
- per_char = add_width || angle ? 1 : 0;
- break;
- default:
- ZEND_WRONG_PARAM_COUNT();
+ if (argc != 3 && argc != 6) {
+ ZEND_WRONG_PARAM_COUNT();
+ }
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "srl|lld", &str,
&str_len, &fnt, &sz, &sp, &wd, &angle) == FAILURE) {
+ return;
+ }
+
+ if (argc == 6) {
+ space = sp;
+ add_width = wd;
+ angle = angle * M_PI / 180;
+ sin_a = sin(angle);
+ cos_a = cos(angle);
+ per_char = add_width || angle ? 1 : 0;
}
- ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font);
-
- convert_to_string_ex(str);
- convert_to_long_ex(sz);
+ ZEND_FETCH_RESOURCE(f_ind, int *, &fnt, -1, "Type 1 font", le_ps_font);
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
@@ -4191,15 +4183,15 @@
space += T1_GetCharWidth(*f_ind, ' ');
cur_x = cur_y = 0;
- for (i = 0; i < Z_STRLEN_PP(str); i++) {
- if (Z_STRVAL_PP(str)[i] == ' ') {
+ for (i = 0; i < str_len; i++) {
+ if (str[i] == ' ') {
char_bbox.llx = char_bbox.lly = char_bbox.ury =
0;
char_bbox.urx = char_width = space;
} else {
- char_bbox = T1_GetCharBBox(*f_ind,
Z_STRVAL_PP(str)[i]);
- char_width = T1_GetCharWidth(*f_ind,
Z_STRVAL_PP(str)[i]);
+ char_bbox = T1_GetCharBBox(*f_ind, str[i]);
+ char_width = T1_GetCharWidth(*f_ind, str[i]);
}
- amount_kern = i ? T1_GetKerning(*f_ind,
Z_STRVAL_PP(str)[i - 1], Z_STRVAL_PP(str)[i]) : 0;
+ amount_kern = i ? T1_GetKerning(*f_ind, str[i - 1],
str[i]) : 0;
/* Transfer character bounding box to right place */
x1 = new_x(char_bbox.llx, char_bbox.lly) + cur_x;
@@ -4228,7 +4220,7 @@
}
} else {
- str_bbox = T1_GetStringBBox(*f_ind, Z_STRVAL_PP(str),
Z_STRLEN_PP(str), space, T1_KERNING);
+ str_bbox = T1_GetStringBBox(*f_ind, str, str_len, space,
T1_KERNING);
}
if (T1_errno) {
http://cvs.php.net/viewvc.cgi/php-src/ext/wddx/wddx.c?r1=1.152&r2=1.153&diff_format=u
Index: php-src/ext/wddx/wddx.c
diff -u php-src/ext/wddx/wddx.c:1.152 php-src/ext/wddx/wddx.c:1.153
--- php-src/ext/wddx/wddx.c:1.152 Fri Jun 27 15:35:49 2008
+++ php-src/ext/wddx/wddx.c Sun Aug 24 04:02:20 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: wddx.c,v 1.152 2008/06/27 15:35:49 felipe Exp $ */
+/* $Id: wddx.c,v 1.153 2008/08/24 04:02:20 felipe Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -239,12 +239,12 @@
if (stack->elements) {
for (i = 0; i < stack->top; i++) {
- if (((st_entry *)stack->elements[i])->data)
- {
+ if (((st_entry *)stack->elements[i])->data) {
zval_ptr_dtor(&((st_entry
*)stack->elements[i])->data);
}
- if (((st_entry *)stack->elements[i])->varname)
+ if (((st_entry *)stack->elements[i])->varname) {
efree(((st_entry
*)stack->elements[i])->varname);
+ }
efree(stack->elements[i]);
}
efree(stack->elements);
@@ -526,8 +526,9 @@
for (zend_hash_internal_pointer_reset(HASH_OF(obj));
zend_hash_get_current_data(HASH_OF(obj), (void**)&ent)
== SUCCESS;
zend_hash_move_forward(HASH_OF(obj))) {
- if (*ent == obj)
+ if (*ent == obj) {
continue;
+ }
if (zend_hash_get_current_key_ex(HASH_OF(obj), &key,
&key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) {
char *class_name, *prop_name;
@@ -694,8 +695,7 @@
HashTable *target_hash;
TSRMLS_FETCH();
- if (Z_TYPE_P(name_var) == IS_STRING)
- {
+ if (Z_TYPE_P(name_var) == IS_STRING) {
if (!EG(active_symbol_table)) {
zend_rebuild_symbol_table(TSRMLS_C);
}
@@ -703,9 +703,7 @@
Z_STRLEN_P(name_var)+1,
(void**)&val) != FAILURE) {
php_wddx_serialize_var(packet, *val,
Z_STRVAL_P(name_var), Z_STRLEN_P(name_var) TSRMLS_CC);
}
- }
- else if (Z_TYPE_P(name_var) == IS_ARRAY || Z_TYPE_P(name_var) ==
IS_OBJECT)
- {
+ } else if (Z_TYPE_P(name_var) == IS_ARRAY || Z_TYPE_P(name_var) ==
IS_OBJECT) {
target_hash = HASH_OF(name_var);
zend_hash_internal_pointer_reset(target_hash);
@@ -920,8 +918,9 @@
TSRMLS_FETCH();
/* OBJECTS_FIXME */
- if (stack->top == 0)
+ if (stack->top == 0) {
return;
+ }
if (!strcmp(name, EL_STRING) || !strcmp(name, EL_NUMBER) ||
!strcmp(name, EL_BOOLEAN) || !strcmp(name, EL_NULL) ||
@@ -951,8 +950,9 @@
zval_dtor(fname);
FREE_ZVAL(fname);
- if (retval)
+ if (retval) {
zval_ptr_dtor(&retval);
+ }
}
if (stack->top > 1) {
@@ -1006,7 +1006,7 @@
} else if (Z_TYPE_P(ent2->data) ==
IS_OBJECT) {
zend_class_entry *old_scope =
EG(scope);
- EG(scope) =
Z_OBJCE_P(ent2->data);
+ EG(scope) = Z_OBJCE_P(ent2->data);
Z_DELREF_P(ent1->data);
add_property_zval(ent2->data,
ent1->varname, ent1->data);
EG(scope) = old_scope;
@@ -1015,14 +1015,13 @@
}
efree(ent1->varname);
} else {
- zend_hash_next_index_insert(target_hash,
-
&ent1->data,
-
sizeof(zval *), NULL);
+
zend_hash_next_index_insert(target_hash, &ent1->data, sizeof(zval *), NULL);
}
}
efree(ent1);
- } else
+ } else {
stack->done = 1;
+ }
} else if (!strcmp(name, EL_VAR) && stack->varname) {
efree(stack->varname);
} else if (!strcmp(name, EL_FIELD)) {
@@ -1084,15 +1083,16 @@
break;
case ST_BOOLEAN:
- if (!strcmp(s, "true"))
+ if (!strcmp(s, "true")) {
Z_LVAL_P(ent->data) = 1;
- else if (!strcmp(s, "false"))
+ } else if (!strcmp(s, "false")) {
Z_LVAL_P(ent->data) = 0;
- else {
+ } else {
stack->top--;
zval_ptr_dtor(&ent->data);
- if (ent->varname)
+ if (ent->varname) {
efree(ent->varname);
+ }
efree(ent);
}
break;
@@ -1147,8 +1147,9 @@
*return_value = *(ent->data);
zval_copy_ctor(return_value);
retval = SUCCESS;
- } else
+ } else {
retval = FAILURE;
+ }
wddx_stack_destroy(&stack);
@@ -1187,18 +1188,10 @@
{
int argc, i;
wddx_packet *packet;
- zval ***args;
-
- argc = ZEND_NUM_ARGS();
- if (argc < 1) {
- WRONG_PARAM_COUNT;
- }
+ zval ***args = NULL;
- /* Allocate arguments array and get the arguments, checking for errors.
*/
- args = (zval ***)safe_emalloc(argc, sizeof(zval **), 0);
- if (zend_get_parameters_array_ex(argc, args) == FAILURE) {
- efree(args);
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &argc)
== FAILURE) {
+ return;
}
packet = php_wddx_constructor();
@@ -1289,40 +1282,31 @@
}
/* }}} */
-/* {{{ proto int wddx_add_vars(int packet_id, mixed var_names [, mixed ...])
+/* {{{ proto int wddx_add_vars(resource packet_id, mixed var_names [, mixed
...])
Serializes given variables and adds them to packet given by packet_id */
PHP_FUNCTION(wddx_add_vars)
{
- int argc, i;
- zval ***args;
- zval **packet_id;
+ int num_args, i;
+ zval ***args = NULL;
+ zval *packet_id;
wddx_packet *packet = NULL;
- argc = ZEND_NUM_ARGS();
- if (argc < 2) {
- WRONG_PARAM_COUNT;
- }
-
- /* Allocate arguments array and get the arguments, checking for errors.
*/
- args = (zval ***)safe_emalloc(argc, sizeof(zval **), 0);
- if (zend_get_parameters_array_ex(argc, args) == FAILURE) {
- efree(args);
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r+", &packet_id,
&args, &num_args) == FAILURE) {
+ return;
}
-
- packet_id = args[0];
- packet = (wddx_packet *)zend_fetch_resource(packet_id TSRMLS_CC, -1,
"WDDX packet ID", NULL, 1, le_wddx);
- if (!packet)
- {
+ ZEND_FETCH_RESOURCE(packet, wddx_packet *, &packet_id, -1, "WDDX packet
ID", le_wddx);
+
+ if (!packet) {
efree(args);
RETURN_FALSE;
}
- for (i=1; i<argc; i++) {
- if (Z_TYPE_PP(args[i]) != IS_ARRAY && Z_TYPE_PP(args[i]) !=
IS_OBJECT)
+ for (i=1; i<num_args; i++) {
+ if (Z_TYPE_PP(args[i]) != IS_ARRAY && Z_TYPE_PP(args[i]) !=
IS_OBJECT) {
convert_to_string_ex(args[i]);
- php_wddx_add_var(packet, (*args[i]));
+ }
+ php_wddx_add_var(packet, *args[i]);
}
efree(args);
@@ -1339,14 +1323,14 @@
int payload_len;
php_stream *stream = NULL;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &packet) ==
FAILURE)
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &packet) ==
FAILURE) {
return;
+ }
if (Z_TYPE_P(packet) == IS_STRING) {
payload = Z_STRVAL_P(packet);
payload_len = Z_STRLEN_P(packet);
- }
- else if (Z_TYPE_P(packet) == IS_RESOURCE) {
+ } else if (Z_TYPE_P(packet) == IS_RESOURCE) {
php_stream_from_zval(stream, &packet);
if (stream) {
payload_len = php_stream_copy_to_mem(stream, (void
**)&payload, PHP_STREAM_COPY_ALL, 0);
@@ -1356,13 +1340,15 @@
return;
}
- if (payload_len == 0)
+ if (payload_len == 0) {
return;
+ }
php_wddx_unserialize_ex(payload, payload_len, return_value);
- if (stream)
+ if (stream) {
pefree(payload, 0);
+ }
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php