gnumeric r16881 - in trunk/plugins: perl-func perl-loader



Author: mortenw
Date: Tue Oct 14 13:53:55 2008
New Revision: 16881
URL: http://svn.gnome.org/viewvc/gnumeric?rev=16881&view=rev

Log:
2008-10-14  Morten Welinder  <terra gnome org>

	* perl-gnumeric.c (value2perl): Constify.
	(perl2value): Avoid double copy.

2008-10-12  Yukihiro Nakai <nakai gnome gr jp>

	* perl-loader.c: use value2perl() to get GnmValue


2008-10-12  Yukihiro Nakai <nakai gnome gr jp>

	* plugin-xml.in: Add perl-sed



Added:
   trunk/plugins/perl-func/ChangeLog
Modified:
   trunk/plugins/perl-func/plugin.xml.in
   trunk/plugins/perl-loader/ChangeLog
   trunk/plugins/perl-loader/perl-gnumeric.c
   trunk/plugins/perl-loader/perl-gnumeric.h
   trunk/plugins/perl-loader/perl-loader.c

Modified: trunk/plugins/perl-func/plugin.xml.in
==============================================================================
--- trunk/plugins/perl-func/plugin.xml.in	(original)
+++ trunk/plugins/perl-func/plugin.xml.in	Tue Oct 14 13:53:55 2008
@@ -14,6 +14,7 @@
 			<functions>
 				<function name="perl_adder"/>
 				<function name="perl_date"/>
+				<function name="perl_sed"/>
 			</functions>
 		</service>
 	</services>

Modified: trunk/plugins/perl-loader/perl-gnumeric.c
==============================================================================
--- trunk/plugins/perl-loader/perl-gnumeric.c	(original)
+++ trunk/plugins/perl-loader/perl-gnumeric.c	Tue Oct 14 13:53:55 2008
@@ -1,7 +1,7 @@
 #include "perl-gnumeric.h"
 
 SV *
-value2perl(GnmValue *v)
+value2perl(const GnmValue *v)
 {
     SV *sv;
 
@@ -36,13 +36,10 @@
 	v = value_new_float ((gnm_float) SvNV(sv));
     else if (SvPOK(sv)) {
 	STRLEN size;
-	gchar *s,*tmp;
+	gchar *tmp;
 
 	tmp = SvPV(sv, size);
-
-	s = g_strndup (tmp, size);
-	v = value_new_string (s);
-	g_free (s);
+	v = value_new_string_nocopy (g_strndup (tmp, size));
     }
 
     return v;

Modified: trunk/plugins/perl-loader/perl-gnumeric.h
==============================================================================
--- trunk/plugins/perl-loader/perl-gnumeric.h	(original)
+++ trunk/plugins/perl-loader/perl-gnumeric.h	Tue Oct 14 13:53:55 2008
@@ -33,7 +33,7 @@
 #include <value.h>
 #include <str.h>
 
-SV* value2perl(GnmValue *v);
+SV* value2perl(const GnmValue *v);
 GnmValue* perl2value(SV *sv);
 GnmValue* marshal_func (GnmFuncEvalInfo *ei, GnmValue *argv[]);
 

Modified: trunk/plugins/perl-loader/perl-loader.c
==============================================================================
--- trunk/plugins/perl-loader/perl-loader.c	(original)
+++ trunk/plugins/perl-loader/perl-loader.c	Tue Oct 14 13:53:55 2008
@@ -64,8 +64,8 @@
 	GnmFunc const *fndef;
 	gint min_n_args, max_n_args, n_args;
 	gint i;
-	gchar *perl_func = NULL;
-	GnmValue* result = NULL;
+	gchar *perl_func;
+	GnmValue* result;
 	dSP;
 
 	fndef = ei->func_call->func;
@@ -77,20 +77,9 @@
 	ENTER;
 	SAVETMPS;
 	PUSHMARK(SP);
-	for (i=0;i<n_args;i++) {
-		gint arg_int;
-		gchar* arg_text;
-
-		switch(args[i]->type) {
-		case VALUE_STRING:
-			arg_text = value_get_as_string (args[i]);
-			XPUSHs(sv_2mortal(newSVpv(arg_text, strlen(arg_text))));
-			break;
-		default:
-			arg_int = value_get_as_float (args[i]);
-			XPUSHs(sv_2mortal(newSViv(arg_int)));
-			break;
-		}
+	for (i = 0; i < n_args; i++) {
+		SV* sv = value2perl (args[i]);
+		XPUSHs(sv_2mortal(sv));
 	}
 	PUTBACK;
 	call_pv (perl_func, G_EVAL | G_SCALAR);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]