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

Reply via email to