wez             Thu Jan 30 10:42:49 2003 EDT

  Modified files:              
    /embed/php-irssi    channel.c ext-irssi.c genobjdefs.php nick.c 
                        php-irssi-obj.c php-irssi.h server.c typemap.php 
    /embed/php-irssi/examples   users.php 
  Log:
  Generate more properties.
  Remove hand-coded property accessors.
  Update examples.
  
  
Index: embed/php-irssi/channel.c
diff -u embed/php-irssi/channel.c:1.1 embed/php-irssi/channel.c:1.2
--- embed/php-irssi/channel.c:1.1       Thu Jan 30 04:04:35 2003
+++ embed/php-irssi/channel.c   Thu Jan 30 10:42:47 2003
@@ -14,9 +14,12 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: channel.c,v 1.1 2003/01/30 09:04:35 wez Exp $
+  $Id: channel.c,v 1.2 2003/01/30 15:42:47 wez Exp $
 */
 #include "php-irssi.h"
+#define PHP_IRSSI_PROTOS_ONLY
+#include "php-irssi-obj-defs.h"
+
 
 /* ---------- Channel functions */
 /* Given a channel record, create a channel object */
@@ -50,28 +53,35 @@
        return channel_find(server, ref->idents[IDX_CHANNEL]);
 }
 
+/* Handle property reads */
 
-/* Returns an array of nick objects corresponding to each person on this channel */
-PHP_FUNCTION(channel_get_nicks)
+int php_irssi_CHANNEL_REC_prop_reader(char *member, int type, zval **retval, void 
+*obj TSRMLS_DC)
 {
-       GSList *list, *tmp;
-       zval *obj;
-       CH_FETCH();
-
-       list = nicklist_getnicks(channel);
-       array_init(return_value);
+       PHP_IRSSI_CHANNEL_REC_PROP_READER_HEAD();
 
-       if (list) {
-               for (tmp = list; tmp != NULL; tmp = tmp->next) {
-                       MAKE_STD_ZVAL(obj);
-                       php_irssi_export_NICK(obj, channel, (NICK_REC*)tmp->data);
-                       add_next_index_zval(return_value, obj);
+       if (strcmp(member, "nicks") == 0) {
+               GSList *list, *tmp;
+               zval *zobj;
+
+               list = nicklist_getnicks(channel);
+               array_init(*retval);
+
+               if (list) {
+                       for (tmp = list; tmp != NULL; tmp = tmp->next) {
+                               MAKE_STD_ZVAL(zobj);
+                               php_irssi_export_NICK(zobj, channel, 
+(NICK_REC*)tmp->data);
+                               add_next_index_zval(*retval, zobj);
+                       }
+                       g_slist_free(list);
                }
-               g_slist_free(list);
+               return SUCCESS;
+
        }
-               
+       
+       PHP_IRSSI_CHANNEL_REC_PROP_READER_FOOT();
 }
 
+
 PHP_FUNCTION(channel_nick_find)
 {
        char *nick;
@@ -111,79 +121,6 @@
        } else {
                RETURN_NULL();
        }
-       
-}
-
-PHP_FUNCTION(channel_get_name)
-{
-       CH_FETCH();
-
-       RETURN_STRING(channel->name, 1);
-}
-
-PHP_FUNCTION(channel_get_topic)
-{
-       CH_FETCH();
-
-       RETURN_STRING(channel->topic, 1);
-}
-
-PHP_FUNCTION(channel_get_topic_by)
-{
-       CH_FETCH();
-
-       RETURN_STRING(channel->topic_by, 1);
-}
-
-PHP_FUNCTION(channel_get_modes)
-{
-       CH_FETCH();
-       
-       array_init(return_value);
-
-       add_assoc_bool(return_value, "no_modes", channel->no_modes);
-       add_assoc_long(return_value, "limit", channel->limit);
-       if (channel->mode)
-               add_assoc_string(return_value, "mode", channel->mode, 1);
-       else
-               add_assoc_null(return_value, "mode");
-
-       if (channel->key)
-               add_assoc_string(return_value, "key", channel->key, 1);
-       else
-               add_assoc_null(return_value, "key");
-       
-}
-
-PHP_FUNCTION(channel_get_status)
-{
-       CH_FETCH();
-
-       array_init(return_value);
-
-       add_assoc_bool(return_value, "chanop", channel->chanop);
-       add_assoc_bool(return_value, "names_got", channel->names_got);
-       add_assoc_bool(return_value, "wholist", channel->wholist);
-       add_assoc_bool(return_value, "synced", channel->synced);
-       add_assoc_bool(return_value, "joined", channel->joined);
-       add_assoc_bool(return_value, "left", channel->left);
-       add_assoc_bool(return_value, "kicked", channel->kicked);
-       add_assoc_bool(return_value, "session_rejoin", channel->session_rejoin);
-       add_assoc_bool(return_value, "destroying", channel->destroying);
-}
-
-PHP_FUNCTION(channel_get_own_nick)
-{
-       CH_FETCH();
-
-       php_irssi_export_NICK(return_value, channel, channel->ownnick);
-}
-
-PHP_FUNCTION(channel_get_server)
-{
-       CH_FETCH();
-
-       php_irssi_export_SERVER(return_value, channel->server TSRMLS_CC);
 }
 
 PHP_FUNCTION(channel_send)
@@ -201,16 +138,8 @@
 }
 
 function_entry php_irssi_CHANNEL_funcs[] = {
-       PHP_NAMED_FE(get_nicks, PHP_FN(channel_get_nicks), NULL)
        PHP_NAMED_FE(nick_find, PHP_FN(channel_nick_find), NULL)
        PHP_NAMED_FE(nick_find_mask, PHP_FN(channel_nick_find_mask), NULL)
-       PHP_NAMED_FE(get_name, PHP_FN(channel_get_name), NULL)
-       PHP_NAMED_FE(get_topic, PHP_FN(channel_get_topic), NULL)
-       PHP_NAMED_FE(get_topic_by, PHP_FN(channel_get_topic_by), NULL)
-       PHP_NAMED_FE(get_modes, PHP_FN(channel_get_modes), NULL)
-       PHP_NAMED_FE(get_status, PHP_FN(channel_get_status), NULL)
-       PHP_NAMED_FE(get_own_nick, PHP_FN(channel_get_own_nick), NULL)
-       PHP_NAMED_FE(get_server, PHP_FN(channel_get_server), NULL)
        PHP_NAMED_FE(send, PHP_FN(channel_send), NULL)
        NULL, NULL, NULL
 };
