gnash-commit
[Top][All Lists]
Advanced

[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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]