cvs: php-gtk /generator arg_types.php generator.php

[email protected] ("Frank M. Kromann")
Newsgroups php.gtk
Message-ID <cvsfmk996539922@cvsserver>
fmk		Mon Jul 30 20:38:42 2001 EDT

  Modified files:              
    /php-gtk/generator	generator.php arg_types.php 
  Log:
  Fixing ZTS compilation
  This also adds the stuff to handle UTF8 convertions
fmk-20010730203842.txt (text/plain, 14.8 KB)
Index: php-gtk/generator/generator.php
diff -u php-gtk/generator/generator.php:1.24 php-gtk/generator/generator.php:1.25
--- php-gtk/generator/generator.php:1.24	Mon Jul 30 15:13:14 2001
+++ php-gtk/generator/generator.php	Mon Jul 30 20:38:41 2001
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/* $Id: generator.php,v 1.24 2001/07/30 19:13:14 andrei Exp $ */
+/* $Id: generator.php,v 1.25 2001/07/31 00:38:41 fmk Exp $ */
 
 /*
  * Significant portions of this generator are based on the pygtk code generator
@@ -94,7 +94,8 @@
 		$var_list 	= new Var_List();
 		$parse_list = array('');
 		$arg_list 	= array('');
-		$extra_code = array();
+		$extra_pre_code = array();
+		$extra_post_code = array();
 
 		if ($method->varargs)
 			trigger_error("varargs functions not supported", E_USER_ERROR);
@@ -117,13 +118,15 @@
 											$var_list,
 											$parse_list,
 											$arg_list,
-											$extra_code,
+											$extra_pre_code,
+											$extra_post_code,
 											false);
 		}
 
 		$arg_list 	= implode(', ', $arg_list);
 		$parse_list = implode(', ', $parse_list);
-		$extra_code = implode('', $extra_code);
+		$extra_pre_code = implode('', $extra_pre_code);
+		$extra_post_code = implode('', $extra_post_code);
 
 		$method_call = sprintf($method_call_tpl,
 							   $method->c_name,
@@ -136,14 +139,15 @@
 		}
 		$return_tpl = $ret_handler->write_return($method->return_type, $var_list, true);
 		$return_code = sprintf($return_tpl,
-							   $method_call);
+							   $method_call,
+							   $extra_post_code);
 		
 		$method_code = sprintf($method_tpl,
 							   strtolower($method->c_name),
 							   $var_list->to_string(),
 							   $specs,
 							   $parse_list,
-							   $extra_code,
+							   $extra_pre_code,
 							   $return_code);
 
 		fwrite($fp, $method_code);
@@ -160,7 +164,8 @@
 		$var_list 	= new Var_List();
 		$parse_list = array('');
 		$arg_list 	= array();
-		$extra_code = array();
+		$extra_pre_code = array();
+		$extra_post_code = array();
 
 		foreach ($constructor->params as $params_array) {
 			list($param_type, $param_name, $param_default, $param_null) = $params_array;
@@ -180,13 +185,15 @@
 											$var_list,
 											$parse_list,
 											$arg_list,
-											$extra_code,
+											$extra_pre_code,
+											$extra_post_code,
 											true);
 		}
 
 		$arg_list 	= implode(', ', $arg_list);
 		$parse_list = implode(', ', $parse_list);
-		$extra_code = implode('', $extra_code);
+		$extra_pre_code = implode('', $extra_pre_code);
+		$extra_post_code = implode('', $extra_post_code);
 
 		$var_list->add('GtkObject', '*wrapped_obj');
 
@@ -195,10 +202,11 @@
 									$var_list->to_string(),
 									$specs,
 									$parse_list,
-									$extra_code,
+									$extra_pre_code,
 									$constructor->c_name,
 									$arg_list,
-									$obj_name);
+									$obj_name,
+									$extra_post_code);
 
 		fwrite($fp, $constructor_code);
 		
@@ -215,7 +223,8 @@
 		$var_list 	= new Var_List();
 		$parse_list = array('');
 		$arg_list 	= array();
-		$extra_code = array();
+		$extra_pre_code = array();
+		$extra_post_code = array();
 
 		if ($function->varargs)
 			trigger_error("varargs functions not supported", E_USER_ERROR);
@@ -238,13 +247,15 @@
 											$var_list,
 											$parse_list,
 											$arg_list,
-											$extra_code,
+											$extra_pre_code,
+											$extra_post_code,
 											false);
 		}
 
 		$arg_list 	= implode(', ', $arg_list);
 		$parse_list = implode(', ', $parse_list);
-		$extra_code = implode('', $extra_code);
+		$extra_pre_code = implode('', $extra_pre_code);
+		$extra_post_code = implode('', $extra_post_code);
 
 		$function_call = sprintf($function_call_tpl,
 								 $function->c_name,
@@ -256,14 +267,15 @@
 		}
 		$return_tpl = $ret_handler->write_return($function->return_type, $var_list, true);
 		$return_code = sprintf($return_tpl,
-							   $function_call);
+							   $function_call,
+							   $extra_post_code);
 
 		$function_code = sprintf($function_tpl,
 								 strtolower($function->c_name),
 								 $var_list->to_string(),
 								 $specs,
 								 $parse_list,
-								 $extra_code,
+								 $extra_pre_code,
 								 $return_code);
 
 		fwrite($fp, $function_code);
Index: php-gtk/generator/arg_types.php
diff -u php-gtk/generator/arg_types.php:1.24 php-gtk/generator/arg_types.php:1.25
--- php-gtk/generator/arg_types.php:1.24	Thu Jul 19 12:39:06 2001
+++ php-gtk/generator/arg_types.php	Mon Jul 30 20:38:41 2001
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-/* $Id: arg_types.php,v 1.24 2001/07/19 16:39:06 andrei Exp $ */
+/* $Id: arg_types.php,v 1.25 2001/07/31 00:38:41 fmk Exp $ */
 
 /*======================================================================*\
 	Function: convert_typename
@@ -77,7 +77,7 @@
 \*======================================================================*/
 class Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		trigger_error("This is an abstract class", E_USER_ERROR);
 	}