Index: embed/php-irssi/ext-irssi.c
diff -u embed/php-irssi/ext-irssi.c:1.2 embed/php-irssi/ext-irssi.c:1.3
--- embed/php-irssi/ext-irssi.c:1.2     Thu Jan 30 04:04:35 2003
+++ embed/php-irssi/ext-irssi.c Thu Jan 30 10:42:47 2003
@@ -14,7 +14,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: ext-irssi.c,v 1.2 2003/01/30 09:04:35 wez Exp $
+  $Id: ext-irssi.c,v 1.3 2003/01/30 15:42:47 wez Exp $
 */
 #include "php-irssi.h"
 #include "php-signals-list.h" /* generated by php during make */
@@ -40,14 +40,14 @@
 
 HashTable *bound_signals;
 
-void php_irssi_export_GList(zval *val, GSList *the_list TSRMLS_DC)
+void php_irssi_export_GList(zval *val, GSList *the_list, int type TSRMLS_DC)
 {
-       zval *str;
+       zval *tmp;
        
        array_init(val);
        for (; the_list != NULL; the_list = the_list->next) {
-               MAKE_STD_ZVAL(str);
-               ZVAL_STRING(val, (char*)the_list->data, 1);
+               php_irssi_C_to_PHP(&tmp, type, the_list->data);
+               add_next_index_zval(val, tmp);
        }
 }
 
@@ -119,7 +119,7 @@
                                ZVAL_LONG(val, *(ulong *)args[i]);
                                break;
                        case PIAT_ARRAY_OF_STRING:
