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

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

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

<synopsis>



<link linkend="void">void</link>        <link linkend="libnd-debug-enter">libnd_debug_enter</link>               (const <link linkend="char">char</link> *function);
<link linkend="void">void</link>        <link linkend="libnd-debug-return">libnd_debug_return</link>              (const <link linkend="char">char</link> *function);
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-debuggable">libnd_debuggable</link>                (void);
#define     <link linkend="D:CAPS">D</link>                               (x)
#define     <link linkend="D-ASSERT:CAPS">D_ASSERT</link>                        (exp, msg)
#define     <link linkend="D-ASSERT-PTR:CAPS">D_ASSERT_PTR</link>                    (ptr)
#define     <link linkend="D-ENTER:CAPS">D_ENTER</link>
#define     <link linkend="D-RETURN:CAPS">D_RETURN</link>
#define     <link linkend="D-RETURN-:CAPS">D_RETURN_</link>                       (x)
</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="libnd-debug-enter" role="function">libnd_debug_enter ()</title>
<indexterm><primary>libnd_debug_enter</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_debug_enter               (const <link linkend="char">char</link> *function);</programlisting>
<para>

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


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-debug-return" role="function">libnd_debug_return ()</title>
<indexterm><primary>libnd_debug_return</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_debug_return              (const <link linkend="char">char</link> *function);</programlisting>
<para>

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


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-debuggable" role="function">libnd_debuggable ()</title>
<indexterm><primary>libnd_debuggable</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_debuggable                (void);</programlisting>
<para>

</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>


</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="D:CAPS" role="macro">D()</title>
<indexterm><primary>D</primary></indexterm><programlisting>#define     D(x)</programlisting>
<para>
Use this macro to output debugging information. <parameter>x</parameter> is
the content as you would pass it to <link linkend="printf"><function>printf()</function></link>, including
braces to make the arguments appear as one argument to
the macro. The macro is automatically deleted if -DDEBUG
is not passed at build time.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
<listitem><simpara> debugging information.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="D-ASSERT:CAPS" role="macro">D_ASSERT()</title>
<indexterm><primary>D_ASSERT</primary></indexterm><programlisting>#define     D_ASSERT(exp, msg)</programlisting>
<para>
The macro outputs <parameter>msg</parameter> if the expression <parameter>exp</parameter> evaluates
to <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>exp</parameter>&nbsp;:</term>
<listitem><simpara> expression to evaluate.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>msg</parameter>&nbsp;:</term>
<listitem><simpara> message to output if <parameter>exp</parameter> fails.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="D-ASSERT-PTR:CAPS" role="macro">D_ASSERT_PTR()</title>
<indexterm><primary>D_ASSERT_PTR</primary></indexterm><programlisting>#define     D_ASSERT_PTR(ptr)</programlisting>
<para>
The macro asserts the existence (i.e. non-NULL-ness) of
the given pointer, and outpus a message if it is <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>ptr</parameter>&nbsp;:</term>
<listitem><simpara> pointer to check.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="D-ENTER:CAPS" role="macro">D_ENTER</title>
<indexterm><primary>D_ENTER</primary></indexterm><programlisting>#define     D_ENTER</programlisting>
<para>
The macro updates internal debugging state when entering
the function where this macro is used. Use it at the beginning
of a function, but don't forget to properly match up <link linkend="D-ENTER:CAPS"><literal>D_ENTER</literal></link>
with <link linkend="D-RETURN:CAPS"><literal>D_RETURN</literal></link>! The macro outpus the name of the entered function
indented by the current nesting level.</para>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="D-RETURN:CAPS" role="macro">D_RETURN</title>
<indexterm><primary>D_RETURN</primary></indexterm><programlisting>#define     D_RETURN</programlisting>
<para>
The macro updates internal debugging state when leaving
the function where this macro is used. Use this macro
wherever the function can be left, and don't forget D_ENTER.</para>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="D-RETURN-:CAPS" role="macro">D_RETURN_()</title>
<indexterm><primary>D_RETURN_</primary></indexterm><programlisting>#define     D_RETURN_(x)</programlisting>
<para>
Same as <link linkend="D-RETURN:CAPS"><literal>D_RETURN</literal></link>, but for return with an argument.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>x</parameter>&nbsp;:</term>
<listitem><simpara>
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