@@ -98,7 +98,7 @@
 
 class String_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default)) {
 			if ($default != 'NULL')
@@ -107,7 +107,13 @@
 		} else
 			$var_list->add('char', '*' . $name);
 		$parse_list[] 	= '&' . $name;
-		$arg_list[] 	= $name;
+
+		if (strtoupper(substr(PHP_OS, 0,3) == "WIN")) {
+			$var_list->add('gchar', '*utf8_' . $name);
+			$arg_list[]   = 'utf8_' . $name;
+			$extra_post_code[]   = "\tg_free(utf8_$name);\n";
+			$extra_pre_code[] = "\tutf8_$name = g_convert($name, strlen($name), \"UTF-8\", \"CP1252\", NULL, NULL, NULL);\n";
+		}
 		return 's';
 	}
 	
@@ -116,7 +122,7 @@
 		if (in_array($type, array('const-gchar*', 'const-char*', 'static_string'))) {
 			$var_list->add('const gchar', '*ret');
 			return "	ret = %s;\n" 							.
-				   "	if (ret) {\n"							.
+				   "%s	if (ret) {\n"							.
 				   "		RETURN_STRING((char *)ret, 1);\n"	.
 				   "	}\n"									.
 				   "	else {\n"								.
@@ -125,7 +131,7 @@
 		} else {
 			$var_list->add('gchar', '*ret');
 			return "	ret = %s;\n" 					.
-				   "	if (ret) {\n"					.
+				   "%s	if (ret) {\n"					.
 				   "		RETURN_STRING(ret, 1);\n"	.
 				   "		g_free(ret);\n"				.
 				   "	} else\n"						.
@@ -136,7 +142,7 @@
 
 class Char_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add('char', $name . ' = \'' . $default . '\'');
@@ -152,13 +158,13 @@
 		$var_list->add('gchar', 'ret[2]');
 		return "	ret[0] = %s;\n"    .
 			   "	ret[1] = '\\0';\n" .
-			   "	RETURN_STRINGL(ret, 1, 1);";
+			   "%s	RETURN_STRINGL(ret, 1, 1);";
 	}
 }
 
 class Int_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add('long', $name . ' = ' . $default);
