[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ./ChangeLog server/array.cpp server/array.h
From: |
Michael Carlson |
Subject: |
[Gnash-commit] gnash ./ChangeLog server/array.cpp server/array.h |
Date: |
Tue, 24 Jan 2006 06:03:59 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: Michael Carlson <address@hidden> 06/01/24 06:03:59
Modified files:
. : ChangeLog
server : array.cpp array.h
Log message:
Convert as_array_object to use STL deque instead of STL vector, and
implement actionscript functions array::shift and array::unshift
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.38&tr2=1.39&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/array.cpp.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/array.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.38 gnash/ChangeLog:1.39
--- gnash/ChangeLog:1.38 Tue Jan 24 01:33:01 2006
+++ gnash/ChangeLog Tue Jan 24 06:03:59 2006
@@ -1,3 +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
+
2006-01-23 Rob Savoye <address@hidden>
* plugin/player.cpp, player.h: Neew file for Flash player within
Index: gnash/server/array.cpp
diff -u gnash/server/array.cpp:1.2 gnash/server/array.cpp:1.3
--- gnash/server/array.cpp:1.2 Mon Jan 23 17:01:13 2006
+++ gnash/server/array.cpp Tue Jan 24 06:03:59 2006
@@ -105,11 +105,11 @@
fn.result->set_int(array->size());
}
- // Callback to push values to array
+ // Callback to push values to the back of an array
void array_push(const fn_call& fn)
{
as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
- IF_VERBOSE_ACTION(log_msg("calling array push, pushing %d
values onto array\n",fn.nargs));
+ IF_VERBOSE_ACTION(log_msg("calling array push, pushing %d
values onto back of array\n",fn.nargs));
for (int i=0;i<fn.nargs;i++)
array->elements.push_back(fn.arg(i));
@@ -117,7 +117,19 @@
fn.result->set_undefined();
}
- // Callback to pop a value from an array
+ // Callback to push values to the front of an array
+ void array_unshift(const fn_call& fn)
+ {
+ as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
+ IF_VERBOSE_ACTION(log_msg("calling array unshift, pushing %d
values onto front of array\n",fn.nargs));
+
+ for (int i=fn.nargs-1;i>=0;i--)
+ array->elements.push_front(fn.arg(i));
+
+ fn.result->set_undefined();
+ }
+
+ // Callback to pop a value from the back of an array
void array_pop(const fn_call& fn)
{
as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
@@ -125,7 +137,7 @@
// If the array is empty, report an error and return undefined!
if (array->elements.size() <= 0)
{
- IF_VERBOSE_ACTION(log_error("tried to pop element from
empty array!\n"));
+ IF_VERBOSE_ACTION(log_error("tried to pop element from
back of empty array!\n"));
fn.result->set_undefined();
return;
}
@@ -136,6 +148,25 @@
IF_VERBOSE_ACTION(log_msg("calling array pop, result:%s, new
array size:%d\n",fn.result->to_string(),array->elements.size()));
}
+ // Callback to pop a value from the front of an array
+ void array_shift(const fn_call& fn)
+ {
+ as_array_object* array = (as_array_object*) (as_object*)
fn.this_ptr;
+
+ // If the array is empty, report an error and return undefined!
+ if (array->elements.size() <= 0)
+ {
+ IF_VERBOSE_ACTION(log_error("tried to shift element
from front of empty array!\n"));
+ fn.result->set_undefined();
+ return;
+ }
+
+ // Get our index, log, then return result
+ (*fn.result) = array->elements[0];
+ array->elements.pop_front();
+ IF_VERBOSE_ACTION(log_msg("calling array shift, result:%s, new
array size:%d\n",fn.result->to_string(),array->elements.size()));
+ }
+
// Unimplemented callback to convert array to a string
void array_to_string(const fn_call& fn)
{
@@ -150,9 +181,9 @@
array->set_member("concat", &array_not_impl);
array->set_member("slice", &array_not_impl);
array->set_member("push", &array_push);
- array->set_member("unshift", &array_not_impl);
+ array->set_member("unshift", &array_unshift);
array->set_member("pop", &array_pop);
- array->set_member("shift", &array_not_impl);
+ array->set_member("shift", &array_shift);
array->set_member("splice", &array_not_impl);
array->set_member("sort", &array_not_impl);
array->set_member("sortOn", &array_not_impl);
Index: gnash/server/array.h
diff -u gnash/server/array.h:1.1 gnash/server/array.h:1.2
--- gnash/server/array.h:1.1 Mon Jan 23 16:04:19 2006
+++ gnash/server/array.h Tue Jan 24 06:03:59 2006
@@ -20,7 +20,7 @@
#define GNASH_ARRAY_H
#include "action.h"
-#include <vector>
+#include <deque>
namespace gnash {
@@ -30,7 +30,7 @@
struct as_array_object : public as_object
{
- std::vector<as_value> elements;
+ std::deque<as_value> elements;
as_array_object();
const int size() const;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ./ChangeLog server/array.cpp server/array.h,
Michael Carlson <=