📄 swfdec-swfdecasobject.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"><title>SwfdecAsObject</title><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Swfdec Reference Manual"><link rel="up" href="ch03.html" title="Actionscript interpreter"><link rel="prev" href="SwfdecAsContext.html" title="SwfdecAsContext"><link rel="next" href="swfdec-SwfdecAsArray.html" title="SwfdecAsArray"><meta name="generator" content="GTK-Doc V1.9 (XML mode)"><link rel="stylesheet" href="style.css" type="text/css"><link rel="chapter" href="ch01.html" title="Swfdec Gtk library"><link rel="chapter" href="ch02.html" title="Swfdec library"><link rel="chapter" href="ch03.html" title="Actionscript interpreter"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="SwfdecAsContext.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td><td><a accesskey="u" href="ch03.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td><td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td><th width="100%" align="center">Swfdec Reference Manual</th><td><a accesskey="n" href="swfdec-SwfdecAsArray.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td></tr><tr><td colspan="5" class="shortcuts"><nobr><a href="#id2573871" class="shortcut">Top</a>  |  <a href="#id2606424" class="shortcut">Description</a></nobr></td></tr></table><div class="refentry" lang="en"><a name="swfdec-SwfdecAsObject"></a><div class="titlepage"></div><div class="refnamediv"><table width="100%"><tr><td valign="top"><h2><a name="id2573871"></a><span class="refentrytitle">SwfdecAsObject</span></h2><p>SwfdecAsObject — the base object type for scriptable objects</p></td><td valign="top" align="right"></td></tr></table></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis"> <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>;<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-new">swfdec_as_object_new</a> (<a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context);<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-new-empty">swfdec_as_object_new_empty</a> (<a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-create">swfdec_as_object_create</a> (<a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a> *fun, guint n_args, const <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *args);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add">swfdec_as_object_add</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, <a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context, gsize size);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-set-constructor">swfdec_as_object_set_constructor</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *construct);enum <a href="swfdec-SwfdecAsObject.html#SwfdecAsVariableFlag">SwfdecAsVariableFlag</a>;#define <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-get-variable">swfdec_as_object_get_variable</a> (object, variable, value)gboolean <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-get-variable-and-flags">swfdec_as_object_get_variable_and_flags</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *value, guint *flags, <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> **pobject);#define <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-set-variable">swfdec_as_object_set_variable</a> (object, variable, value)void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-set-variable-and-flags">swfdec_as_object_set_variable_and_flags</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, const <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *value, guint default_flags);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add-variable">swfdec_as_object_add_variable</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, <a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a> *get, <a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a> *set);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-set-variable-flags">swfdec_as_object_set_variable_flags</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, <a href="swfdec-SwfdecAsObject.html#SwfdecAsVariableFlag">SwfdecAsVariableFlag</a> flags);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-unset-variable-flags">swfdec_as_object_unset_variable_flags</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, <a href="swfdec-SwfdecAsObject.html#SwfdecAsVariableFlag">SwfdecAsVariableFlag</a> flags);<a href="swfdec-Enumerations.html#SwfdecAsDeleteReturn">SwfdecAsDeleteReturn</a> <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-delete-variable">swfdec_as_object_delete_variable</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable);gboolean (<a href="swfdec-SwfdecAsObject.html#SwfdecAsVariableForeach">*SwfdecAsVariableForeach</a>) (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *variable, <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *value, guint flags, gpointer data);gboolean <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-foreach">swfdec_as_object_foreach</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, <a href="swfdec-SwfdecAsObject.html#SwfdecAsVariableForeach">SwfdecAsVariableForeach</a> func, gpointer data);gboolean <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-has-function">swfdec_as_object_has_function</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *name);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-run">swfdec_as_object_run</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, <a href="SwfdecAsDebugger.html#SwfdecScript">SwfdecScript</a> *script);void <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-call">swfdec_as_object_call</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *name, guint argc, <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *argv, <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *return_value);<a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a>* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add-function">swfdec_as_object_add_function</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *name, GType type, <a href="swfdec-SwfdecAsFunction.html#SwfdecAsNative">SwfdecAsNative</a> native, guint min_args);<a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a>* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add-constructor">swfdec_as_object_add_constructor</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, const char *name, GType type, GType construct_type, <a href="swfdec-SwfdecAsFunction.html#SwfdecAsNative">SwfdecAsNative</a> native, guint min_args, <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *prototype);char* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-get-debug">swfdec_as_object_get_debug</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object);<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>* <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-resolve">swfdec_as_object_resolve</a> (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object);</pre></div><div class="refsect1" lang="en"><a name="id2606424"></a><h2>Description</h2><p>This is the basic object type in Swfdec. Every object used by the script engine must be a <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject"><span class="type">SwfdecAsObject</span></a>. It handles memory management and assigningvariables to it. Almost all functions that are called on objects require thatthe objects have been added to the garbage collector previously. For custom-created objects, you need to do this using <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add"><code class="function">swfdec_as_object_add()</code></a>, built-in functions that create objects do this manually.</p><p>Note that you cannot know the lifetime of a <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject"><span class="type">SwfdecAsObject</span></a>, since scripts may assign it as a variable to other objects. So you should not assume to know when an object gets removed.</p><p></p></div><div class="refsect1" lang="en"><a name="id2606480"></a><h2>Details</h2><div class="refsect2" lang="en"><a name="id2606491"></a><h3><a name="SwfdecAsObject"></a>SwfdecAsObject</h3><a class="indexterm" name="id2606503"></a><pre class="programlisting">typedef struct {} SwfdecAsObject;</pre><p>Every object value inside the Swfdec script engine must be a SwfdecAsObject.If you want to add custom objects to your script engine, you need to create asubclass. The class provides a number of virtual functions that you can override to achieve the desired behaviour.</p><p></p></div><hr><div class="refsect2" lang="en"><a name="id2606527"></a><h3><a name="swfdec-as-object-new"></a>swfdec_as_object_new ()</h3><a class="indexterm" name="id2606539"></a><pre class="programlisting"><a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>* swfdec_as_object_new (<a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context);</pre><p>Allocates a new Object. This does the same as the Actionscript code "new <code class="function">Object()</code>".</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>context</code></em> :</span></td><td> a <a href="SwfdecAsContext.html" title="SwfdecAsContext"><span class="type">SwfdecAsContext</span></a></td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td> the new object or NULL on out of memory.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2626071"></a><h3><a name="swfdec-as-object-new-empty"></a>swfdec_as_object_new_empty ()</h3><a class="indexterm" name="id2626082"></a><pre class="programlisting"><a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a>* swfdec_as_object_new_empty (<a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context);</pre><p>Creates an empty object. The prototype and constructor properties of thereturned object will not be set. You probably want to call <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-set-constructor"><code class="function">swfdec_as_object_set_constructor()</code></a> on the returned object yourself.You may want to use <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-new"><code class="function">swfdec_as_object_new()</code></a> instead.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>context</code></em> :</span></td><td> a <a href="SwfdecAsContext.html" title="SwfdecAsContext"><span class="type">SwfdecAsContext</span></a></td></tr><tr><td><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td><td> A new <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject"><span class="type">SwfdecAsObject</span></a> adde to <em class="parameter"><code>context</code></em> or <code class="literal">NULL</code> on OOM.</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2626184"></a><h3><a name="swfdec-as-object-create"></a>swfdec_as_object_create ()</h3><a class="indexterm" name="id2626195"></a><pre class="programlisting">void swfdec_as_object_create (<a href="swfdec-SwfdecAsFunction.html#SwfdecAsFunction">SwfdecAsFunction</a> *fun, guint n_args, const <a href="swfdec-SwfdecAsValue.html#SwfdecAsValue">SwfdecAsValue</a> *args);</pre><p>Creates a new object for the given constructor and pushes the constructor ontop of the stack. To actually run the constructor, you need to call <a href="SwfdecAsContext.html#swfdec-as-context-run"><code class="function">swfdec_as_context_run()</code></a>. After the constructor has been run, the new object will be pushed to the top of the stack.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>fun</code></em> :</span></td><td> constructor</td></tr><tr><td><span class="term"><em class="parameter"><code>n_args</code></em> :</span></td><td> number of arguments</td></tr><tr><td><span class="term"><em class="parameter"><code>args</code></em> :</span></td><td> arguments to pass to constructor</td></tr></tbody></table></div></div><hr><div class="refsect2" lang="en"><a name="id2626300"></a><h3><a name="swfdec-as-object-add"></a>swfdec_as_object_add ()</h3><a class="indexterm" name="id2626311"></a><pre class="programlisting">void swfdec_as_object_add (<a href="swfdec-SwfdecAsObject.html#SwfdecAsObject">SwfdecAsObject</a> *object, <a href="SwfdecAsContext.html" title="SwfdecAsContext">SwfdecAsContext</a> *context, gsize size);</pre><p>Takes over the reference to <em class="parameter"><code>object</code></em> for the garbage collector of <em class="parameter"><code>context</code></em>. The object may not already be part of a different context. The given <em class="parameter"><code>size</code></em> must have been allocated before with <a href="SwfdecAsContext.html#swfdec-as-context-use-mem"><code class="function">swfdec_as_context_use_mem()</code></a>.Note that after <a href="swfdec-SwfdecAsObject.html#swfdec-as-object-add"><code class="function">swfdec_as_object_add()</code></a> the garbage collector might hold theonly reference to <em class="parameter"><code>object</code></em>.</p><p></p><div class="variablelist"><table border="0"><col align="left" valign="top"><tbody><tr><td><span class="term"><em class="parameter"><code>object</code></em> :</span></td><td> <a href="swfdec-SwfdecAsObject.html#SwfdecAsObject"><span class="type">SwfdecAsObject</span></a> to make garbage-collected</td></tr><tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -