1
<refentry id="MgReferer">
3
<refentrytitle>MgReferer</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>LIBMERGEANT Library</refmiscinfo>
9
<refname>MgReferer</refname><refpurpose>Interface to know when on object is completely defined</refpurpose>
12
<refsynopsisdiv><title>Synopsis</title>
18
struct <link linkend="MgReferer-struct">MgReferer</link>;
19
<link linkend="GType">GType</link> <link linkend="mg-referer-get-type">mg_referer_get_type</link> (void);
20
<link linkend="gboolean">gboolean</link> <link linkend="mg-referer-activate">mg_referer_activate</link> (<link linkend="MgReferer">MgReferer</link> *iface);
21
<link linkend="void">void</link> <link linkend="mg-referer-deactivate">mg_referer_deactivate</link> (<link linkend="MgReferer">MgReferer</link> *iface);
22
<link linkend="gboolean">gboolean</link> <link linkend="mg-referer-is-active">mg_referer_is_active</link> (<link linkend="MgReferer">MgReferer</link> *iface);
23
<link linkend="GSList">GSList</link>* <link linkend="mg-referer-get-ref-objects">mg_referer_get_ref_objects</link> (<link linkend="MgReferer">MgReferer</link> *iface);
24
<link linkend="void">void</link> <link linkend="mg-referer-replace-refs">mg_referer_replace_refs</link> (<link linkend="MgReferer">MgReferer</link> *iface,
25
<link linkend="GHashTable">GHashTable</link> *replacements);
30
<title>Object Hierarchy</title>
33
<link linkend="GInterface">GInterface</link>
40
<title>Prerequisites</title>
43
<link linkend="GObject">GObject</link>.</para>
50
<title>Known Implementations</title>
52
MgReferer is implemented by
53
<link linkend="MgQfValue">MgQfValue</link>, <link linkend="MgQfField">MgQfField</link>, <link linkend="MgTarget">MgTarget</link>, <link linkend="MgDbConstraint">MgDbConstraint</link>, <link linkend="MgQfAll">MgQfAll</link>, <link linkend="MgCondition">MgCondition</link>, <link linkend="MgQuery">MgQuery</link>, <link linkend="MgJoin">MgJoin</link>, <link linkend="MgQfFunc">MgQfFunc</link>, <link linkend="MgCustomLayout">MgCustomLayout</link> and <link linkend="MgParameter">MgParameter</link>.</para>
59
<title>Signal Prototypes</title>
62
"<link linkend="MgReferer-activated">activated</link>" <link linkend="void">void</link> user_function (<link linkend="MgReferer">MgReferer</link> *mgreferer,
63
<link linkend="gpointer">gpointer</link> user_data);
64
"<link linkend="MgReferer-deactivated">deactivated</link>"
65
<link linkend="void">void</link> user_function (<link linkend="MgReferer">MgReferer</link> *mgreferer,
66
<link linkend="gpointer">gpointer</link> user_data);
72
<title>Description</title>
74
Some objects can be initialized in an uncomplete state. This is the case for example of
75
a primary key database constraint, when we don't know, at creation time, which field it applies to.
76
These objects implement this interface to at least signal when they are ready to be used.
79
Some objects need to be created _before_ other objects they will need to be operational even exist. They also
80
implement this interface.
85
<title>Details</title>
87
<title><anchor id="MgReferer-struct"/>struct MgReferer</title>
88
<indexterm><primary>MgReferer</primary></indexterm><programlisting>struct MgReferer;</programlisting>
93
<title><anchor id="mg-referer-get-type"/>mg_referer_get_type ()</title>
94
<indexterm><primary>mg_referer_get_type</primary></indexterm><programlisting><link linkend="GType">GType</link> mg_referer_get_type (void);</programlisting>
97
</para><variablelist role="params">
98
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
101
</simpara></listitem></varlistentry>
102
</variablelist></refsect2>
104
<title><anchor id="mg-referer-activate"/>mg_referer_activate ()</title>
105
<indexterm><primary>mg_referer_activate</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_referer_activate (<link linkend="MgReferer">MgReferer</link> *iface);</programlisting>
107
Tries to activate the object, does nothing if the object is already active.</para>
110
</para><variablelist role="params">
111
<varlistentry><term><parameter>iface</parameter> :</term>
112
<listitem><simpara> an object which implements the <link linkend="MgReferer"><type>MgReferer</type></link> interface
113
</simpara></listitem></varlistentry>
114
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if the object is active after the call
115
</simpara></listitem></varlistentry>
116
</variablelist></refsect2>
118
<title><anchor id="mg-referer-deactivate"/>mg_referer_deactivate ()</title>
119
<indexterm><primary>mg_referer_deactivate</primary></indexterm><programlisting><link linkend="void">void</link> mg_referer_deactivate (<link linkend="MgReferer">MgReferer</link> *iface);</programlisting>
121
Deactivates the object. This is the opposite to function <link linkend="mg-referer-activate"><function>mg_referer_activate()</function></link>.
122
If the object is already non active, then nothing happens.</para>
125
</para><variablelist role="params">
126
<varlistentry><term><parameter>iface</parameter> :</term>
127
<listitem><simpara> an object which implements the <link linkend="MgReferer"><type>MgReferer</type></link> interface
128
</simpara></listitem></varlistentry>
129
</variablelist></refsect2>
131
<title><anchor id="mg-referer-is-active"/>mg_referer_is_active ()</title>
132
<indexterm><primary>mg_referer_is_active</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> mg_referer_is_active (<link linkend="MgReferer">MgReferer</link> *iface);</programlisting>
134
Get the status of an object</para>
137
</para><variablelist role="params">
138
<varlistentry><term><parameter>iface</parameter> :</term>
139
<listitem><simpara> an object which implements the <link linkend="MgReferer"><type>MgReferer</type></link> interface
140
</simpara></listitem></varlistentry>
141
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> TRUE if the object is active
142
</simpara></listitem></varlistentry>
143
</variablelist></refsect2>
145
<title><anchor id="mg-referer-get-ref-objects"/>mg_referer_get_ref_objects ()</title>
146
<indexterm><primary>mg_referer_get_ref_objects</primary></indexterm><programlisting><link linkend="GSList">GSList</link>* mg_referer_get_ref_objects (<link linkend="MgReferer">MgReferer</link> *iface);</programlisting>
148
Get the list of objects which are referenced by <parameter>iface</parameter>. The returned list is a
149
new list. If <parameter>iface</parameter> is not active, then the returned list is incomplete.</para>
152
</para><variablelist role="params">
153
<varlistentry><term><parameter>iface</parameter> :</term>
154
<listitem><simpara> an object which implements the <link linkend="MgReferer"><type>MgReferer</type></link> interface
155
</simpara></listitem></varlistentry>
156
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new list of referenced objects
157
</simpara></listitem></varlistentry>
158
</variablelist></refsect2>
160
<title><anchor id="mg-referer-replace-refs"/>mg_referer_replace_refs ()</title>
161
<indexterm><primary>mg_referer_replace_refs</primary></indexterm><programlisting><link linkend="void">void</link> mg_referer_replace_refs (<link linkend="MgReferer">MgReferer</link> *iface,
162
<link linkend="GHashTable">GHashTable</link> *replacements);</programlisting>
164
Ask <parameter>iface</parameter> to replace references to objects listed as keys in the <parameter>replacements</parameter> hash table
165
with references to objects of the corresponding value.
168
It's up to the caller to make sure each pair of (key, value) objects in <parameter>replacements</parameter> are of the
169
same type, and that it makes sense to procede to the replacement.
172
The object implementing this interface will accept to do any work only if it is
173
already active.</para>
176
</para><variablelist role="params">
177
<varlistentry><term><parameter>iface</parameter> :</term>
178
<listitem><simpara> an object which implements the <link linkend="MgReferer"><type>MgReferer</type></link> interface
179
</simpara></listitem></varlistentry>
180
<varlistentry><term><parameter>replacements</parameter> :</term>
181
<listitem><simpara> a <link linkend="GHashTable"><type>GHashTable</type></link>
182
</simpara></listitem></varlistentry>
183
</variablelist></refsect2>
188
<title>Signals</title>
189
<refsect2><title><anchor id="MgReferer-activated"/>The "activated" signal</title>
190
<programlisting><link linkend="void">void</link> user_function (<link linkend="MgReferer">MgReferer</link> *mgreferer,
191
<link linkend="gpointer">gpointer</link> user_data);</programlisting>
194
</para><variablelist role="params">
195
<varlistentry><term><parameter>mgreferer</parameter> :</term>
196
<listitem><simpara>the object which received the signal.
198
</simpara></listitem></varlistentry>
199
<varlistentry><term><parameter>user_data</parameter> :</term>
200
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
201
</variablelist></refsect2><refsect2><title><anchor id="MgReferer-deactivated"/>The "deactivated" signal</title>
202
<programlisting><link linkend="void">void</link> user_function (<link linkend="MgReferer">MgReferer</link> *mgreferer,
203
<link linkend="gpointer">gpointer</link> user_data);</programlisting>
206
</para><variablelist role="params">
207
<varlistentry><term><parameter>mgreferer</parameter> :</term>
208
<listitem><simpara>the object which received the signal.
210
</simpara></listitem></varlistentry>
211
<varlistentry><term><parameter>user_data</parameter> :</term>
212
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem></varlistentry>
213
</variablelist></refsect2>