@@ -173,13 +179,13 @@
 	{
 		$var_list->add('long', 'php_retval');
 		return "	php_retval = %s;\n" .
-			   "	RETURN_LONG(php_retval);";
+			   "%s	RETURN_LONG(php_retval);";
 	}
 }
 
 class Bool_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add('zend_bool', $name . ' = ' . $default);
@@ -194,13 +200,13 @@
 	{
 		$var_list->add('gboolean', 'php_retval');
 		return "	php_retval = %s;\n" .
-			   "	RETURN_BOOL(php_retval);";
+			   "%s	RETURN_BOOL(php_retval);";
 	}
 }
 
 class Double_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add('double', $name . ' = ' . $default);
@@ -215,7 +221,7 @@
 	{
 		$var_list->add('double', 'php_retval');
 		return "	php_retval = %s;\n" .
-			   "	RETURN_DOUBLE(php_retval);";
+			   "%s	RETURN_DOUBLE(php_retval);";
 	}
 }
 
@@ -234,7 +240,7 @@
 	}
 
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add($this->enum_name, $name . ' = ' . $default);
@@ -243,7 +249,7 @@
 		$var_list->add('zval', '*php_' . $name . ' = NULL');
 		$parse_list[] 	= '&php_' . $name;
 		$arg_list[] 	= $name;
-		$extra_code[] 	= sprintf($this->enum_tpl, $name, $this->type_code, $name, $name,
+		$extra_pre_code[] 	= sprintf($this->enum_tpl, $name, $this->type_code, $name, $name,
 								  $in_constructor ?  "php_gtk_invalidate(this_ptr);\n\t\t" : "");
 		return 'V';
 	}
@@ -252,7 +258,7 @@
 	{
 		$var_list->add('long', 'php_retval');
 		return "	php_retval = %s;\n" .
-			   "	RETURN_LONG(php_retval);";
+			   "%s	RETURN_LONG(php_retval);";
 	}
 }
 
@@ -271,7 +277,7 @@
 	}
 
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if (isset($default))
 			$var_list->add($this->flag_name, $name . ' = ' . $default);
@@ -280,7 +286,7 @@
 		$var_list->add('zval', '*php_' . $name . ' = NULL');
 		$parse_list[] 	= '&php_' . $name;
 		$arg_list[] 	= $name;
-		$extra_code[] 	= sprintf($this->flag_tpl, $name, $this->type_code, $name, $name,
+		$extra_pre_code[] 	= sprintf($this->flag_tpl, $name, $this->type_code, $name, $name,
 								  $in_constructor ?  "php_gtk_invalidate(this_ptr);\n\t\t" : "");
 		return 'V';
 	}
@@ -289,7 +295,7 @@
 	{
 		$var_list->add('long', 'php_retval');
 		return "	php_retval = %s;\n" .
-			   "	RETURN_LONG(php_retval);";
+			   "%s	RETURN_LONG(php_retval);";
 	}
 }
 