-                               php_irssi_export_GList(val, (GSList*)args[i] 
TSRMLS_CC);
+                               php_irssi_export_GList(val, (GSList*)args[i], 
+PIAT_STRING TSRMLS_CC);
                                break;
                        default:
                                ZVAL_NULL(val);
Index: embed/php-irssi/genobjdefs.php
diff -u embed/php-irssi/genobjdefs.php:1.3 embed/php-irssi/genobjdefs.php:1.4
--- embed/php-irssi/genobjdefs.php:1.3  Thu Jan 30 07:12:20 2003
+++ embed/php-irssi/genobjdefs.php      Thu Jan 30 10:42:47 2003
@@ -15,7 +15,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: genobjdefs.php,v 1.3 2003/01/30 12:12:20 wez Exp $
+  $Id: genobjdefs.php,v 1.4 2003/01/30 15:42:47 wez Exp $
 */
 
 /* We build three sets of tables:
@@ -32,11 +32,11 @@
 
 foreach ($objects_to_scan as $filename => $data)
 {
-
        list($iclass, $pclass) = $data;
        
        $obj_props = array();
        $obj_methods = array();
+       $prop_reader = array();
        
        $source = file_get_contents($top_srcdir . DIRECTORY_SEPARATOR . $filename);
 
@@ -65,25 +65,47 @@
                if (strlen($stmt) == 0)
                        continue;
 
-               if (match_decl($stmt, $name, $handler)) {
+               if (match_decl($stmt, $name, $handler, true)) {
                        $obj_props[] = array($handler, $name);
                }
        }
 
        /* Emit code */
+       printf("#ifndef PHP_IRSSI_PROTOS_ONLY\n");
        printf("struct php_irssi_class_props php_irssi_%s_props[] = {\n", $iclass);
 
        foreach ($obj_props as $data) {
                list($handler, $name) = $data;
        
-               if ($handler == "PIAT_BOOL")
+               if ($handler == "PIAT_BOOL") {
+
+                       $prop_reader[] = "if (strcmp(member, \"$name\") == 0) { 
+ZVAL_BOOL(*retval, (($iclass*)obj)->$name); return SUCCESS; }";
+                       
                        continue;
+               }
        
                printf("{ \"%s\", %d, %s, offset_of(%s, %s) },\n", $name, 
strlen($name), $handler, $iclass, $name);
        }
        printf("{ NULL, 0, 0, 0 }\n};\n\n");
+       printf("#endif /* PHP_IRSSI_PROTOS_ONLY */\n");
 
        $obj_bind[] = array($iclass, $pclass);
+       $label = preg_replace('/_.*/', '', $iclass);
+       
+       printf("#define PHP_IRSSI_%s_PROP_READER_HEAD() \\\n" .
+               "\t%s *%s = (%s*)obj;\\\n" .
+               "\tMAKE_STD_ZVAL(*retval);\\\n" .
+               "\t%s\n\n",
+               $iclass,
+               $iclass, strtolower($label),
+               $iclass, implode("\\\n\t", $prop_reader));
+       printf("#define PHP_IRSSI_%s_PROP_READER_FOOT() \\\n" .
+               "\tFREE_ZVAL(*retval);\\\n" .
+               "\treturn FAILURE;\n\n",
+               $iclass);
+
+       printf("extern int php_irssi_%s_prop_reader(char *member, int type, zval 
+**retval, void *obj TSRMLS_DC);\n\n",
+               $iclass);
 }
 
 foreach ($obj_bind as $data) {
@@ -92,15 +114,21 @@
 
        printf("void *php_irssi_resolve_to_%s(struct php_irssi_obj_ref *ref);\n", 
$iclass);
        printf("extern function_entry php_irssi_%s_funcs[];\n", $label);
+
+       echo "\n";
 }
 
