gnumeric r16881 - in trunk/plugins: perl-func perl-loader
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r16881 - in trunk/plugins: perl-func perl-loader
- Date: Tue, 14 Oct 2008 13:53:55 +0000 (UTC)
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]