@@ -304,13 +310,13 @@
 	}
 
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if ($null_ok) {
 			if (isset($default)) {
 				$var_list->add($this->obj_name, '*' . $name . ' = ' . $default);
 				$var_list->add('zval', '*php_' . $name . ' = NULL');
-				$extra_code[]	=	"	if (php_$name) {\n" .
+				$extra_pre_code[]	=	"	if (php_$name) {\n" .
 									"		if (Z_TYPE_P(php_$name) == IS_NULL)\n" .
 									"			$name = NULL;\n" .
 									"		else\n" .
@@ -319,7 +325,7 @@
 			} else {
 				$var_list->add($this->obj_name, '*' . $name . ' = NULL');
 				$var_list->add('zval', '*php_' . $name);
-				$extra_code[]	=	"	if (Z_TYPE_P(php_$name) != IS_NULL)\n" .
+				$extra_pre_code[]	=	"	if (Z_TYPE_P(php_$name) != IS_NULL)\n" .
 									"		$name = $this->cast(PHP_GTK_GET(php_$name));\n";
 			}
 
@@ -333,7 +339,7 @@
 				$var_list->add('zval', '*php_' . $name . ' = NULL');
 				$parse_list[] 	= '&php_' . $name . ', ' . strtolower($this->cast) . '_ce';
 				$arg_list[] 	= $name;
-				$extra_code[]	=	"	if (php_$name)\n" .
+				$extra_pre_code[]	=	"	if (php_$name)\n" .
 									"		$name = $this->cast(PHP_GTK_GET(php_$name));\n";
 			} else {
 				$var_list->add('zval', '*' . $name);
@@ -351,13 +357,13 @@
 		return 	"	ret = php_gtk_new((GtkObject *)%s);\n" .
 				($separate ?  "	SEPARATE_ZVAL(&ret);\n" : "") .
 				"	*return_value = *ret;\n" .
-				"	return;";
+				"%s	return;";
 	}
 }
 
 class Rect_Arg extends Arg_Type {
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		$var_list->add(substr($type, 0, -1), $name);
 		$parse_list[] 	= "&($name.x)";
@@ -380,13 +386,13 @@
 	}
 
 	function write_param($type, $name, $default, $null_ok, &$var_list,
-						 &$parse_list, &$arg_list, &$extra_code, $in_constructor)
+						 &$parse_list, &$arg_list, &$extra_pre_code, &$extra_post_code, $in_constructor)
 	{
 		if ($null_ok) {
 			if (isset($default)) {
 				$var_list->add($this->type, '*' . $name . ' = ' . $default);
 				$var_list->add('zval', '*php_' . $name . ' = NULL');
-				$extra_code[]	=	"	if (php_$name) {\n" .
+				$extra_pre_code[]	=	"	if (php_$name) {\n" .
 									"		if (Z_TYPE_P(php_$name) == IS_NULL)\n" .
 									"			$name = NULL;\n" .
 									"		else\n" .
@@ -395,7 +401,7 @@
 			} else {
 				$var_list->add($this->type, '*' . $name . ' = NULL');
 				$var_list->add('zval', '*php_' . $name);
-				$extra_code[]	=	"	if (Z_TYPE_P(php_$name) != IS_NULL)\n" .
+				$extra_pre_code[]	=	"	if (Z_TYPE_P(php_$name) != IS_NULL)\n" .
 									"		$name = PHP_" . strtoupper($this->php_type). "_GET(php_" . $name . ");\n";
 			}
 
@@ -412,7 +418,7 @@
 				$parse_list[]	= '&php_' . $name;
 				$parse_list[]	= $this->php_type . '_ce';
 				$arg_list[]		= $name;
-				$extra_code[]	=	"	if (php_$name)\n" .
+				$extra_pre_code[]	=	"	if (php_$name)\n" .
 									"		$name = PHP_" .  strtoupper($this->php_type) . "_GET(" . $name . ");\n";
 			} else {
 				$var_list->add('zval', '*' . $name);
@@ -431,7 +437,7 @@
 		return "	ret = php_" . $this->php_type . "_new(%s);\n" .
 			   ($separate ? "	SEPARATE_ZVAL(&ret);\n" : "") .
 			   "	*return_value = *ret;\n" .
-			   "	return;";
+			   "%s	return;";
 	}
 }
 
@@ -472,7 +478,7 @@
 						else if(php_gtk_check_class(php_$name, gdk_bitmap_ce))
 							$name = (GdkDrawable *)PHP_GDK_BITMAP_GET(php_$name);
 						else {
-								php_error(E_WARNING, \"%s() expects the drawable to be GdkWindow, GdkPixmap, GdkBitmap, or null\", get_active_function_name());
+								php_error(E_WARNING, \"%s() expects the drawable to be GdkWindow, GdkPixmap, GdkBitmap, or null\", get_active_function_name(TSRMLS_C));
 								return;
 						}
 				";
@@ -505,7 +511,7 @@
 						else if(php_gtk_check_class(php_$name, gdk_bitmap_ce))
 							$name = (GdkDrawable *)PHP_GDK_BITMAP_GET(php_$name);
 						else {
-								php_error(E_WARNING, \"%s() expects the drawable to be GdkWindow, GdkPixmap, or GdkBitmap\", get_active_function_name());
+								php_error(E_WARNING, \"%s() expects the drawable to be GdkWindow, GdkPixmap, or GdkBitmap\", get_active_function_name(TSRMLS_C));
 								return;
 						}
 				";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.