+printf("#ifndef PHP_IRSSI_PROTOS_ONLY\n");
 printf("\nstatic struct php_irssi_obj_bind php_irssi_object_bindings[] = {\n");
 foreach ($obj_bind as $data) {
        list($iclass, $pclass) = $data;
        $label = preg_replace('/_.*/', '', $iclass);
-       printf("{ \"%s\", 0, php_irssi_%s_props, php_irssi_resolve_to_%s, \"%s\", 
php_irssi_%s_funcs, NULL, NULL },\n", $label, $iclass, $iclass, $pclass, $label);
+       printf("{ \"%s\", 0, php_irssi_%s_props, php_irssi_resolve_to_%s, \"%s\", 
+php_irssi_%s_funcs,\n" .
+                       "\tphp_irssi_%s_prop_reader, NULL, NULL },\n",
+                       $label, $iclass, $iclass, $pclass, $label, $iclass);
 }
 printf("{ NULL, 0, NULL }\n};\n\n");
+       printf("#endif /* PHP_IRSSI_PROTOS_ONLY */\n");
 
 
 ?>
Index: embed/php-irssi/nick.c
diff -u embed/php-irssi/nick.c:1.2 embed/php-irssi/nick.c:1.3
--- embed/php-irssi/nick.c:1.2  Thu Jan 30 04:57:18 2003
+++ embed/php-irssi/nick.c      Thu Jan 30 10:42:47 2003
@@ -14,9 +14,12 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: nick.c,v 1.2 2003/01/30 09:57:18 wez Exp $
+  $Id: nick.c,v 1.3 2003/01/30 15:42:47 wez Exp $
 */
 #include "php-irssi.h"
+#define PHP_IRSSI_PROTOS_ONLY
+#include "php-irssi-obj-defs.h"
+
 /* ---------- Nick functions */
 
 void *php_irssi_resolve_to_NICK_REC(struct php_irssi_obj_ref *ref)
@@ -54,6 +57,17 @@
        return nicklist_find(*channel, ref->idents[IDX_NICK]);
 }
 
+/* Handle property reads */
+
+int php_irssi_NICK_REC_prop_reader(char *member, int type, zval **retval, void *obj 
+TSRMLS_DC)
+{
+       PHP_IRSSI_NICK_REC_PROP_READER_HEAD();
+
+       PHP_IRSSI_NICK_REC_PROP_READER_FOOT();
+}
+
+
+
 /* Given a nick record, create a PHP nick object */
 void php_irssi_export_NICK(zval *obj, CHANNEL_REC *cr, NICK_REC *nr TSRMLS_DC)
 {
@@ -66,59 +80,9 @@
                ref->idents[IDX_NICK] = estrdup(nr->nick);
        }
 }
-
-PHP_FUNCTION(nick_get_nick)
-{
-       NK_FETCH();
-
-       RETURN_STRING(nick->nick, 1);
-}
-
-PHP_FUNCTION(nick_get_host)
-{
-       NK_FETCH();
-
-       RETURN_STRING(nick->host, 1);
-}
-
-PHP_FUNCTION(nick_get_realname)
-{
-       NK_FETCH();
-
-       RETURN_STRING(nick->realname, 1);
-}
-
-PHP_FUNCTION(nick_get_server_status)
-{
-       NK_FETCH();
-
-       array_init(return_value);
-
-       add_assoc_bool(return_value, "gone", nick->gone);
-       add_assoc_bool(return_value, "serverop", nick->serverop);
-       add_assoc_long(return_value, "last_check", nick->last_check);
-}
-
-PHP_FUNCTION(nick_get_channel_status)
-{
-       NK_FETCH();
-
-       array_init(return_value);
-
-       add_assoc_bool(return_value, "send_massjoin", nick->send_massjoin);
-       add_assoc_bool(return_value, "op", nick->op);
-       add_assoc_bool(return_value, "halfop", nick->halfop);
-       add_assoc_bool(return_value, "voice", nick->voice);
-}
-       
        
 
 function_entry php_irssi_NICK_funcs[] = {
-       PHP_NAMED_FE(get_nick, PHP_FN(nick_get_nick), NULL)
-       PHP_NAMED_FE(get_host, PHP_FN(nick_get_host), NULL)
-       PHP_NAMED_FE(get_realname, PHP_FN(nick_get_realname), NULL)
-       PHP_NAMED_FE(get_server_status, PHP_FN(nick_get_server_status), NULL)
-       PHP_NAMED_FE(get_channel_status, PHP_FN(nick_get_channel_status), NULL)
        NULL, NULL, NULL
 };
 
