gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/asobj/Object.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Object.cpp
Date: Thu, 04 Jan 2007 23:12:08 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/01/04 23:12:08

Modified files:
        .              : ChangeLog 
        server/asobj   : Object.cpp 

Log message:
                * server/asobj/Object.cpp: stubbed registerClass().

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2047&r2=1.2048
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Object.cpp?cvsroot=gnash&r1=1.8&r2=1.9

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2047
retrieving revision 1.2048
diff -u -b -r1.2047 -r1.2048
--- ChangeLog   4 Jan 2007 23:11:03 -0000       1.2047
+++ ChangeLog   4 Jan 2007 23:12:08 -0000       1.2048
@@ -1,5 +1,6 @@
 2007-01-04 Sandro Santilli <address@hidden>
 
+       * server/asobj/Object.cpp: stubbed registerClass().
        * server/sprite_instance.cpp (movieclip_ctor): allow 'new MovieClip'.
        * testsuite/actionscript.all/MovieClip.as: test 'new MovieClip'.
        * server/impl.cpp, server/swf/tag_loaders.{h,cpp}:

Index: server/asobj/Object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Object.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/asobj/Object.cpp     11 Nov 2006 22:44:54 -0000      1.8
+++ server/asobj/Object.cpp     4 Jan 2007 23:12:08 -0000       1.9
@@ -18,7 +18,7 @@
 //
 //
 
-/* $Id: Object.cpp,v 1.8 2006/11/11 22:44:54 strk Exp $ */
+/* $Id: Object.cpp,v 1.9 2007/01/04 23:12:08 strk Exp $ */
 
 // Implementation of ActionScript Object class.
 
@@ -37,7 +37,8 @@
 namespace gnash {
 
 // Forward declarations
-void object_addproperty(const fn_call&);
+static void object_addproperty(const fn_call&);
+static void object_registerClass(const fn_call&);
 
 
 static void
@@ -46,6 +47,8 @@
        // FIXME: add Object interface here:
        o.set_member("addProperty", &object_addproperty);
        o.set_member_flags("addProperty", 1); // hidden
+       o.set_member("registerClass", &object_registerClass);
+       o.set_member_flags("registerClass", 1); // hidden
 }
 
 static as_object*
@@ -130,7 +133,7 @@
 
 }
 
-void
+static void
 object_addproperty(const fn_call& fn)
 {
        assert(fn.this_ptr);
@@ -183,4 +186,52 @@
        fn.result->set_bool(result);
 }
   
+static void
+object_registerClass(const fn_call& fn)
+{
+       assert(fn.this_ptr);
+       as_object* obj = fn.this_ptr;
+
+       if ( fn.nargs != 2 )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+                       log_warning("Invalid call to Object.registerClass() - "
+                               "wrong number of args: %d, expected 2.",
+                               fn.nargs);
+               );
+               fn.result->set_bool(false);
+               return;
+       }
+
+       std::string symbolid = fn.arg(0).to_std_string();
+       if ( symbolid.empty() )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+                       log_warning("Invalid call to Object.registerClass() - "
+                               "empty symbol id");
+               );
+               fn.result->set_bool(false);
+               return;
+       }
+
+       as_function* theclass = fn.arg(1).to_as_function();
+       if ( ! theclass )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+                       log_warning("Invalid call to Object.registerClass() - "
+                               "class is not a function");
+               );
+               fn.result->set_bool(false);
+               return;
+       }
+
+       // TODO: do something with these values:
+       //       - resolve the symbolid to obtain a movie_definition 
+       //       - call movie_definition::registerClass(as_function)
+       //
+       //
+       log_warning("Object.registerClass() only stubbed (FIXME!)");
+       fn.result->set_bool(false);
+}
+  
 } // namespace gnash




reply via email to

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