<refentry id="libnetdude-libnd-tp">
<refmeta>
<refentrytitle id="top_of_page">libnd_tp</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LIBNETDUDE Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>libnd_tp</refname>
<refpurpose></refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="synopsis">
<title id="synopsis.title">Synopsis</title>

<synopsis>



enum        <link linkend="LND-TracePartObserverOp">LND_TracePartObserverOp</link>;
<link linkend="LND-TracePart">LND_TracePart</link>* <link linkend="libnd-tp-new">libnd_tp_new</link>                 (<link linkend="LND-TPM:CAPS">LND_TPM</link> *tpm,
                                             <link linkend="LND-TracePart">LND_TracePart</link> *parent,
                                             <link linkend="off-t">off_t</link> start_offset);
<link linkend="void">void</link>        <link linkend="libnd-tp-free">libnd_tp_free</link>                   (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-tp-set-input-file">libnd_tp_set_input_file</link>         (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="char">char</link> *filename);
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-tp-set-output-file">libnd_tp_set_output_file</link>        (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="char">char</link> *filename);
<link linkend="LND-TracePart">LND_TracePart</link>* <link linkend="libnd-tp-find-part-after-offset">libnd_tp_find_part_after_offset</link>
                                            (const <link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="off-t">off_t</link> offset,
                                             const <link linkend="LND-TracePart">LND_TracePart</link> *tp_dontuse);
<link linkend="void">void</link>        <link linkend="libnd-tp-write-packet">libnd_tp_write_packet</link>           (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="LND-Packet">LND_Packet</link> *packet);
<link linkend="void">void</link>        <link linkend="libnd-tp-set-dirty">libnd_tp_set_dirty</link>              (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="gboolean">gboolean</link> dirty);
<link linkend="void">void</link>        <link linkend="libnd-tp-init-packets">libnd_tp_init_packets</link>           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-insert-packets">libnd_tp_insert_packets</link>         (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="LND-Packet">LND_Packet</link> *packet,
                                             <link linkend="int">int</link> index);