Index: embed/php-irssi/php-irssi-obj.c
diff -u embed/php-irssi/php-irssi-obj.c:1.2 embed/php-irssi/php-irssi-obj.c:1.3
--- embed/php-irssi/php-irssi-obj.c:1.2 Thu Jan 30 07:12:20 2003
+++ embed/php-irssi/php-irssi-obj.c     Thu Jan 30 10:42:47 2003
@@ -14,7 +14,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: php-irssi-obj.c,v 1.2 2003/01/30 12:12:20 wez Exp $
+  $Id: php-irssi-obj.c,v 1.3 2003/01/30 15:42:47 wez Exp $
 */
 #include "php-irssi.h"
 #include "php-irssi-obj-defs.h"
@@ -57,7 +57,7 @@
                        ZVAL_LONG(val, *(ulong *)arg);
                        break;
                case PIAT_ARRAY_OF_STRING:
-                       php_irssi_export_GList(val, (GSList*)arg TSRMLS_CC);
+                       php_irssi_export_GList(val, (GSList*)arg, PIAT_STRING 
+TSRMLS_CC);
                        break;
                case PIAT_NICK:
                        /* We need some context for a NICK */
@@ -85,14 +85,22 @@
                member = &tmp_member;
        }
 
+       /* found the binding; process it */
+       arg = ref->binding->resolve(ref);
+
        /* look for property binding */
        if (zend_hash_find(ref->binding->hprops, Z_STRVAL_P(member), 
Z_STRLEN_P(member)+1, (void **) &props) == FAILURE) {
+               
+               /* call custom handler */
+               if (SUCCESS == ref->binding->readprop(Z_STRVAL_P(member), type, 
+&retval, arg TSRMLS_CC)) {
+                       return retval;
+               }
+               
                zend_error(E_NOTICE,"Undefined property:  %s", Z_STRVAL_P(member));
+
                return EG(uninitialized_zval_ptr);
        }
 
-       /* found the binding; process it */
-       arg = ref->binding->resolve(ref);
        php_irssi_C_to_PHP(&retval, (*props)->proptype, arg + (*props)->offset);
        
        return retval;
Index: embed/php-irssi/php-irssi.h
diff -u embed/php-irssi/php-irssi.h:1.2 embed/php-irssi/php-irssi.h:1.3
--- embed/php-irssi/php-irssi.h:1.2     Thu Jan 30 07:12:20 2003
+++ embed/php-irssi/php-irssi.h Thu Jan 30 10:42:47 2003
@@ -14,7 +14,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: php-irssi.h,v 1.2 2003/01/30 12:12:20 wez Exp $
+  $Id: php-irssi.h,v 1.3 2003/01/30 15:42:47 wez Exp $
 */
 
 #define MODULE_NAME "php/core"
@@ -75,6 +75,9 @@
        void *(*resolve)(struct php_irssi_obj_ref *ref);
        const char *classname;  /* name of PHP class */ 
        function_entry *functable;
+
+       int (*readprop)(char *member, int type, zval **retval, void *obj TSRMLS_DC);
+       
        /* --- runtime --- */
        HashTable *hprops;      /* hashed version of proptable */
        HashTable *hfuncs;      /* hashed version of functable */
Index: embed/php-irssi/server.c
diff -u embed/php-irssi/server.c:1.1 embed/php-irssi/server.c:1.2
--- embed/php-irssi/server.c:1.1        Thu Jan 30 04:04:35 2003
+++ embed/php-irssi/server.c    Thu Jan 30 10:42:47 2003
@@ -14,10 +14,13 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: server.c,v 1.1 2003/01/30 09:04:35 wez Exp $
+  $Id: server.c,v 1.2 2003/01/30 15:42:47 wez Exp $
 */
 
 #include "php-irssi.h"
