cvs: embed /php-irssi TODO ext-irssi.c

[email protected] ("Wez Furlong") Mon, 31 Mar 2003 21:00:23 -0000
Newsgroups php.embed.cvs
Message-ID <cvswez1049144423@cvsserver>
wez		Mon Mar 31 16:00:23 2003 EDT

  Modified files:              
    /embed/php-irssi	TODO ext-irssi.c 
  Log:
  Add settings functions so that scripts can store their state in the users irssi
  configuration file.
  
  
  
Index: embed/php-irssi/TODO
diff -u embed/php-irssi/TODO:1.8 embed/php-irssi/TODO:1.9
--- embed/php-irssi/TODO:1.8	Mon Mar 31 12:00:48 2003
+++ embed/php-irssi/TODO	Mon Mar 31 16:00:22 2003
@@ -1,6 +1,6 @@
 TODO:
 ====================================
-$Id: TODO,v 1.8 2003/03/31 17:00:48 wez Exp $
+$Id: TODO,v 1.9 2003/03/31 21:00:22 wez Exp $
 
 o Improve genobjdefs.php so that it can find a structure definition in a
 header file with more junk (when compared with the *-rec.h headers).
@@ -34,8 +34,8 @@
 stuff there (eg: fopen($URL) and put the output in the scroll buffer of a
 spare window).
 
-o Expose the settings API so that scripts can keep their state saved when the
-user does a /save
+o Expose the theme API (kind of like templates).  See the perl usercount.pl
+script in the irssi distro for an example
 
 o Expose even more stuff!
 
Index: embed/php-irssi/ext-irssi.c
diff -u embed/php-irssi/ext-irssi.c:1.20 embed/php-irssi/ext-irssi.c:1.21
--- embed/php-irssi/ext-irssi.c:1.20	Mon Mar 31 15:16:50 2003
+++ embed/php-irssi/ext-irssi.c	Mon Mar 31 16:00:22 2003
@@ -14,7 +14,7 @@
   +----------------------------------------------------------------------+
   | Author: Wez Furlong <[email protected]>                                    |
   +----------------------------------------------------------------------+
-  $Id: ext-irssi.c,v 1.20 2003/03/31 20:16:50 wez Exp $
+  $Id: ext-irssi.c,v 1.21 2003/03/31 21:00:22 wez Exp $
 */
 #include "php-irssi.h"
 #include "php-signals-list.h" /* generated by php during make */
@@ -734,6 +734,196 @@
 	RETURN_TRUE;
 }
 
+/* Settings API */
+
+/* proto void irssi_settings_add_bool(string section, string key, bool default)
+   Registers a boolean setting */
+PHP_FUNCTION(irssi_settings_add_bool)
+{
+	char *section, *key;
+	long section_len, key_len;
+	zend_bool defval;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssb",
+				&section, &section_len, &key, &key_len, &defval)) {
+		return;
+	}
+
+	settings_add_bool(section, key, defval);
+}
+
+/* proto void irssi_settings_add_int(string section, string key, long default)
+   Registers an integer setting */
+PHP_FUNCTION(irssi_settings_add_int)
+{
+	char *section, *key;
+	long section_len, key_len;
+	long defval;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl",
+				&section, &section_len, &key, &key_len, &defval)) {
+		return;
+	}
+
+	settings_add_int(section, key, defval);
+}
+
+/* proto void irssi_settings_add_str(string section, string key, string default)
+   Registers a string setting */
+PHP_FUNCTION(irssi_settings_add_str)
+{
+	char *section, *key, *defval;
+	long section_len, key_len, defval_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+				&section, &section_len, &key, &key_len, &defval, &defval_len)) {
+		return;
+	}
+
+	settings_add_str(section, key, defval);
+}
+
+/* proto void irssi_settings_add_time(string section, string key, string default)
+   Registers a time setting */
+PHP_FUNCTION(irssi_settings_add_time)
+{
+	char *section, *key, *defval;
+	long section_len, key_len, defval_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+				&section, &section_len, &key, &key_len, &defval, &defval_len)) {
+		return;
+	}
+
+	settings_add_time(section, key, defval);
+}
+
+/* proto void irssi_settings_add_level(string section, string key, string default)
+   Registers a level setting */
+PHP_FUNCTION(irssi_settings_add_level)
+{
+	char *section, *key, *defval;
+	long section_len, key_len, defval_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+				&section, &section_len, &key, &key_len, &defval, &defval_len)) {
+		return;
+	}
+
+	settings_add_level(section, key, defval);
+}
+
+/* proto void irssi_settings_add_size(string section, string key, string default)
+   Registers a size setting */
+PHP_FUNCTION(irssi_settings_add_size)
+{
+	char *section, *key, *defval;
+	long section_len, key_len, defval_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss",
+				&section, &section_len, &key, &key_len, &defval, &defval_len)) {
+		return;
+	}
+
+	settings_add_size(section, key, defval);
+}
+
+/* proto string irssi_settings_get_str(string key)
+   Returns a string setting value */
+PHP_FUNCTION(irssi_settings_get_str)
+{
+	char *key, *val;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	val = (char *)settings_get_str(key);
+
+	if (val) {
+		RETURN_STRING(val, 1);
+	} else {
+		RETURN_NULL();
+	}
+}
+
+/* proto long irssi_settings_get_int(string key)
+   Returns an int setting value */
+PHP_FUNCTION(irssi_settings_get_int)
+{
+	char *key;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	RETURN_LONG(settings_get_int(key));
+}
+
+/* proto bool irssi_settings_get_bool(string key)
+   Returns a bool setting value */
+PHP_FUNCTION(irssi_settings_get_bool)
+{
+	char *key;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	RETURN_BOOL(settings_get_bool(key));
+}
+
+/* proto long irssi_settings_get_time(string key)
+   Returns a time setting value */
+PHP_FUNCTION(irssi_settings_get_time)
+{
+	char *key;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	RETURN_LONG(settings_get_bool(key));
+}
+
+/* proto long irssi_settings_get_level(string key)
+   Returns a level setting value */
+PHP_FUNCTION(irssi_settings_get_level)
+{
+	char *key;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	RETURN_LONG(settings_get_level(key));
+}
+
+/* proto long irssi_settings_get_size(string key)
+   Returns a size setting value */
+PHP_FUNCTION(irssi_settings_get_size)
+{
+	char *key;
+	long key_len;
+
+	if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s",
+				&key, &key_len)) {
+		return;
+	}
+
+	RETURN_LONG(settings_get_size(key));
+}
+
 
 
 
@@ -843,6 +1033,18 @@
 	PHP_FE(irssi_window_find_name, NULL)
 	PHP_FE(irssi_command_bind, NULL)
 	PHP_FE(irssi_command_unbind, NULL)
+	PHP_FE(irssi_settings_add_bool, NULL)
+	PHP_FE(irssi_settings_add_int, NULL)
+	PHP_FE(irssi_settings_add_str, NULL)
+	PHP_FE(irssi_settings_add_time, NULL)
+	PHP_FE(irssi_settings_add_level, NULL)
+	PHP_FE(irssi_settings_add_size, NULL)
+	PHP_FE(irssi_settings_get_str, NULL)
+	PHP_FE(irssi_settings_get_int, NULL)
+	PHP_FE(irssi_settings_get_bool, NULL)
+	PHP_FE(irssi_settings_get_time, NULL)
+	PHP_FE(irssi_settings_get_level, NULL)
+	PHP_FE(irssi_settings_get_size, NULL)
 	{NULL, NULL, NULL}
 };