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 06:37:29 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Branch:         
Changes by:     Michael Carlson <address@hidden>        06/01/24 06:37:29

Modified files:
        .              : ChangeLog 
        server         : array.cpp 

Log message:
        Implement array::reverse, and also fix array::push() and 
array::unshift() to return the new array length, as they should

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.39&tr2=1.40&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/array.cpp.diff?tr1=1.3&tr2=1.4&r1=text&r2=text

Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.39 gnash/ChangeLog:1.40
--- gnash/ChangeLog:1.39        Tue Jan 24 06:03:59 2006
+++ gnash/ChangeLog     Tue Jan 24 06:37:29 2006
@@ -1,7 +1,8 @@
 2006-01-23 Michael Carlson <address@hidden>
 
        * server/array.h: as_array_object now uses deque instead of vector
-       * server/array.cpp: Implement array::unshift, shift
+       * server/array.cpp: Implement array::unshift, shift, reverse -
+       also make push return the new array length as it should
 
 2006-01-23  Rob Savoye  <address@hidden>
 
Index: gnash/server/array.cpp
diff -u gnash/server/array.cpp:1.3 gnash/server/array.cpp:1.4
--- gnash/server/array.cpp:1.3  Tue Jan 24 06:03:59 2006
+++ gnash/server/array.cpp      Tue Jan 24 06:37:29 2006
@@ -114,7 +114,7 @@
                for (int i=0;i<fn.nargs;i++)
                        array->elements.push_back(fn.arg(i));
 
-               fn.result->set_undefined();
+               fn.result->set_int(array->size());
        }
 
        // Callback to push values to the front of an array
@@ -126,7 +126,7 @@
                for (int i=fn.nargs-1;i>=0;i--)
                        array->elements.push_front(fn.arg(i));
 
-               fn.result->set_undefined();
+               fn.result->set_int(array->size());
        }
 
        // Callback to pop a value from the back of an array
@@ -167,6 +167,29 @@
                IF_VERBOSE_ACTION(log_msg("calling array shift, result:%s, new 
array size:%d\n",fn.result->to_string(),array->elements.size()));
        }
 
+       // Callback to reverse the position of the elements in an array
+       void array_reverse(const fn_call& fn)
+       {
+               as_array_object* array = (as_array_object*) (as_object*) 
fn.this_ptr;
+
+               int i,j;
+               as_value temp;
+
+               // Reverse the deque elements
+               for (i=0,j=array->elements.size()-1;i<j;i++,j--)
+               {
+                       temp = array->elements[i];
+                       array->elements[i] = array->elements[j];
+                       array->elements[j] = temp;
+               }
+               
+               IF_VERBOSE_ACTION(log_msg("calling array reverse on array with 
size:%d\n",array->elements.size()));
+
+               // result is undefined
+               fn.result->set_undefined();
+       }
+
+
        // Unimplemented callback to convert array to a string
        void array_to_string(const fn_call& fn)
        {
@@ -187,7 +210,7 @@
                array->set_member("splice", &array_not_impl);
                array->set_member("sort", &array_not_impl);
                array->set_member("sortOn", &array_not_impl);
-               array->set_member("reverse", &array_not_impl);
+               array->set_member("reverse", &array_reverse);
                array->set_member("toString", &array_to_string);
        }
 




reply via email to

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