Benjamin Otte
2007-Aug-21 12:02 UTC
[Swfdec] Branch 'vivi' - 4 commits - doc/swfdec-sections.txt libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_string.c vivified/core
doc/swfdec-sections.txt | 1 libswfdec/swfdec_as_frame.c | 17 +++++++++++++++ libswfdec/swfdec_as_frame.h | 1 libswfdec/swfdec_as_string.c | 9 ++++++++ vivified/core/vivi_initialize.as | 2 + vivified/core/vivi_wrap_as.c | 43 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 73 insertions(+) New commits: diff-tree 3e6829af094100400d58f5540f3c13d7f6d7f63a (from 70040fde674cc20d5c9fa91250493cf81271542b) Author: Benjamin Otte <otte at gnome.org> Date: Tue Aug 21 14:02:05 2007 +0200 add a Wrap.get() function to get variables diff --git a/vivified/core/vivi_initialize.as b/vivified/core/vivi_initialize.as index 94507bc..68c4c09 100644 --- a/vivified/core/vivi_initialize.as +++ b/vivified/core/vivi_initialize.as @@ -21,6 +21,7 @@ Wrap = function () {}; Wrap.prototype = {}; +Wrap.prototype.get = Native.wrap_get; Wrap.prototype.toString = Native.wrap_toString; Frame = function () extends Wrap {}; diff --git a/vivified/core/vivi_wrap_as.c b/vivified/core/vivi_wrap_as.c index 86aaca2..8110286 100644 --- a/vivified/core/vivi_wrap_as.c +++ b/vivified/core/vivi_wrap_as.c @@ -44,6 +44,29 @@ vivi_wrap_toString (SwfdecAsContext *cx, SWFDEC_AS_VALUE_SET_STRING (retval, swfdec_as_context_give_string (cx, s)); } +VIVI_FUNCTION ("wrap_get", vivi_wrap_get) +void +vivi_wrap_get (SwfdecAsContext *cx, SwfdecAsObject *this, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) +{ + ViviApplication *app = VIVI_APPLICATION (cx); + ViviWrap *wrap; + SwfdecAsValue val; + const char *name; + + if (!VIVI_IS_WRAP (this) || argc == 0) + return; + wrap = VIVI_WRAP (this); + if (wrap->wrap == NULL) + return; + + name = swfdec_as_value_to_string (cx, &argv[0]); + swfdec_as_object_get_variable (wrap->wrap, + swfdec_as_context_get_string (SWFDEC_AS_CONTEXT (app->player), name), + &val); + vivi_wrap_value (app, retval, &val); +} + /*** FRAME specific code ***/ VIVI_FUNCTION ("frame_name_get", vivi_wrap_name_get) diff-tree 70040fde674cc20d5c9fa91250493cf81271542b (from ef85440d2e8a21ddaa688035b6071ce5eef6cc3b) Author: Benjamin Otte <otte at gnome.org> Date: Tue Aug 21 13:30:39 2007 +0200 implement Frame.this diff --git a/vivified/core/vivi_initialize.as b/vivified/core/vivi_initialize.as index 964f5b3..94507bc 100644 --- a/vivified/core/vivi_initialize.as +++ b/vivified/core/vivi_initialize.as @@ -28,6 +28,7 @@ Frame.prototype = new Wrap (); Frame.prototype.addProperty ("code", Native.frame_code_get, null); Frame.prototype.addProperty ("name", Native.frame_name_get, null); Frame.prototype.addProperty ("next", Native.frame_next_get, null); +Frame.prototype.addProperty ("this", Native.frame_this_get, null); /*** breakpoints ***/ diff --git a/vivified/core/vivi_wrap_as.c b/vivified/core/vivi_wrap_as.c index c905f34..86aaca2 100644 --- a/vivified/core/vivi_wrap_as.c +++ b/vivified/core/vivi_wrap_as.c @@ -106,4 +106,24 @@ vivi_wrap_next_get (SwfdecAsContext *cx, SWFDEC_AS_VALUE_SET_OBJECT (retval, vivi_wrap_object (VIVI_APPLICATION (cx), obj)); } +VIVI_FUNCTION ("frame_this_get", vivi_wrap_this_get) +void +vivi_wrap_this_get (SwfdecAsContext *cx, SwfdecAsObject *this, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) +{ + ViviWrap *wrap; + SwfdecAsObject *obj; + + if (!VIVI_IS_WRAP (this)) + return; + + wrap = VIVI_WRAP (this); + if (!SWFDEC_IS_AS_FRAME (wrap->wrap)) + return; + + obj = SWFDEC_AS_OBJECT (swfdec_as_frame_get_this (SWFDEC_AS_FRAME (wrap->wrap))); + if (obj) + SWFDEC_AS_VALUE_SET_OBJECT (retval, vivi_wrap_object (VIVI_APPLICATION (cx), obj)); +} + diff-tree ef85440d2e8a21ddaa688035b6071ce5eef6cc3b (from 7f9eebf1183d28ceaaaf06d5910c9144eb5cc435) Author: Benjamin Otte <otte at gnome.org> Date: Tue Aug 21 13:28:10 2007 +0200 implement swfdec_as_frame_get_this () diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt index c5f9076..019380c 100644 --- a/doc/swfdec-sections.txt +++ b/doc/swfdec-sections.txt @@ -375,6 +375,7 @@ SwfdecAsFrame swfdec_as_frame_get_next swfdec_as_frame_get_function_name swfdec_as_frame_get_script +swfdec_as_frame_get_this SwfdecAsStackIterator swfdec_as_stack_iterator_init swfdec_as_stack_iterator_init_arguments diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c index a9fe372..b7cb037 100644 --- a/libswfdec/swfdec_as_frame.c +++ b/libswfdec/swfdec_as_frame.c @@ -787,3 +787,20 @@ swfdec_as_frame_get_script (SwfdecAsFram return frame->script; } + +/** + * swfdec_as_frame_get_this: + * @frame: a #SwfdecAsFrame + * + * Gets the this object of the given @frame. If the frame has no this object, + * %NULL is returned. + * + * Returns: The this object of the frame or %NULL if none. + **/ +SwfdecAsObject * +swfdec_as_frame_get_this (SwfdecAsFrame *frame) +{ + g_return_val_if_fail (SWFDEC_IS_AS_FRAME (frame), NULL); + + return frame->thisp; +} diff --git a/libswfdec/swfdec_as_frame.h b/libswfdec/swfdec_as_frame.h index 8157858..344eaa7 100644 --- a/libswfdec/swfdec_as_frame.h +++ b/libswfdec/swfdec_as_frame.h @@ -49,6 +49,7 @@ GType swfdec_as_frame_get_type (void); SwfdecAsFrame * swfdec_as_frame_get_next (SwfdecAsFrame * frame); const char * swfdec_as_frame_get_function_name (SwfdecAsFrame * frame); SwfdecScript * swfdec_as_frame_get_script (SwfdecAsFrame * frame); +SwfdecAsObject *swfdec_as_frame_get_this (SwfdecAsFrame * frame); SwfdecAsValue * swfdec_as_stack_iterator_init (SwfdecAsStackIterator * iter, SwfdecAsFrame * frame); diff-tree 7f9eebf1183d28ceaaaf06d5910c9144eb5cc435 (from 9ee0631673a83e6a59448873ab93b90311d8d88b) Author: Benjamin Otte <otte at gnome.org> Date: Tue Aug 21 13:26:13 2007 +0200 implement debug-printing for SwfdecAsString diff --git a/libswfdec/swfdec_as_string.c b/libswfdec/swfdec_as_string.c index 720bc5c..96f311d 100644 --- a/libswfdec/swfdec_as_string.c +++ b/libswfdec/swfdec_as_string.c @@ -43,12 +43,21 @@ swfdec_as_string_do_mark (SwfdecAsObject SWFDEC_AS_OBJECT_CLASS (swfdec_as_string_parent_class)->mark (object); } +static char * +swfdec_as_string_debug (SwfdecAsObject *object) +{ + SwfdecAsString *string = SWFDEC_AS_STRING (object); + + return g_strdup (string->string); +} + static void swfdec_as_string_class_init (SwfdecAsStringClass *klass) { SwfdecAsObjectClass *asobject_class = SWFDEC_AS_OBJECT_CLASS (klass); asobject_class->mark = swfdec_as_string_do_mark; + asobject_class->debug = swfdec_as_string_debug; } static void
Reasonably Related Threads
- Branch 'vivi' - 18 commits - configure.ac doc/swfdec-sections.txt libswfdec/swfdec_as_context.c libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_types.h libswfdec/swfdec_player.c vivified/core vivified/ui
- Branch 'vivi' - 13 commits - doc/swfdec-sections.txt libswfdec/swfdec_as_debugger.h libswfdec/swfdec_as_frame.c libswfdec/swfdec_as_frame.h libswfdec/swfdec_as_types.h vivified/core vivified/ui
- 163 commits - autogen.sh configure.ac doc/swfdec-sections.txt libswfdec-gtk/swfdec_gtk_player.c libswfdec-gtk/swfdec_gtk_player.h libswfdec-gtk/swfdec_gtk_widget.c libswfdec-gtk/swfdec_source.c libswfdec/Makefile.am libswfdec/swfdec_as_array.c
- Branch 'vivi' - 11 commits - libswfdec-gtk/swfdec_gtk_widget.c libswfdec/Makefile.am libswfdec/swfdec.h libswfdec/swfdec_player.c libswfdec/swfdec_player_internal.h vivified/core
- Branch 'vivi' - 24 commits - configure.ac libswfdec/swfdec_sprite_movie.c libswfdec/swfdec_tag.c libswfdec/swfdec_tag.h vivified/core vivified/dock vivified/ui