<link linkend="LND-Packet">LND_Packet</link>* <link linkend="libnd-tp-remove-packet">libnd_tp_remove_packet</link>          (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);
<link linkend="void">void</link>        <link linkend="libnd-tp-sync">libnd_tp_sync</link>                   (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="LND-Packet">LND_Packet</link>* <link linkend="libnd-tp-clear-packetlists">libnd_tp_clear_packetlists</link>      (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-move-packet">libnd_tp_move_packet</link>            (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> from_index,
                                             <link linkend="int">int</link> to_index);
<link linkend="LND-Packet">LND_Packet</link>* <link linkend="libnd-tp-packet-get-nth">libnd_tp_packet_get_nth</link>         (const <link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> n);
<link linkend="void">void</link>        <link linkend="libnd-tp-clear-selection">libnd_tp_clear_selection</link>        (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-full-selection">libnd_tp_full_selection</link>         (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="LND-Packet">LND_Packet</link>* <link linkend="libnd-tp-select-packet">libnd_tp_select_packet</link>          (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);
<link linkend="LND-Packet">LND_Packet</link>* <link linkend="libnd-tp-unselect-packet">libnd_tp_unselect_packet</link>        (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);
<link linkend="guint">guint</link>       <link linkend="libnd-tp-get-sel-size">libnd_tp_get_sel_size</link>           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-sel-delete">libnd_tp_sel_delete</link>             (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-sel-filter">libnd_tp_sel_filter</link>             (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="void">void</link>        <link linkend="libnd-tp-sel-unfilter">libnd_tp_sel_unfilter</link>           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);
<link linkend="LND-TracePartObserver">LND_TracePartObserver</link>* <link linkend="libnd-tp-observer-new">libnd_tp_observer_new</link>
                                            (void);
<link linkend="void">void</link>        <link linkend="libnd-tp-observer-free">libnd_tp_observer_free</link>          (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);
<link linkend="void">void</link>        <link linkend="libnd-tp-add-observer">libnd_tp_add_observer</link>           (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);
<link linkend="void">void</link>        <link linkend="libnd-tp-del-observer">libnd_tp_del_observer</link>           (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);
<link linkend="void">void</link>        <link linkend="libnd-tp-tell-observers">libnd_tp_tell_observers</link>         (<link linkend="LND-TracePart">LND_TracePart</link> *trace,
                                             <link linkend="LND-TracePartObserverOp">LND_TracePartObserverOp</link> op,
                                             <link linkend="void">void</link> *data);
</synopsis>
</refsynopsisdiv>









<refsect1 id="desc">
<title id="desc.title">Description</title>
<para>

</para>
</refsect1>

<refsect1 id="details">
<title id="details.title">Details</title>
<refsect2>
<title><anchor id="LND-TracePartObserverOp" role="enum">enum LND_TracePartObserverOp</title>
<indexterm><primary>LND_TracePartObserverOp</primary></indexterm><programlisting>typedef enum {  
  LND_TP_PACKET_SEL        = (1 &lt;&lt; 0), /* Packet at certain index got selected */
  LND_TP_PACKET_UNSEL      = (1 &lt;&lt; 1), /* Packet at certain index got deselected */
  LND_TP_SEL_CLR           = (1 &lt;&lt; 2), /* All packets got deselected */
  LND_TP_SEL_ALL           = (1 &lt;&lt; 3), /* All in-mem packets of trace part got selected */
  LND_TP_SEL_DEL           = (1 &lt;&lt; 4), /* Selected in-mem packets got deleted */
  LND_TP_DIRTY_STATE       = (1 &lt;&lt; 5), /* Trace part's dirty state got changed */
} LND_TracePartObserverOp;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="libnd-tp-new" role="function">libnd_tp_new ()</title>
<indexterm><primary>libnd_tp_new</primary></indexterm><programlisting><link linkend="LND-TracePart">LND_TracePart</link>* libnd_tp_new                 (<link linkend="LND-TPM:CAPS">LND_TPM</link> *tpm,
                                             <link linkend="LND-TracePart">LND_TracePart</link> *parent,
                                             <link linkend="off-t">off_t</link> start_offset);</programlisting>
<para>
The function creates and returns a new trace part, sitting on
top of <parameter>parent</parameter>, starting at <parameter>start_offset</parameter>. For the base part,
the parent is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tpm</parameter>&nbsp;:</term>
<listitem><simpara> TPM for this part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>parent</parameter>&nbsp;:</term>
<listitem><simpara> trace part that this new part starts upon.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>start_offset</parameter>&nbsp;:</term>
<listitem><simpara> offset into <parameter>parent</parameter> where new part starts.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> new trace part, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> on error.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-free" role="function">libnd_tp_free ()</title>
<indexterm><primary>libnd_tp_free</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_free                   (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function releases the memory occupied by the trace part
pointed to by <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to free.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-set-input-file" role="function">libnd_tp_set_input_file ()</title>
<indexterm><primary>libnd_tp_set_input_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_tp_set_input_file         (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="char">char</link> *filename);</programlisting>
<para>
This function specifies the input trace file for <parameter>tp</parameter>.
For a TPM's base trace, this is the original input trace.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to set input for.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
<listitem><simpara> filename of the input trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> when successful, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-set-output-file" role="function">libnd_tp_set_output_file ()</title>
<indexterm><primary>libnd_tp_set_output_file</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_tp_set_output_file        (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="char">char</link> *filename);</programlisting>
<para>
The function sets the output trace file name for <parameter>tp</parameter> to
<parameter>filename</parameter>. This means that when <parameter>tp</parameter>'s packets are written
out to disk, <parameter>filename</parameter> will be used.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to set output for.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
<listitem><simpara> name of output trace file.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-find-part-after-offset" role="function">libnd_tp_find_part_after_offset ()</title>
<indexterm><primary>libnd_tp_find_part_after_offset</primary></indexterm><programlisting><link linkend="LND-TracePart">LND_TracePart</link>* libnd_tp_find_part_after_offset
                                            (const <link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="off-t">off_t</link> offset,
                                             const <link linkend="LND-TracePart">LND_TracePart</link> *tp_dontuse);</programlisting>
<para>
In a scenario of multiple trace parts piled onto each other, the function
finds the first trace part that sits upon the given one, starting at or
after the offset given. If you want to make sure that a certain trace part
is not selected (like the most recent one used), pass it as <parameter>tp_last</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to query.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
<listitem><simpara> offset after which to look.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>tp_dontuse</parameter>&nbsp;:</term>
<listitem><simpara> last trace part, must not be used. Can be <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> found trace part, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if no such part exists.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-write-packet" role="function">libnd_tp_write_packet ()</title>
<indexterm><primary>libnd_tp_write_packet</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_write_packet           (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             const <link linkend="LND-Packet">LND_Packet</link> *packet);</programlisting>
<para>
The function dumps the single given <parameter>packet</parameter> to the output trace file
currently associated with <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part whose output trace to use.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>packet</parameter>&nbsp;:</term>
<listitem><simpara> packet to dump.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-set-dirty" role="function">libnd_tp_set_dirty ()</title>
<indexterm><primary>libnd_tp_set_dirty</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_set_dirty              (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="gboolean">gboolean</link> dirty);</programlisting>
<para>
The function sets the modification status of <parameter>tp</parameter> to <parameter>dirty</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to mark.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>dirty</parameter>&nbsp;:</term>
<listitem><simpara> modification status to set to.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-init-packets" role="function">libnd_tp_init_packets ()</title>
<indexterm><primary>libnd_tp_init_packets</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_init_packets           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function initializes all packets belonging to <parameter>tp</parameter> and
loaded into memory (using <link linkend="libnd-tpm-load-packets"><function>libnd_tpm_load_packets()</function></link>).</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> part whose loaded packets to initialize.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-insert-packets" role="function">libnd_tp_insert_packets ()</title>
<indexterm><primary>libnd_tp_insert_packets</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_insert_packets         (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="LND-Packet">LND_Packet</link> *packet,
                                             <link linkend="int">int</link> index);</programlisting>
<para>
The function adds the chain of packets starting at <parameter>packet</parameter> to
<parameter>tp</parameter> at <parameter>index</parameter>. The chain of packets is followed until a packet's
next pointer is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, so make sure that last next pointer is
correct. If <parameter>index</parameter> is &lt; 0 or larger than the number of
packets currently in the trace part, the packet is added at the
end. Counting starts at zero, and the index is the index the packet
will have when it is inserted. No limit checking is
done; a trace part can grow arbitrarily large this way.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> part to add packet to.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>packet</parameter>&nbsp;:</term>
<listitem><simpara> first of a chain of packets to add.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&nbsp;:</term>
<listitem><simpara> where to insert <parameter>packet</parameter>.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-remove-packet" role="function">libnd_tp_remove_packet ()</title>
<indexterm><primary>libnd_tp_remove_packet</primary></indexterm><programlisting><link linkend="LND-Packet">LND_Packet</link>* libnd_tp_remove_packet          (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);</programlisting>
<para>
The function removes the packet at <parameter>index</parameter> in <parameter>tp</parameter> from <parameter>tp</parameter>
and returns the packet.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&nbsp;:</term>
<listitem><simpara> index of the packet in the trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> removed packet, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> on error.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-sync" role="function">libnd_tp_sync ()</title>
<indexterm><primary>libnd_tp_sync</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_sync                   (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function writes all packets the trace part has currently
loaded into memory out to disk, using the currently existing
output trace. After that, the input trace file is adjusted
so that when packets are read from <parameter>tp</parameter>, the trace part that
this function wrote packets into is used.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to sync.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-clear-packetlists" role="function">libnd_tp_clear_packetlists ()</title>
<indexterm><primary>libnd_tp_clear_packetlists</primary></indexterm><programlisting><link linkend="LND-Packet">LND_Packet</link>* libnd_tp_clear_packetlists      (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function resets the internal loaded packet and selected
packet lists.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to reset.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> first of the currently loaded packets (no longer
associated with <parameter>tp</parameter>!).
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-move-packet" role="function">libnd_tp_move_packet ()</title>
<indexterm><primary>libnd_tp_move_packet</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_move_packet            (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> from_index,
                                             <link linkend="int">int</link> to_index);</programlisting>
<para>
This function moves a single packet around in the trace part.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>from_index</parameter>&nbsp;:</term>
<listitem><simpara> index of packet to move.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>to_index</parameter>&nbsp;:</term>
<listitem><simpara> index to move packet to.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-packet-get-nth" role="function">libnd_tp_packet_get_nth ()</title>
<indexterm><primary>libnd_tp_packet_get_nth</primary></indexterm><programlisting><link linkend="LND-Packet">LND_Packet</link>* libnd_tp_packet_get_nth         (const <link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> n);</programlisting>
<para>
This function returns the nth packet of the trace part,
if possible, <link linkend="NULL:CAPS"><literal>NULL</literal></link> otherwise.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>n</parameter>&nbsp;:</term>
<listitem><simpara> index of packet to return.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> packet.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-clear-selection" role="function">libnd_tp_clear_selection ()</title>
<indexterm><primary>libnd_tp_clear_selection</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_clear_selection        (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function clears the selection of any in-memory packets of
the trace part pointed to by <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to clear selection of.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-full-selection" role="function">libnd_tp_full_selection ()</title>
<indexterm><primary>libnd_tp_full_selection</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_full_selection         (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function selectes all in-memory packets of the trace part
pointed to by <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part to select packets of.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-select-packet" role="function">libnd_tp_select_packet ()</title>
<indexterm><primary>libnd_tp_select_packet</primary></indexterm><programlisting><link linkend="LND-Packet">LND_Packet</link>* libnd_tp_select_packet          (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);</programlisting>
<para>
The function selects the indicated packet and marks it as the
currently selected one.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&nbsp;:</term>
<listitem><simpara> index of packet to select.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> selected packet.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-unselect-packet" role="function">libnd_tp_unselect_packet ()</title>
<indexterm><primary>libnd_tp_unselect_packet</primary></indexterm><programlisting><link linkend="LND-Packet">LND_Packet</link>* libnd_tp_unselect_packet        (<link linkend="LND-TracePart">LND_TracePart</link> *tp,
                                             <link linkend="int">int</link> index);</programlisting>
<para>
The function unselects the indicated packet in the trace part.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>index</parameter>&nbsp;:</term>
<listitem><simpara> index of packet to unselect.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> unselected packet.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-get-sel-size" role="function">libnd_tp_get_sel_size ()</title>
<indexterm><primary>libnd_tp_get_sel_size</primary></indexterm><programlisting><link linkend="guint">guint</link>       libnd_tp_get_sel_size           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function returns the number of packets currently
selected in <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> number of packets.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-sel-delete" role="function">libnd_tp_sel_delete ()</title>
<indexterm><primary>libnd_tp_sel_delete</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_sel_delete             (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function deletes the selected packets from <parameter>tp</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-sel-filter" role="function">libnd_tp_sel_filter ()</title>
<indexterm><primary>libnd_tp_sel_filter</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_sel_filter             (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The currently selected packets are filtered.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-sel-unfilter" role="function">libnd_tp_sel_unfilter ()</title>
<indexterm><primary>libnd_tp_sel_unfilter</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_sel_unfilter           (<link linkend="LND-TracePart">LND_TracePart</link> *tp);</programlisting>
<para>
The function unfilters packets in the current selection.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>tp</parameter>&nbsp;:</term>
<listitem><simpara> trace part.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-observer-new" role="function">libnd_tp_observer_new ()</title>
<indexterm><primary>libnd_tp_observer_new</primary></indexterm><programlisting><link linkend="LND-TracePartObserver">LND_TracePartObserver</link>* libnd_tp_observer_new
                                            (void);</programlisting>
<para>
The function allocates a new, empty trace observer. You should
then fill in callbacks for the events you're interested in,
and register the thing using <link linkend="libnd-tp-add-observer"><function>libnd_tp_add_observer()</function></link>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> new observer.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-observer-free" role="function">libnd_tp_observer_free ()</title>
<indexterm><primary>libnd_tp_observer_free</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_observer_free          (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);</programlisting>
<para>
The function releases all memory associated with <parameter>ob</parameter>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>ob</parameter>&nbsp;:</term>
<listitem><simpara> observer to delete.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-add-observer" role="function">libnd_tp_add_observer ()</title>
<indexterm><primary>libnd_tp_add_observer</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_add_observer           (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);</programlisting>
<para>
The function registers the new observer for notifications about
future changes to traces.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>ob</parameter>&nbsp;:</term>
<listitem><simpara> new observer to register.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-del-observer" role="function">libnd_tp_del_observer ()</title>
<indexterm><primary>libnd_tp_del_observer</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_del_observer           (<link linkend="LND-TracePartObserver">LND_TracePartObserver</link> *ob);</programlisting>
<para>
The function stops trace operations from being reported to
<parameter>ob</parameter>. It does not release <parameter>ob</parameter>'s memory, use <link linkend="libnd-tp-observer-free"><function>libnd_tp_observer_free()</function></link>
for that.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>ob</parameter>&nbsp;:</term>
<listitem><simpara> observer to drop.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tp-tell-observers" role="function">libnd_tp_tell_observers ()</title>
<indexterm><primary>libnd_tp_tell_observers</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tp_tell_observers         (<link linkend="LND-TracePart">LND_TracePart</link> *trace,
                                             <link linkend="LND-TracePartObserverOp">LND_TracePartObserverOp</link> op,
                                             <link linkend="void">void</link> *data);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>trace</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>op</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
<listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
