[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ./ChangeLog server/array.cpp
From: |
Michael Carlson |
Subject: |
[Gnash-commit] gnash ./ChangeLog server/array.cpp |
Date: |
Tue, 24 Jan 2006 07:32:52 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: Michael Carlson <address@hidden> 06/01/24 07:32:52
Modified files:
. : ChangeLog
server : array.cpp
Log message:
Implement array::toString(), join()
Recursive arrays and objects in arrays are not supported in these
functions yet, but the problem is with as_value::to_string handling them
properly.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.40&tr2=1.41&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/array.cpp.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.40 gnash/ChangeLog:1.41
--- gnash/ChangeLog:1.40 Tue Jan 24 06:37:29 2006
+++ gnash/ChangeLog Tue Jan 24 07:32:52 2006
@@ -1,8 +1,8 @@
-2006-01-23 Michael Carlson <address@hidden>
+2006-01-24 Michael Carlson <address@hidden>
* server/array.h: as_array_object now uses deque instead of vector
- * server/array.cpp: Implement array::unshift, shift, reverse -
- also make push return the new array length as it should
+ * server/array.cpp: Implement array::unshift, shift, reverse,
+ toString, join - also make push return the new length as it should
2006-01-23 Rob Savoye <address@hidden>
Index: gnash/server/array.cpp
diff -u gnash/server/array.cpp:1.4 gnash/server/array.cpp:1.5
--- gnash/server/array.cpp:1.4 Tue Jan 24 06:37:29 2006
+++ gnash/server/array.cpp Tue Jan 24 07:32:52 2006
@@ -20,6 +20,8 @@
#include "action.h"
#include "log.h"
+#include <string>
+
namespace gnash {
// @@ TODO : implement as_array_object's unimplemented functions
@@ -176,7 +178,7 @@
as_value temp;
// Reverse the deque elements
- for (i=0,j=array->elements.size()-1;i<j;i++,j--)
+ for (i=0,j=int(array->elements.size())-1;i<j;i++,j--)
{
temp = array->elements[i];
array->elements[i] = array->elements[j];
@@ -189,18 +191,50 @@
fn.result->set_undefined();
}
+ // Callback to convert array to a string with optional custom separator
(default ',')
+ void array_join(const fn_call& fn)
+ {
+ as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
+
+ unsigned int i;
+ std::string temp,separator = ",";
+
+ if (fn.nargs > 0)
+ separator = fn.arg(0).to_string();
+
+ for (i=0;i<array->elements.size() - 1;i++)
+ temp = temp + array->elements[i].to_string() +
separator;
+
+ // Add the last element without a trailing separator
+ if (array->elements.size() > 0)
+ temp = temp + array->elements[i].to_string();
- // Unimplemented callback to convert array to a string
+ fn.result->set_string(temp.c_str());
+ }
+
+ // Callback to convert array to a string
void array_to_string(const fn_call& fn)
{
- IF_VERBOSE_ACTION(log_error("array method to_string not
implemented yet\n"));
+ as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
+
+ unsigned int i;
+ std::string temp;
+
+ for (i=0;i<array->elements.size() - 1;i++)
+ temp = temp + array->elements[i].to_string() + ',';
+
+ // Add the last element without a trailing comma
+ if (array->elements.size() > 0)
+ temp = temp + array->elements[i].to_string();
+
+ fn.result->set_string(temp.c_str());
}
// this sets all the callback members for an array function - it's
called from as_array_object's constructor
void array_init(as_array_object *array)
{
array->set_member("length", &array_length);
- array->set_member("join", &array_not_impl);
+ array->set_member("join", &array_join);
array->set_member("concat", &array_not_impl);
array->set_member("slice", &array_not_impl);
array->set_member("push", &array_push);