+#define PHP_IRSSI_PROTOS_ONLY
+#include "php-irssi-obj-defs.h"
+
 
 /* ---------- Server functions */
 /* Given a server record, create a server object */
@@ -42,6 +45,28 @@
        return NULL;
 }
 
+/* Handle property reads */
+
+int php_irssi_SERVER_REC_prop_reader(char *member, int type, zval **retval, void *obj 
+TSRMLS_DC)
+{
+       PHP_IRSSI_SERVER_REC_PROP_READER_HEAD();
+
+       if (strcmp(member, "channels") == 0) {
+               GSList *tmp;
+               zval *zobj;
+
+               array_init(*retval);
+               for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
+                       MAKE_STD_ZVAL(zobj);
+                       php_irssi_export_CHANNEL(zobj, (CHANNEL_REC*)tmp->data);
+                       add_next_index_zval(*retval, zobj);
+               }
+               return SUCCESS;
+       }
+
+       PHP_IRSSI_SERVER_REC_PROP_READER_FOOT();
+}
+
 
 PHP_FUNCTION(server_privmsg)
 {
@@ -109,27 +134,11 @@
        
 }
 
-PHP_FUNCTION(server_get_channel_list)
-{
-       GSList *tmp;
-       zval *obj;
-       SV_FETCH();
-
-       array_init(return_value);
-       for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
-               MAKE_STD_ZVAL(obj);
-               php_irssi_export_CHANNEL(obj, (CHANNEL_REC*)tmp->data);
-               add_next_index_zval(return_value, obj);
-       }
-       
-}
-
 function_entry php_irssi_SERVER_funcs[] = {
        PHP_NAMED_FE(privmsg,   PHP_FN(server_privmsg), NULL)
        PHP_NAMED_FE(send_cmd,  PHP_FN(server_send_cmd), NULL)
        PHP_NAMED_FE(send_cmd_now,      PHP_FN(server_send_cmd_now), NULL)
        PHP_NAMED_FE(channels_join,     PHP_FN(server_channels_join), NULL)
-       PHP_NAMED_FE(get_channels,      PHP_FN(server_get_channel_list), NULL)
        NULL, NULL, NULL
 };
 
Index: embed/php-irssi/typemap.php
diff -u embed/php-irssi/typemap.php:1.2 embed/php-irssi/typemap.php:1.3
--- embed/php-irssi/typemap.php:1.2     Thu Jan 30 07:12:20 2003
+++ embed/php-irssi/typemap.php Thu Jan 30 10:42:47 2003
@@ -15,7 +15,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[EMAIL PROTECTED]>                                    |
   +----------------------------------------------------------------------+
-  $Id: typemap.php,v 1.2 2003/01/30 12:12:20 wez Exp $
+  $Id: typemap.php,v 1.3 2003/01/30 15:42:47 wez Exp $
 */
 
 /* This array describes the functions that can be used to convert between
@@ -34,6 +34,9 @@
        "unsigned int"  => array("PIAT_INT", false),
        "ulong"                 => array("PIAT_ULONG", false),
        "GList * of char*" => array("PIAT_ARRAY_OF_STRING", false),
+
+       /* aliases */
+       "STRUCT_SERVER_REC" => array("PIAT_SERVER", true),
        );
 
 /* fixup the marshal array to include supported objects */
Index: embed/php-irssi/examples/users.php
diff -u embed/php-irssi/examples/users.php:1.1 embed/php-irssi/examples/users.php:1.2
--- embed/php-irssi/examples/users.php:1.1      Thu Jan 30 08:58:22 2003
+++ embed/php-irssi/examples/users.php  Thu Jan 30 10:42:48 2003
@@ -6,10 +6,10 @@
 
 foreach ($servers as $server) {
        echo $server->tag.':';
-       $channels = $server->get_channels();
+       $channels = $server->channels;
        foreach ($channels as $channel) {
                echo '  '.$channel->name.':';
-               $nicks = $channel->get_nicks();
+               $nicks = $channel->nicks;
                foreach ($nicks as $nick) {
                        echo '    '.$nick->nick;
                }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to