cvs: php4 /ext/midgard mgd_internal.h midgard.c

From: Date: Tue, 06 Mar 2001 17:56:17 +0000
Subject: cvs: php4 /ext/midgard mgd_internal.h midgard.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4417@lists.php.net to get a copy of this message
davidg Tue Mar 6 09:56:17 2001 EDT Modified files: /php4/ext/midgard mgd_internal.h midgard.c Log: added ability to break tree walking Index: php4/ext/midgard/mgd_internal.h diff -u php4/ext/midgard/mgd_internal.h:1.8 php4/ext/midgard/mgd_internal.h:1.9 --- php4/ext/midgard/mgd_internal.h:1.8 Tue Feb 27 17:00:31 2001 +++ php4/ext/midgard/mgd_internal.h Tue Mar 6 09:56:17 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_internal.h,v 1.8 2001/02/28 01:00:31 davidg Exp $ +/* $Id: mgd_internal.h,v 1.9 2001/03/06 17:56:17 davidg Exp $ Copyright (C) 1999 Jukka Zitting <jukka.zitting@iki.fi> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <emile@iris-advies.com> @@ -112,7 +112,7 @@ PHP_UPDATE_REPLIGARD(#roottable, (*root)->value.lval); \ } -void midgard_user_call_func(midgard *mgd, int id, int level, void * xparam); +int midgard_user_call_func(midgard *mgd, int id, int level, void * xparam); #define MGD_WALK_FUNCTION(table) \ MGD_WALK_FUNCTION_EX(table, table, up) @@ -162,13 +162,14 @@ \ xp[0] = (*xparam); \ xp[1] = (*midgard_user_call_func_name); \ - mgd_walk_table_tree(mgd_handle(), #table, #upfield, (*id)->value.lval, \ + RETVAL_LONG( \ + mgd_walk_table_tree(mgd_handle(), #table, #upfield, (*id)->value.lval, \ (*level)->value.lval, \ order ? (*order)->value.lval : 1, \ (void *)xp, \ midgard_user_call_func, \ - sort ? (*sort)->value.str.val : NULL); \ - RETURN_TRUE; \ + sort ? (*sort)->value.str.val : NULL) \ + ); \ } \ \ /* }}} */ Index: php4/ext/midgard/midgard.c diff -u php4/ext/midgard/midgard.c:1.20 php4/ext/midgard/midgard.c:1.21 --- php4/ext/midgard/midgard.c:1.20 Tue Feb 27 17:00:32 2001 +++ php4/ext/midgard/midgard.c Tue Mar 6 09:56:17 2001 @@ -1,4 +1,4 @@ -/* $Id: midgard.c,v 1.20 2001/02/28 01:00:32 davidg Exp $ +/* $Id: midgard.c,v 1.21 2001/03/06 17:56:17 davidg Exp $ Copyright (C) 1999 Jukka Zitting <jukka.zitting@iki.fi> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <emile@iris-advies.com> @@ -745,16 +745,17 @@ } } -void midgard_user_call_func(midgard *mgd, int id, int level, void *xparam) +int midgard_user_call_func(midgard *mgd, int id, int level, void *xparam) { zval *args[3]; zval ** xp = (zval **)xparam; zval *return_value; + int retval; if(!PZVAL_IS_REF(xp[0])) { /* DG: Do we force the user to pass it by reference ? */ php_error(E_WARNING,"You must pass the fourth parameter by reference."); - return; + return 0; } ALLOC_ZVAL(return_value); ZVAL_NULL(return_value); ALLOC_ZVAL(args[0]); ZVAL_LONG(args[0], id); @@ -768,11 +769,17 @@ (xp[1])->value.str.val); zval_dtor(return_value); zval_dtor(args[0]); zval_dtor(args[1]); - return; + return 0; } - + if(return_value->type == IS_NULL) + retval = 1; + else { + convert_to_long_ex(&return_value); + retval = return_value->value.lval; + } zval_dtor(return_value); zval_dtor(args[0]); zval_dtor(args[1]); + return retval; } #if YOU_WANT_TO_TEST @@ -826,15 +833,17 @@ xp[0] = (*xparam); xp[1] = (*midgard_user_call_func_name); - mgd_walk_table_tree(mgd_handle(), mgd_table_name[(*tableid)->value.lval], + RETVAL_LONG( + mgd_walk_table_tree(mgd_handle(), + mgd_table_name[(*tableid)->value.lval], (*upfield)->value.str.val, (*id)->value.lval, (*level)->value.lval, order ? (*order)->value.lval : 1, (void *)xp, midgard_user_call_func, - sort ? (*sort)->value.str.val : NULL); - RETURN_TRUE; + sort ? (*sort)->value.str.val : NULL) + ); } #endif /* YOU_WANT_TO_TEST */ #endif /* HAVE_MIDGARD */

« previous php.cvs (#4417) next »