[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ./ChangeLog server/action.cpp server/acti...
From: |
strk |
Subject: |
[Gnash-commit] gnash ./ChangeLog server/action.cpp server/acti... |
Date: |
Sat, 04 Feb 2006 15:32:07 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: strk <address@hidden> 06/02/04 15:32:07
Modified files:
. : ChangeLog
server : action.cpp action.h
Log message:
ACTION_INIOBJECT (0x43) implemented
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.84&tr2=1.85&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.h.diff?tr1=1.7&tr2=1.8&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.84 gnash/ChangeLog:1.85
--- gnash/ChangeLog:1.84 Sat Feb 4 15:01:51 2006
+++ gnash/ChangeLog Sat Feb 4 15:32:06 2006
@@ -2,6 +2,8 @@
* libbase/container.h: Doxygen-compatible comments for hash
struct. Const-correct size() method.
+ * server/action.cpp: opcode 0x43 (Declare Object / INITOBJECT)
+ implemented.
2006-02-04 Rob Savoye <address@hidden>
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.18 gnash/server/action.cpp:1.19
--- gnash/server/action.cpp:1.18 Sat Feb 4 09:14:25 2006
+++ gnash/server/action.cpp Sat Feb 4 15:32:06 2006
@@ -2235,8 +2235,34 @@
}
case SWF::ACTION_INITOBJECT: // declare
object
{
+ //
+ // SWFACTION_PUSH
+ // [000] Constant: 1 "obj"
+ // [001] Constant: 0 "member" <--
we handle up to here
+ // [002] Integer: 1
+ // [003] Integer: 1
+ // SWFACTION_INITOBJECT
+
+ int nmembers = (int)
env->pop().to_number();
+
+ smart_ptr<as_object> new_obj_ptr(new
as_object); // won't this be leaking ?
+
+ // Set provided members
+ for (int i=0; i<nmembers; ++i) {
+ as_value member_value =
env->pop();
+ tu_stringi member_name =
env->pop().to_tu_stringi();
+
new_obj_ptr->set_member(member_name, member_value);
+ }
+
// @@ TODO
- log_error("todo opcode: %02X\n",
action_id);
+ //log_error("checkme opcode: %02X\n",
action_id);
+
+ as_value new_obj;
+
new_obj.set_as_object_interface(new_obj_ptr.get_ptr());
+
+ //env->drop(nmembers*2);
+ env->push(new_obj);
+
break;
}
case SWF::ACTION_TYPEOF: // type of
Index: gnash/server/action.h
diff -u gnash/server/action.h:1.7 gnash/server/action.h:1.8
--- gnash/server/action.h:1.7 Sat Feb 4 15:11:52 2006
+++ gnash/server/action.h Sat Feb 4 15:32:07 2006
@@ -868,6 +868,9 @@
// stack access/manipulation
void push(T val) { push_val(as_value(val)); }
void push_val(const as_value& val) { m_stack.push_back(val);
}
+
+
+ /// Pops an as_value off the stack top and return it.
as_value pop() { as_value result = m_stack.back();
m_stack.pop_back(); return result; }
/// Get stack value at the given distance from top.
- [Gnash-commit] gnash ./ChangeLog server/action.cpp server/acti...,
strk <=