DataDescriptor API
+<!-- ##### SECTION ./tmpl/Dynamic_arrays.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/Dynamic_arrays.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/Dynamic_arrays.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/Dynamic_arrays.sgml:Title ##### -->
+Dynamic arrays
+
+
<!-- ##### SECTION ./tmpl/ErrLog.sgml:Long_Description ##### -->
<para>
Overview
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml.sgml:Title ##### -->
+./gras-sections.txt.sgml
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gras-sections.txt.sgml:Title ##### -->
+./gras-sections.txt
+
+
<!-- ##### SECTION ./tmpl/gras.sgml:Long_Description ##### -->
<para>
nws_comm
-<!-- ##### SECTION ./tmpl/trp_socks.sgml:Long_Description ##### -->
+<!-- ##### SECTION ./tmpl/tbx_cfg.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/trp_socks.sgml:See_Also ##### -->
+<!-- ##### SECTION ./tmpl/tbx_cfg.sgml:See_Also ##### -->
<para>
</para>
-<!-- ##### SECTION ./tmpl/trp_socks.sgml:Short_Description ##### -->
-
+<!-- ##### SECTION ./tmpl/tbx_cfg.sgml:Short_Description ##### -->
+Configuration facilities.
-<!-- ##### SECTION ./tmpl/trp_socks.sgml:Title ##### -->
-Sockets
+<!-- ##### SECTION ./tmpl/tbx_cfg.sgml:Title ##### -->
+Config
-<!-- ##### MACRO BEGIN_DECL ##### -->
+<!-- ##### SECTION ./tmpl/tbx_dico.sgml:Long_Description ##### -->
<para>
</para>
-<!-- ##### MACRO CCRITICAL0 ##### -->
+<!-- ##### SECTION ./tmpl/tbx_dico.sgml:See_Also ##### -->
<para>
</para>
-@c:
-@f:
-<!-- ##### MACRO CCRITICAL1 ##### -->
-<para>
+<!-- ##### SECTION ./tmpl/tbx_dico.sgml:Short_Description ##### -->
+Data container associating data to a string key.
+
+
+<!-- ##### SECTION ./tmpl/tbx_dico.sgml:Title ##### -->
+Dictionnary
+
+<!-- ##### SECTION ./tmpl/tbx_dynar.sgml:Long_Description ##### -->
+<para>
+This module provide the quite usual dynamic array facility.
</para>
-@c:
-@f:
-@a1:
-<!-- ##### MACRO CCRITICAL2 ##### -->
+<!-- ##### SECTION ./tmpl/tbx_dynar.sgml:See_Also ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-<!-- ##### MACRO CCRITICAL3 ##### -->
+<!-- ##### SECTION ./tmpl/tbx_dynar.sgml:Short_Description ##### -->
+Use arrays, forget about malloc
+
+
+<!-- ##### SECTION ./tmpl/tbx_dynar.sgml:Title ##### -->
+Dynamic array
+
+
+<!-- ##### SECTION ./tmpl/tbx_err.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/tbx_err.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/tbx_err.sgml:Short_Description ##### -->
+Error reporting
+
+
+<!-- ##### SECTION ./tmpl/tbx_err.sgml:Title ##### -->
+Errors handling
+
+
+<!-- ##### SECTION ./tmpl/tbx_log.sgml:Long_Description ##### -->
+<para>
+ This is an adaptation of the log4c project, which is dead upstream, and which
+ I was given the permission to fork under the LGPL licence by the authors. log4c
+ itself was loosely based on the Apache project's Log4J, Log4CC,
+ etc. project. Because C is not object oriented, a lot had to change.
+</para>
+
+<refsect2>
+ <title>Overview</title>
+
+ <para>
+ There is 3 main concepts: category, priority and appender. These three
+ concepts work together to enable developers to log messages according to
+ message type and priority, and to control at runtime how these messages are
+ formatted and where they are reported.
+ </para>
+</refsect2>
+
+<refsect2>
+ <title>Category hierarchy</title>
+
+ <para>
+ The first and foremost advantage of any logging API over plain printf()
+ resides in its ability to disable certain log statements while allowing
+ others to print unhindered. This capability assumes that the logging space,
+ that is, the space of all possible logging statements, is categorized
+ according to some developer-chosen criteria.
+ </para>
+
+ <para>
+ This observation led to choosing category as the central concept of the
+ system. Every category is declared by providing a name and an optional
+ parent. If no parent is explicitly named, the root category, LOG_ROOT_CAT
+ is the category's parent.
+ </para>
+
+ <para>
+ A category is created by a macro call at the top level of a file. A
+ category can be created with any one of the following macros:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>@GRAS_LOG_NEW_CATEGORY(MyCat);</para>
+ <para>create a new root</para>
+ </listitem>
+
+ <listitem>
+ <para>@GRAS_LOG_NEW_SUBCATEGORY(MyCat, ParentCat);</para>
+ <para>Create a new category being child of the category ParentCat</para>
+ </listitem>
+
+ <listitem>
+ <para>@GRAS_LOG_NEW_DEFAULT_CATEGORY(MyCat);</para>
+ <para>Like GRAS_LOG_NEW_CATEGORY, but the new category is the default one
+ in this file</para>
+ </listitem>
+
+ <listitem>
+ <para>@GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(MyCat, ParentCat);</para>
+ <para>Like GRAS_LOG_NEW_SUBCATEGORY, but the new category is the default one
+ in this file</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ The parent cat can be defined in the same file or in another file, but each
+ category may have only one definition.
+ </para>
+
+ <para>
+ Typically, there will be a Category for each module and sub-module, so you
+ can independently control logging for each module.
+ </para>
+</refsect2>
+
+<refsect2>
+ <title>Priority</title>
+
+ <para>
+ A category may be assigned a threshold priorty. The set of priorites are
+ defined by the @gras_log_priority_t enum. Their values are DEBUG, VERBOSE,
+ INFO, WARNING, ERROR and CRITICAL.
+ </para>
+
+ <para>
+ If a given category is not assigned a threshold priority, then it inherits
+ one from its closest ancestor with an assigned threshold.
+ </para>
+
+ <para>
+ To ensure that all categories can eventually inherit a threshold, the root
+ category always has an assigned threshold priority.
+ </para>
+
+ <para>
+ Logging requests are made by invoking a logging macro on a category. All
+ of the macros have a printf-style format string followed by arguments.
+ Because most C compilers do not support vararg macros, there is a version
+ of the macro for any number of arguments from 0 to 6. The macro name ends
+ with the total number of arguments.
+ </para>
+
+ <para>
+ Here is an example of the most basic type of macro:
+ </para>
+
+ <programlisting>CLOG5(MyCat, gras_log_priority_warning, "Values are: %d and '%s'", 5, "oops");</programlisting>
+
+ <para>This is a logging request with priority WARN.</para>
+
+ <para>
+ A logging request is said to be enabled if its priority is higher than or
+ equal to the threshold priority of its category. Otherwise, the request is
+ said to be disabled. A category without an assigned priority will inherit
+ one from the hierarchy.
+ </para>
+
+ <para>
+ It is possible to use any non-negative integer as a priority. If, as in the
+ example, one of the standard priorites is used, then there is a convenience
+ macro that is typically used instead. For example, the above example is
+ equivalent to the shorter:
+ </para>
+
+ <programlisting>CWARN4(MyCat, "Values are: %d and '%s'", 5, "oops");</programlisting>
+</refsect2>
+
+<refsect2>
+ <title>Default category</title>
+
+ <para>
+ If @GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(MyCat, Parent) or
+ @GRAS_LOG_NEW_DEFAULT_CATEGORY(MyCat) is used to create the category, then
+ the even shorter form can be used:
+ </para>
+
+ <programlisting>WARN3("Values are: %d and '%s'", 5, "oops");</programlisting>
+
+ <para>
+ Only one default category can be created per file, though multiple
+ non-defaults can be created and used.
+ </para>
+</refsect2>
+
+<refsect2>
+ <title>Example</title>
+
+ <para>Here is a more complete example:</para>
+
+ <programlisting>
+ #include "gras.h"
+
+ /* create a category and a default subcategory */
+ GRAS_LOG_NEW_CATEGORY(VSS);
+ GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(SA, VSS);
+
+ main() {
+ /* Now set the parent's priority.
+ (the string would typcially be a runtime option) */
+ gras_log_control_set("SA.thresh=3");
+
+ /* This request is enabled, because WARNING >= INFO. */
+ CWARN2(VSS, "Low fuel level.");
+
+ /* This request is disabled, because DEBUG < INFO. */
+ CDEBUG2(VSS, "Starting search for nearest gas station.");
+
+ /* The default category SA inherits its priority from VSS. Thus,
+ the following request is enabled because INFO >= INFO. */
+ INFO1("Located nearest gas station.");
+
+ /* This request is disabled, because DEBUG < INFO. */
+ DEBUG1("Exiting gas station search");
+ }</programlisting>
+</refsect2>
+
+<refsect2>
+ <title>Configuration</title>
+
+ <para>
+ Configuration is typically done during program initialization by invoking
+ the gras_log_control_set() method. The control string passed to it
+ typically comes from the command line. Look at the doucmentation for that
+ function for the format of the control string.
+ </para>
+</refsect2>
+
+<refsect2>
+ <title>Performance</title>
+
+ <para>
+ Clever design insures efficiency. Except for the first invocation, a
+ disabled logging request requires an a single comparison of a static
+ variable to a constant.
+ </para>
+
+ <para>
+ There is also compile time constant, @GRAS_LOG_STATIC_THRESHOLD, which
+ causes all logging requests with a lower priority to be optimized to 0 cost
+ by the compiler. By setting it to gras_log_priority_infinite, all logging
+ requests are statically disabled and cost nothing. Released executables
+ might typically be compiled with
+ "-DGRAS_LOG_STATIC_THRESHOLD=gras_log_priority_infinite".
+ </para>
+</refsect2>
+
+<refsect2>
+ <title>Appenders</title>
+
+ <para>
+ Each category has an optional appender. An appender is a pointer to a
+ structure whcih starts with a pointer to a doAppend() function. DoAppend()
+ prints a message to a log.
+ </para>
+
+ <para>
+ WHen a category is passed a message by one of the logging macros, the
+ category performs the following actions:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ if the category has an appender, the message is passed to the
+ appender's doAppend() function,
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ if 'willLogToParent' is true for the category, the message is passed
+ to the category's parent.
+ </para>
+
+ <para>
+ By default, all categories except root have no appender and
+ 'willLogToParent' is true. This situation causes all messages to be
+ logged by the root category's appender.
+ </para>
+
+ <para>
+ Typically, you would only change the root category's appender when you
+ wanted, say, a different output format. Copying defaultLogAppender.c
+ would be a good start.
+ </para>
+
+ <para>
+ The default appender function currently prints to stderr, but more
+ would be needed, like the one able to send the logs to a remote
+ dedicated server.
+ </para>
+ </listitem>
+ </itemizedlist>
+</refsect2>
+
+<refsect2>
+ <title>Misc and Caveats</title>
+
+ <para>
+ Do not use any of the macros that start with '_'.
+ </para>
+
+ <para>
+ The current set of macros force each file to use categories declared in
+ that file. This is intentional. Make the category a child of the file's
+ module category.
+ </para>
+
+ <para>
+ Log4J has a 'rolling file appender' which you can select with a run-time
+ option and specify the max file size. This would be a nice default for
+ non-kernel applications.
+ </para>
+
+ <para>
+ Careful, category names are global variables.
+ </para>
+</refsect2>
+
+
+<!-- ##### SECTION ./tmpl/tbx_log.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/tbx_log.sgml:Short_Description ##### -->
+An easy-to-use, fast and flexible message logging architecture.
+
+
+<!-- ##### SECTION ./tmpl/tbx_log.sgml:Title ##### -->
+Logging facilities
+
+
+<!-- ##### SECTION ./tmpl/tbx_set.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/tbx_set.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/tbx_set.sgml:Short_Description ##### -->
+Data storage for very quick retrieve
+
+
+<!-- ##### SECTION ./tmpl/tbx_set.sgml:Title ##### -->
+Data set
+
+
+<!-- ##### SECTION ./tmpl/trp_socks.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/trp_socks.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/trp_socks.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/trp_socks.sgml:Title ##### -->
+Sockets
+
+
+<!-- ##### SECTION ./tmpl/xbt_cfg.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_cfg.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_cfg.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_cfg.sgml:Title ##### -->
+xbt_cfg
+
+
+<!-- ##### SECTION ./tmpl/xbt_dico.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_dico.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_dico.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_dico.sgml:Title ##### -->
+xbt_dico
+
+
+<!-- ##### SECTION ./tmpl/xbt_err.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_err.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_err.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_err.sgml:Title ##### -->
+Errors
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml.sgml:Title ##### -->
+xbt_swag.sgml.sgml
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/xbt_swag.sgml.sgml:Title ##### -->
+xbt_swag.sgml
+
+
+<!-- ##### MACRO BEGIN_DECL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO CCRITICAL0 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+
+<!-- ##### MACRO CCRITICAL1 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+
+<!-- ##### MACRO CCRITICAL2 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CCRITICAL3 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CCRITICAL4 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CCRITICAL5 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CDEBUG0 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+
+<!-- ##### MACRO CDEBUG1 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+
+<!-- ##### MACRO CDEBUG2 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CDEBUG3 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CDEBUG4 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CDEBUG5 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CERROR0 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+
+<!-- ##### MACRO CERROR1 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+
+<!-- ##### MACRO CERROR2 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CERROR3 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CERROR4 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CERROR5 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CINFO0 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+
+<!-- ##### MACRO CINFO1 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+
+<!-- ##### MACRO CINFO2 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CINFO3 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CINFO4 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CINFO5 ##### -->
+<para>
+
+</para>
+
+@c:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CLOG0 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+
+<!-- ##### MACRO CLOG1 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+
+<!-- ##### MACRO CLOG2 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CLOG3 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CLOG4 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CLOG5 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CLOG6 ##### -->
+<para>
+
+</para>
+
+@c:
+@p:
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+@a6:
+
+<!-- ##### MACRO CRITICAL0 ##### -->
+<para>
+
+</para>
+
+@f:
+
+<!-- ##### MACRO CRITICAL1 ##### -->
+<para>
+
+</para>
+
+@f:
+@a1:
+
+<!-- ##### MACRO CRITICAL2 ##### -->
+<para>
+
+</para>
+
+@f:
+@a1:
+@a2:
+
+<!-- ##### MACRO CRITICAL3 ##### -->
+<para>
+
+</para>
+
+@f:
+@a1:
+@a2:
+@a3:
+
+<!-- ##### MACRO CRITICAL4 ##### -->
+<para>
+
+</para>
+
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+
+<!-- ##### MACRO CRITICAL5 ##### -->
+<para>
+
+</para>
+
+@f:
+@a1:
+@a2:
+@a3:
+@a4:
+@a5:
+
+<!-- ##### MACRO CWARNING6 ##### -->
<para>
</para>
@a1:
@a2:
@a3:
+@a4:
+@a5:
+@a6:
+
+<!-- ##### FUNCTION CallAddr ##### -->
+<para>
+
+</para>
+
+@addr:
+@Param2:
+@sock:
+@timeOut:
+@Returns:
+
+<!-- ##### FUNCTION CloseSocket ##### -->
+<para>
+
+</para>
+
+@sock:
+@waitForPeer:
+@Returns:
+
+<!-- ##### FUNCTION ConvertData ##### -->
+<para>
+
+</para>
+
+@destination:
+@source:
+@description:
+@length:
+@sourceFormat:
+
+<!-- ##### FUNCTION CreateLocalChild ##### -->
+<para>
+
+</para>
+
+@pid:
+@parentToChild:
+@childToParent:
+@Returns:
+
+<!-- ##### FUNCTION DROP_SOCKET ##### -->
+<para>
+
+</para>
+
+@sock:
+@Returns:
+
+<!-- ##### FUNCTION DataSize ##### -->
+<para>
+
+</para>
+
+@description:
+@length:
+@format:
+@Returns:
+
+<!-- ##### ENUM DataTypes ##### -->
+<para>
+
+</para>
+
+@CHAR_TYPE:
+@DOUBLE_TYPE:
+@FLOAT_TYPE:
+@INT_TYPE:
+@LONG_TYPE:
+@SHORT_TYPE:
+@UNSIGNED_INT_TYPE:
+@UNSIGNED_LONG_TYPE:
+@UNSIGNED_SHORT_TYPE:
+@STRUCT_TYPE:
+@LAST_TYPE:
+
+<!-- ##### FUNCTION DifferentFormat ##### -->
+<para>
+
+</para>
+
+@whatType:
+@Returns:
+
+<!-- ##### FUNCTION DifferentOrder ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION DifferentSize ##### -->
+<para>
+
+</para>
+
+@whatType:
+@Returns:
+
+<!-- ##### MACRO END_DECL ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO EODD ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION EstablishAnEar ##### -->
+<para>
+
+</para>
+
+@Param1:
+@Param2:
+@ear:
+@earPort:
+@Returns:
+
+<!-- ##### ENUM FormatTypes ##### -->
+<para>
+
+</para>
+
+@HOST_FORMAT:
+@NETWORK_FORMAT:
+
+<!-- ##### MACRO GRAS_LOG_DEFAULT_CATEGORY ##### -->
+<para>
+
+</para>
+
+@cname:
+
+<!-- ##### MACRO GRAS_LOG_EXTERNAL_CATEGORY ##### -->
+<para>
+
+</para>
+
+@cname:
+
+<!-- ##### MACRO GRAS_LOG_ISENABLED ##### -->
+<para>
+
+</para>
+
+@catName:
+@priority:
+
+<!-- ##### MACRO GRAS_LOG_MAYDAY ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GRAS_LOG_NEW_CATEGORY ##### -->
+<para>
+
+</para>
+
+@catName:
+@desc:
+
+<!-- ##### MACRO GRAS_LOG_NEW_DEFAULT_CATEGORY ##### -->
+<para>
+
+</para>
+
+@cname:
+@desc:
+
+<!-- ##### MACRO GRAS_LOG_NEW_DEFAULT_SUBCATEGORY ##### -->
+<para>
+
+</para>
+
+@cname:
+@parent:
+@desc:
+
+<!-- ##### MACRO GRAS_LOG_NEW_SUBCATEGORY ##### -->
+<para>
+
+</para>
+
+@catName:
+@parent:
+@desc:
+
+<!-- ##### MACRO GRAS_LOG_ROOT_CAT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GRAS_LOG_STATIC_THRESHOLD ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_DLFCN_H ##### -->
+<para>
+
+</para>
-<!-- ##### MACRO CCRITICAL4 ##### -->
+
+<!-- ##### MACRO HAVE_INTTYPES_H ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-<!-- ##### MACRO CCRITICAL5 ##### -->
+<!-- ##### MACRO HAVE_LIBPTHREAD ##### -->
<para>
</para>
-@c:
+
+<!-- ##### MACRO HAVE_MEMORY_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_STDINT_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_STDLIB_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_STRINGS_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_STRING_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_SYS_STAT_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_SYS_TYPES_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO HAVE_UNISTD_H ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION HomogenousConvertData ##### -->
+<para>
+
+</para>
+
+@destination:
+@source:
+@whatType:
+@repetitions:
+@sourceFormat:
+
+<!-- ##### FUNCTION HomogenousDataSize ##### -->
+<para>
+
+</para>
+
+@whatType:
+@repetitions:
+@format:
+@Returns:
+
+<!-- ##### TYPEDEF IPAddress ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION IPAddressImage ##### -->
+<para>
+
+</para>
+
+@addr:
+@Returns:
+
+<!-- ##### FUNCTION IPAddressImage_r ##### -->
+<para>
+
+</para>
+
+@addr:
+@Returns:
+
+<!-- ##### FUNCTION IPAddressMachine ##### -->
+<para>
+
+</para>
+
+@addr:
+@Returns:
+
+<!-- ##### FUNCTION IPAddressMachine_r ##### -->
+<para>
+
+</para>
+
+@addr:
+@Returns:
+
+<!-- ##### MACRO IPAddressValue ##### -->
+<para>
+
+</para>
+
+@machineOrAddress:
+@address:
+
+<!-- ##### FUNCTION IPAddressValues ##### -->
+<para>
+
+</para>
+
+@machineOrAddress:
+@addressList:
+@atMost:
+@Returns:
+
+<!-- ##### FUNCTION IncomingRequest ##### -->
+<para>
+
+</para>
+
+@timeOut:
+@sd:
+@ldap:
+@Returns:
+
+<!-- ##### FUNCTION IsOkay ##### -->
+<para>
+
+</para>
+
+@sd:
+@Returns:
+
+<!-- ##### FUNCTION IsPipe ##### -->
+<para>
+
+</para>
+
+@sd:
+@Returns:
+
+<!-- ##### MACRO IsValidIP ##### -->
+<para>
+
+</para>
+
+@machineOrAddress:
+
+<!-- ##### MACRO LOG6 ##### -->
+<para>
+
+</para>
+
+@p:
@f:
@a1:
@a2:
@a3:
@a4:
@a5:
+@a6:
-<!-- ##### MACRO CDEBUG0 ##### -->
+<!-- ##### FUNCTION MyMachineName ##### -->
<para>
</para>
-@c:
-@f:
+@Returns:
-<!-- ##### MACRO CDEBUG1 ##### -->
+<!-- ##### MACRO NO_SOCKET ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-<!-- ##### MACRO CDEBUG2 ##### -->
+<!-- ##### FUNCTION NotifyOnDisconnection ##### -->
+<para>
+
+</para>
+
+@notifyFn:
+
+<!-- ##### FUNCTION OpenClientSocket ##### -->
+<para>
+
+</para>
+
+@addr:
+@Param2:
+@sock:
+@Returns:
+
+<!-- ##### FUNCTION OpenServerSocket ##### -->
+<para>
+
+</para>
+
+@Param1:
+@Param2:
+@ear:
+@earPort:
+@Returns:
+
+<!-- ##### MACRO PACKAGE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PACKAGE_BUGREPORT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PACKAGE_NAME ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PACKAGE_STRING ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PACKAGE_TARNAME ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PACKAGE_VERSION ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO PAD_BYTES ##### -->
+<para>
+
+</para>
+
+@structType:
+@lastMember:
+@memberType:
+@repetitions:
+
+<!-- ##### FUNCTION PassSocket ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
+@sock:
+@child:
+@Returns:
-<!-- ##### MACRO CDEBUG3 ##### -->
+<!-- ##### FUNCTION Peer ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
+@sd:
+@Returns:
-<!-- ##### MACRO CDEBUG4 ##### -->
+<!-- ##### FUNCTION PeerName ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
+@sd:
+@Returns:
-<!-- ##### MACRO CDEBUG5 ##### -->
+<!-- ##### FUNCTION PeerName_r ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
+@sd:
+@Returns:
-<!-- ##### MACRO CERROR0 ##### -->
+<!-- ##### FUNCTION ReverseData ##### -->
<para>
</para>
-@c:
-@f:
+@destination:
+@source:
+@whatType:
+@repetitions:
+@format:
-<!-- ##### MACRO CERROR1 ##### -->
+<!-- ##### MACRO SIMPLE_DATA ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
+@type:
+@repetitions:
-<!-- ##### MACRO CERROR2 ##### -->
+<!-- ##### MACRO SIMPLE_MEMBER ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
+@type:
+@repetitions:
+@offset:
-<!-- ##### MACRO CERROR3 ##### -->
+<!-- ##### MACRO SIMPLE_TYPE_COUNT ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-<!-- ##### MACRO CERROR4 ##### -->
+<!-- ##### MACRO STDC_HEADERS ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-<!-- ##### MACRO CERROR5 ##### -->
+<!-- ##### TYPEDEF Socket ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-<!-- ##### MACRO CINFO0 ##### -->
+<!-- ##### FUNCTION SocketFailure ##### -->
<para>
</para>
-@c:
-@f:
+@sig:
-<!-- ##### MACRO CINFO1 ##### -->
+<!-- ##### USER_FUNCTION SocketFunction ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
+@Param1:
-<!-- ##### MACRO CINFO2 ##### -->
+<!-- ##### FUNCTION SocketInUse ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
+@sd:
+@Returns:
-<!-- ##### MACRO CINFO3 ##### -->
+<!-- ##### FUNCTION SocketIsAvailable ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
+@sd:
+@Returns:
-<!-- ##### MACRO CINFO4 ##### -->
+<!-- ##### MACRO VERSION ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-<!-- ##### MACRO CINFO5 ##### -->
+<!-- ##### MACRO WARNING6 ##### -->
<para>
</para>
-@c:
@f:
@a1:
@a2:
@a3:
@a4:
@a5:
+@a6:
-<!-- ##### MACRO CLOG0 ##### -->
+<!-- ##### USER_FUNCTION grasCallbackFunction ##### -->
<para>
</para>
-@c:
-@p:
-@f:
+@sd:
+@msgType:
+@vdata:
-<!-- ##### MACRO CLOG1 ##### -->
+<!-- ##### FUNCTION grasCloseSocket ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
+@sock:
+@Returns:
-<!-- ##### MACRO CLOG2 ##### -->
+<!-- ##### FUNCTION grasDataDescCmp ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
-@a2:
+@dd1:
+@c1:
+@dd2:
+@c2:
+@Returns:
+@description:
-<!-- ##### MACRO CLOG3 ##### -->
+<!-- ##### FUNCTION grasDataDescCount ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
-@a2:
-@a3:
+@description:
+@Returns:
-<!-- ##### MACRO CLOG4 ##### -->
+<!-- ##### FUNCTION grasDataRecv ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
+@sd:
+@data:
+@description:
+@description_length:
+@repetition:
+@Returns:
-<!-- ##### MACRO CLOG5 ##### -->
+<!-- ##### FUNCTION grasDataSend ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
+@sd:
+@data:
+@description:
+@description_length:
+@repetition:
+@Returns:
-<!-- ##### MACRO CLOG6 ##### -->
+<!-- ##### FUNCTION grasDataSize ##### -->
<para>
</para>
-@c:
-@p:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-@a6:
+@description:
+@ft:
+@Returns:
-<!-- ##### MACRO CRITICAL0 ##### -->
+<!-- ##### ENUM grasError_t ##### -->
<para>
</para>
-@f:
+@no_error:
+@malloc_error:
+@mismatch_error:
+@sanity_error:
+@system_error:
+@network_error:
+@timeout_error:
+@thread_error:
+@unknown_error:
-<!-- ##### MACRO CRITICAL1 ##### -->
+<!-- ##### FUNCTION grasLock ##### -->
<para>
</para>
-@f:
-@a1:
+@Returns:
-<!-- ##### MACRO CRITICAL2 ##### -->
+<!-- ##### TYPEDEF grasMessageType_t ##### -->
<para>
</para>
-@f:
-@a1:
-@a2:
-<!-- ##### MACRO CRITICAL3 ##### -->
+<!-- ##### FUNCTION grasMsgDiscard ##### -->
<para>
</para>
-@f:
-@a1:
-@a2:
-@a3:
+@sd:
+@size:
-<!-- ##### MACRO CRITICAL4 ##### -->
+<!-- ##### FUNCTION grasMsgEntryGet ##### -->
<para>
</para>
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-
-<!-- ##### MACRO CRITICAL5 ##### -->
+@id:
+@Returns:
+
+<!-- ##### TYPEDEF grasMsgEntry_t ##### -->
<para>
</para>
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-<!-- ##### MACRO CWARNING6 ##### -->
+<!-- ##### FUNCTION grasMsgFree ##### -->
<para>
</para>
-@c:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-@a6:
+@msg:
-<!-- ##### FUNCTION CallAddr ##### -->
+<!-- ##### FUNCTION grasMsgHandle ##### -->
<para>
</para>
-@addr:
-@Param2:
-@sock:
@timeOut:
-@Returns:
-<!-- ##### FUNCTION CloseSocket ##### -->
+<!-- ##### FUNCTION grasMsgHeaderNew ##### -->
<para>
</para>
-@sock:
-@waitForPeer:
+@msgId:
+@dataSize:
+@seqCount:
@Returns:
-<!-- ##### FUNCTION ConvertData ##### -->
+<!-- ##### FUNCTION grasMsgNew ##### -->
<para>
</para>
-@destination:
-@source:
-@description:
-@length:
-@sourceFormat:
+@msgId:
+@free_data_on_free:
+@seqCount:
+@Varargs:
+@Returns:
-<!-- ##### FUNCTION CreateLocalChild ##### -->
+<!-- ##### FUNCTION grasMsgRecv ##### -->
<para>
</para>
-@pid:
-@parentToChild:
-@childToParent:
+@msg:
+@timeout:
@Returns:
+@sd:
-<!-- ##### FUNCTION DROP_SOCKET ##### -->
+<!-- ##### FUNCTION grasMsgRegister ##### -->
<para>
</para>
-@sock:
+@message:
+@name:
+@sequence_count:
+@Varargs:
@Returns:
-<!-- ##### FUNCTION DataSize ##### -->
+<!-- ##### FUNCTION grasMsgSend ##### -->
<para>
</para>
-@description:
-@length:
-@format:
+@sd:
+@message:
+@sequence_count:
+@Varargs:
@Returns:
-<!-- ##### ENUM DataTypes ##### -->
+<!-- ##### FUNCTION grasMsgWait ##### -->
<para>
</para>
-@CHAR_TYPE:
-@DOUBLE_TYPE:
-@FLOAT_TYPE:
-@INT_TYPE:
-@LONG_TYPE:
-@SHORT_TYPE:
-@UNSIGNED_INT_TYPE:
-@UNSIGNED_LONG_TYPE:
-@UNSIGNED_SHORT_TYPE:
-@STRUCT_TYPE:
-@LAST_TYPE:
+@sd:
+@timeout:
+@message:
+@sequence_count:
+@Varargs:
+@Returns:
-<!-- ##### FUNCTION DifferentFormat ##### -->
+<!-- ##### FUNCTION grasMyMachineName ##### -->
<para>
</para>
-@whatType:
@Returns:
-<!-- ##### FUNCTION DifferentOrder ##### -->
+<!-- ##### FUNCTION grasOpenClientSocket ##### -->
<para>
</para>
+@host:
+@Param2:
+@sock:
@Returns:
-<!-- ##### FUNCTION DifferentSize ##### -->
+<!-- ##### FUNCTION grasOpenServerSocket ##### -->
<para>
</para>
-@whatType:
+@Param1:
+@Param2:
+@sock:
@Returns:
-<!-- ##### MACRO END_DECL ##### -->
+<!-- ##### MACRO grasPROTOCOL ##### -->
<para>
</para>
-<!-- ##### MACRO EODD ##### -->
+<!-- ##### FUNCTION grasPeerGetAddress ##### -->
<para>
</para>
+@sd:
+@Returns:
-<!-- ##### FUNCTION EstablishAnEar ##### -->
+<!-- ##### FUNCTION grasPeerGetName ##### -->
<para>
</para>
-@Param1:
-@Param2:
-@ear:
-@earPort:
+@sd:
@Returns:
-<!-- ##### ENUM FormatTypes ##### -->
+<!-- ##### FUNCTION grasRecvData ##### -->
<para>
</para>
-@HOST_FORMAT:
-@NETWORK_FORMAT:
+@sd:
+@data:
+@description:
+@Returns:
-<!-- ##### MACRO GRAS_LOG_MAYDAY ##### -->
+<!-- ##### FUNCTION grasRegisterCallback ##### -->
<para>
</para>
+@message:
+@TTL:
+@cb:
-<!-- ##### MACRO GRAS_LOG_ROOT_CAT ##### -->
+<!-- ##### FUNCTION grasSendData ##### -->
<para>
</para>
+@sd:
+@data:
+@description:
+@Returns:
-<!-- ##### MACRO HAVE_DLFCN_H ##### -->
+<!-- ##### FUNCTION grasUnlock ##### -->
<para>
</para>
+@Returns:
-<!-- ##### MACRO HAVE_INTTYPES_H ##### -->
+<!-- ##### FUNCTION grasUserdataGet ##### -->
<para>
</para>
-<!-- ##### MACRO HAVE_LIBPTHREAD ##### -->
+<!-- ##### MACRO grasUserdataNew ##### -->
<para>
</para>
+@type:
-<!-- ##### MACRO HAVE_MEMORY_H ##### -->
+<!-- ##### FUNCTION grasUserdataSet ##### -->
<para>
</para>
+@ud:
-<!-- ##### MACRO HAVE_STDINT_H ##### -->
+<!-- ##### FUNCTION gras_cfg_check ##### -->
<para>
</para>
+@cfg:
+@Returns:
-<!-- ##### MACRO HAVE_STDLIB_H ##### -->
+<!-- ##### FUNCTION gras_cfg_cpy ##### -->
<para>
</para>
+@tocopy:
+@whereto:
+@Returns:
-<!-- ##### MACRO HAVE_STRINGS_H ##### -->
+<!-- ##### FUNCTION gras_cfg_dump ##### -->
<para>
</para>
+@name:
+@indent:
+@cfg:
-<!-- ##### MACRO HAVE_STRING_H ##### -->
+<!-- ##### FUNCTION gras_cfg_empty ##### -->
<para>
</para>
+@cfg:
+@name:
+@Returns:
-<!-- ##### MACRO HAVE_SYS_STAT_H ##### -->
+<!-- ##### FUNCTION gras_cfg_free ##### -->
<para>
</para>
+@cfg:
-<!-- ##### MACRO HAVE_SYS_TYPES_H ##### -->
+<!-- ##### FUNCTION gras_cfg_get_double ##### -->
<para>
</para>
+@cfg:
+@name:
+@val:
+@Returns:
-<!-- ##### MACRO HAVE_UNISTD_H ##### -->
+<!-- ##### FUNCTION gras_cfg_get_dynar ##### -->
<para>
</para>
+@cfg:
+@name:
+@dynar:
+@Returns:
-<!-- ##### FUNCTION HomogenousConvertData ##### -->
+<!-- ##### FUNCTION gras_cfg_get_host ##### -->
<para>
</para>
-@destination:
-@source:
-@whatType:
-@repetitions:
-@sourceFormat:
+@cfg:
+@name:
+@host:
+@port:
+@Returns:
-<!-- ##### FUNCTION HomogenousDataSize ##### -->
+<!-- ##### FUNCTION gras_cfg_get_int ##### -->
<para>
</para>
-@whatType:
-@repetitions:
-@format:
+@cfg:
+@name:
+@val:
@Returns:
-<!-- ##### TYPEDEF IPAddress ##### -->
+<!-- ##### FUNCTION gras_cfg_get_string ##### -->
<para>
</para>
+@cfg:
+@name:
+@val:
+@Returns:
-<!-- ##### FUNCTION IPAddressImage ##### -->
+<!-- ##### FUNCTION gras_cfg_new ##### -->
<para>
</para>
-@addr:
@Returns:
+@whereto:
-<!-- ##### FUNCTION IPAddressImage_r ##### -->
+<!-- ##### FUNCTION gras_cfg_register ##### -->
<para>
</para>
-@addr:
+@cfg:
+@name:
+@type:
+@min:
+@max:
@Returns:
-<!-- ##### FUNCTION IPAddressMachine ##### -->
+<!-- ##### FUNCTION gras_cfg_register_str ##### -->
<para>
</para>
-@addr:
+@cfg:
+@entry:
@Returns:
-<!-- ##### FUNCTION IPAddressMachine_r ##### -->
+<!-- ##### FUNCTION gras_cfg_rm_double ##### -->
<para>
</para>
-@addr:
+@cfg:
+@name:
+@val:
@Returns:
-<!-- ##### MACRO IPAddressValue ##### -->
+<!-- ##### FUNCTION gras_cfg_rm_host ##### -->
<para>
</para>
-@machineOrAddress:
-@address:
+@cfg:
+@name:
+@host:
+@port:
+@Returns:
-<!-- ##### FUNCTION IPAddressValues ##### -->
+<!-- ##### FUNCTION gras_cfg_rm_int ##### -->
<para>
</para>
-@machineOrAddress:
-@addressList:
-@atMost:
+@cfg:
+@name:
+@val:
@Returns:
-<!-- ##### FUNCTION IncomingRequest ##### -->
+<!-- ##### FUNCTION gras_cfg_rm_string ##### -->
<para>
</para>
-@timeOut:
-@sd:
-@ldap:
+@cfg:
+@name:
+@val:
@Returns:
-<!-- ##### FUNCTION IsOkay ##### -->
+<!-- ##### FUNCTION gras_cfg_set ##### -->
<para>
</para>
-@sd:
+@cfg:
+@Varargs:
@Returns:
-<!-- ##### FUNCTION IsPipe ##### -->
+<!-- ##### FUNCTION gras_cfg_set_double ##### -->
<para>
</para>
-@sd:
+@cfg:
+@name:
+@val:
@Returns:
-<!-- ##### MACRO IsValidIP ##### -->
+<!-- ##### FUNCTION gras_cfg_set_host ##### -->
<para>
</para>
-@machineOrAddress:
+@cfg:
+@name:
+@host:
+@port:
+@Returns:
-<!-- ##### MACRO LOG6 ##### -->
+<!-- ##### FUNCTION gras_cfg_set_int ##### -->
<para>
</para>
-@p:
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-@a6:
+@cfg:
+@name:
+@val:
+@Returns:
-<!-- ##### FUNCTION MyMachineName ##### -->
+<!-- ##### FUNCTION gras_cfg_set_parse ##### -->
<para>
</para>
+@cfg:
+@options:
@Returns:
-<!-- ##### MACRO NO_SOCKET ##### -->
+<!-- ##### FUNCTION gras_cfg_set_string ##### -->
<para>
</para>
+@cfg:
+@name:
+@val:
+@Returns:
-<!-- ##### FUNCTION NotifyOnDisconnection ##### -->
+<!-- ##### FUNCTION gras_cfg_set_vargs ##### -->
<para>
</para>
-@notifyFn:
+@cfg:
+@pa:
+@Returns:
-<!-- ##### FUNCTION OpenClientSocket ##### -->
+<!-- ##### FUNCTION gras_datadesc_cb_set_post ##### -->
<para>
</para>
-@addr:
-@Param2:
-@sock:
-@Returns:
+@type:
+@post:
-<!-- ##### FUNCTION OpenServerSocket ##### -->
+<!-- ##### FUNCTION gras_datadesc_cb_set_pre ##### -->
<para>
</para>
-@Param1:
-@Param2:
-@ear:
-@earPort:
-@Returns:
+@type:
+@pre:
-<!-- ##### MACRO PACKAGE ##### -->
+<!-- ##### FUNCTION gras_datadesc_cmp ##### -->
<para>
</para>
+@d1:
+@d2:
+@Returns:
+@dd1:
+@c1:
+@dd2:
+@c2:
-<!-- ##### MACRO PACKAGE_BUGREPORT ##### -->
+<!-- ##### FUNCTION gras_datadesc_copy_data ##### -->
<para>
</para>
+@dd:
+@c:
+@data:
-<!-- ##### MACRO PACKAGE_NAME ##### -->
+<!-- ##### MACRO gras_datadesc_declare_array ##### -->
<para>
</para>
+@name:
+@elm_type:
+@size:
+@code:
-<!-- ##### MACRO PACKAGE_STRING ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_array_cb ##### -->
<para>
</para>
+@name:
+@element_type:
+@fixed_size:
+@dynamic_size:
+@post:
+@code:
+@Returns:
-<!-- ##### MACRO PACKAGE_TARNAME ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_array_dyn ##### -->
<para>
</para>
+@name:
+@element_type:
+@dynamic_size:
+@dst:
+@Returns:
+@elm_type:
+@code:
-<!-- ##### MACRO PACKAGE_VERSION ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_array_fixed ##### -->
<para>
</para>
+@name:
+@element_type:
+@fixed_size:
+@dst:
+@Returns:
-<!-- ##### MACRO PAD_BYTES ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_ref ##### -->
<para>
</para>
-@structType:
-@lastMember:
-@memberType:
-@repetitions:
+@name:
+@referenced_type:
+@dst:
+@Returns:
+@ref_type:
+@code:
-<!-- ##### FUNCTION PassSocket ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_ref_cb ##### -->
<para>
</para>
-@sock:
-@child:
+@name:
+@referenced_type:
+@discriminant:
+@post:
+@code:
@Returns:
-<!-- ##### FUNCTION Peer ##### -->
+<!-- ##### MACRO gras_datadesc_declare_ref_disc ##### -->
<para>
</para>
-@sd:
-@Returns:
+@name:
+@discriminant:
+@code:
-<!-- ##### FUNCTION PeerName ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_ref_generic ##### -->
<para>
</para>
-@sd:
+@name:
+@discriminant:
+@dst:
@Returns:
-<!-- ##### FUNCTION PeerName_r ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct ##### -->
<para>
</para>
-@sd:
+@name:
+@dst:
@Returns:
+@code:
-<!-- ##### FUNCTION ReverseData ##### -->
+<!-- ##### MACRO gras_datadesc_declare_struct_add_code ##### -->
<para>
</para>
-@destination:
-@source:
-@whatType:
-@repetitions:
-@format:
+@struct_code:
+@field_name:
+@field_type_code:
-<!-- ##### MACRO SIMPLE_DATA ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_add_code_cb ##### -->
<para>
</para>
-@type:
-@repetitions:
+@struct_code:
+@field_name:
+@field_code:
+@pre_cb:
+@post_cb:
+@Returns:
-<!-- ##### MACRO SIMPLE_MEMBER ##### -->
+<!-- ##### MACRO gras_datadesc_declare_struct_add_name ##### -->
<para>
</para>
-@type:
-@repetitions:
-@offset:
+@struct_code:
+@field_name:
+@field_type_name:
-<!-- ##### MACRO SIMPLE_TYPE_COUNT ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_add_name_cb ##### -->
<para>
</para>
+@struct_code:
+@field_name:
+@field_type_name:
+@pre_cb:
+@post_cb:
+@Returns:
-<!-- ##### MACRO STDC_HEADERS ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_append ##### -->
<para>
</para>
+@struct_type:
+@name:
+@field_type:
+@Returns:
-<!-- ##### TYPEDEF Socket ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_append_name ##### -->
<para>
</para>
+@struct_type:
+@name:
+@field_type_name:
+@Returns:
-<!-- ##### FUNCTION SocketFailure ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_cb ##### -->
<para>
</para>
-@sig:
+@name:
+@pre_cb:
+@post_cb:
+@code:
+@Returns:
-<!-- ##### USER_FUNCTION SocketFunction ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_struct_close ##### -->
<para>
</para>
-@Param1:
+@struct_type:
-<!-- ##### FUNCTION SocketInUse ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union ##### -->
<para>
</para>
-@sd:
+@name:
+@selector:
+@dst:
@Returns:
+@code:
-<!-- ##### FUNCTION SocketIsAvailable ##### -->
+<!-- ##### MACRO gras_datadesc_declare_union_add_code ##### -->
<para>
</para>
-@sd:
-@Returns:
+@union_code:
+@field_name:
+@field_type_code:
-<!-- ##### MACRO VERSION ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_add_code_cb ##### -->
<para>
</para>
+@union_code:
+@field_name:
+@field_code:
+@pre_cb:
+@post_cb:
+@Returns:
-<!-- ##### MACRO WARNING6 ##### -->
+<!-- ##### MACRO gras_datadesc_declare_union_add_name ##### -->
<para>
</para>
-@f:
-@a1:
-@a2:
-@a3:
-@a4:
-@a5:
-@a6:
+@union_code:
+@field_name:
+@field_type_name:
-<!-- ##### USER_FUNCTION grasCallbackFunction ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_add_name_cb ##### -->
<para>
</para>
-@sd:
-@msgType:
-@vdata:
+@union_code:
+@field_name:
+@field_type_name:
+@pre_cb:
+@post_cb:
+@Returns:
-<!-- ##### FUNCTION grasCloseSocket ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_append ##### -->
<para>
</para>
-@sock:
+@union_type:
+@name:
+@field_type:
@Returns:
-<!-- ##### FUNCTION grasDataDescCmp ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_append_name ##### -->
<para>
</para>
-@dd1:
-@c1:
-@dd2:
-@c2:
+@union_type:
+@name:
+@field_type_name:
@Returns:
-@description:
-<!-- ##### FUNCTION grasDataDescCount ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_cb ##### -->
<para>
</para>
-@description:
+@name:
+@field_count:
+@post:
+@code:
@Returns:
-<!-- ##### FUNCTION grasDataRecv ##### -->
+<!-- ##### FUNCTION gras_datadesc_declare_union_close ##### -->
<para>
</para>
-@sd:
-@data:
-@description:
-@description_length:
-@repetition:
-@Returns:
+@union_type:
-<!-- ##### FUNCTION grasDataSend ##### -->
+<!-- ##### FUNCTION gras_datadesc_from_nws ##### -->
<para>
</para>
-@sd:
-@data:
-@description:
-@description_length:
-@repetition:
+@name:
+@desc:
+@howmany:
+@code:
@Returns:
+@dst:
-<!-- ##### FUNCTION grasDataSize ##### -->
+<!-- ##### FUNCTION gras_datadesc_import_nws ##### -->
<para>
</para>
-@description:
-@ft:
+@name:
+@desc:
+@howmany:
+@dst:
@Returns:
-<!-- ##### ENUM grasError_t ##### -->
+<!-- ##### FUNCTION gras_datadesc_parse ##### -->
<para>
</para>
-@no_error:
-@malloc_error:
-@mismatch_error:
-@sanity_error:
-@system_error:
-@network_error:
-@timeout_error:
-@thread_error:
-@unknown_error:
+@name:
+@Cdefinition:
+@dst:
+@Returns:
+@code:
+@def:
-<!-- ##### FUNCTION grasLock ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_block_begin ##### -->
<para>
</para>
-@Returns:
+@ps:
-<!-- ##### TYPEDEF grasMessageType_t ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_block_end ##### -->
<para>
</para>
+@ps:
-<!-- ##### FUNCTION grasMsgDiscard ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_get ##### -->
<para>
</para>
-@sd:
-@size:
+@ps:
+@name:
+@ddt:
-<!-- ##### FUNCTION grasMsgEntryGet ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_pop ##### -->
<para>
</para>
-@id:
-@Returns:
+@ps:
+@name:
+@ddt:
-<!-- ##### TYPEDEF grasMsgEntry_t ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_push ##### -->
<para>
</para>
+@ps:
+@name:
+@data:
+@ddt:
-<!-- ##### FUNCTION grasMsgFree ##### -->
+<!-- ##### FUNCTION gras_dd_cbps_set ##### -->
<para>
</para>
-@msg:
+@ps:
+@name:
+@data:
+@ddt:
-<!-- ##### FUNCTION grasMsgHandle ##### -->
+<!-- ##### FUNCTION gras_ddt_free ##### -->
<para>
</para>
-@timeOut:
+@type:
-<!-- ##### FUNCTION grasMsgHeaderNew ##### -->
+<!-- ##### FUNCTION gras_ddt_get_by_code ##### -->
<para>
</para>
-@msgId:
-@dataSize:
-@seqCount:
+@code:
+@type:
@Returns:
-<!-- ##### FUNCTION grasMsgNew ##### -->
+<!-- ##### FUNCTION gras_ddt_get_by_name ##### -->
<para>
</para>
-@msgId:
-@free_data_on_free:
-@seqCount:
-@Varargs:
+@name:
+@type:
@Returns:
-<!-- ##### FUNCTION grasMsgRecv ##### -->
+<!-- ##### FUNCTION gras_ddt_new_array ##### -->
<para>
</para>
-@msg:
-@timeout:
+@name:
+@element_type:
+@fixed_size:
+@dynamic_size:
+@post:
+@dst:
@Returns:
-@sd:
-<!-- ##### FUNCTION grasMsgRegister ##### -->
+<!-- ##### FUNCTION gras_ddt_new_from_nws ##### -->
<para>
</para>
-@message:
@name:
-@sequence_count:
-@Varargs:
+@desc:
+@howmany:
+@dst:
@Returns:
-<!-- ##### FUNCTION grasMsgSend ##### -->
+<!-- ##### FUNCTION gras_ddt_new_ignored ##### -->
<para>
</para>
-@sd:
-@message:
-@sequence_count:
-@Varargs:
+@name:
+@default_value:
+@free_func:
+@size:
+@alignment:
+@post:
+@dst:
@Returns:
-<!-- ##### FUNCTION grasMsgWait ##### -->
+<!-- ##### FUNCTION gras_ddt_new_parse ##### -->
<para>
</para>
-@sd:
-@timeout:
-@message:
-@sequence_count:
-@Varargs:
+@name:
+@C_definition:
+@dst:
@Returns:
-<!-- ##### FUNCTION grasMyMachineName ##### -->
+<!-- ##### FUNCTION gras_ddt_new_ref ##### -->
<para>
</para>
+@name:
+@referenced_type:
+@discriminant:
+@post:
+@dst:
@Returns:
-<!-- ##### FUNCTION grasOpenClientSocket ##### -->
+<!-- ##### FUNCTION gras_ddt_new_scalar ##### -->
<para>
</para>
-@host:
-@Param2:
-@sock:
+@name:
+@type:
@Returns:
-<!-- ##### FUNCTION grasOpenServerSocket ##### -->
+<!-- ##### FUNCTION gras_ddt_new_struct ##### -->
<para>
</para>
-@Param1:
-@Param2:
-@sock:
+@name:
+@pre:
+@post:
+@dst:
@Returns:
-<!-- ##### MACRO grasPROTOCOL ##### -->
+<!-- ##### FUNCTION gras_ddt_new_struct_append ##### -->
<para>
</para>
+@struct_type:
+@name:
+@field_type:
+@pre:
+@post:
+@Returns:
-<!-- ##### FUNCTION grasPeerGetAddress ##### -->
+<!-- ##### FUNCTION gras_ddt_new_union ##### -->
<para>
</para>
-@sd:
+@name:
+@field_count:
+@post:
+@dst:
@Returns:
-<!-- ##### FUNCTION grasPeerGetName ##### -->
+<!-- ##### FUNCTION gras_ddt_new_union_append ##### -->
<para>
</para>
-@sd:
+@union_type:
+@name:
+@field_type:
+@pre:
+@post:
@Returns:
-<!-- ##### FUNCTION grasRecvData ##### -->
+<!-- ##### FUNCTION gras_ddt_register ##### -->
<para>
</para>
-@sd:
-@data:
-@description:
+@type:
@Returns:
-<!-- ##### FUNCTION grasRegisterCallback ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_free ##### -->
<para>
</para>
-@message:
-@TTL:
-@cb:
+@cursor:
+@Returns:
-<!-- ##### FUNCTION grasSendData ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_get_data ##### -->
<para>
</para>
-@sd:
+@cursor:
@data:
-@description:
@Returns:
-<!-- ##### FUNCTION grasUnlock ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_get_key ##### -->
<para>
</para>
+@cursor:
+@key:
@Returns:
-<!-- ##### FUNCTION grasUserdataGet ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_new ##### -->
<para>
</para>
+@head:
+@Returns:
+@cursor:
-<!-- ##### MACRO grasUserdataNew ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_next ##### -->
<para>
</para>
-@type:
+@cursor:
+@Returns:
-<!-- ##### FUNCTION grasUserdataSet ##### -->
+<!-- ##### FUNCTION gras_dict_cursor_rewind ##### -->
<para>
</para>
-@ud:
+@cursor:
+@Returns:
-<!-- ##### FUNCTION gras_datadesc_cmp ##### -->
+<!-- ##### FUNCTION gras_dict_dump ##### -->
<para>
</para>
-@d1:
-@d2:
+@head:
+@output:
@Returns:
-@dd1:
-@c1:
-@dd2:
-@c2:
-<!-- ##### FUNCTION gras_datadesc_copy_data ##### -->
+<!-- ##### MACRO gras_dict_foreach ##### -->
<para>
</para>
-@dd:
-@c:
+@dict:
+@cursor:
+@key:
@data:
-<!-- ##### MACRO gras_datadesc_declare_array ##### -->
+<!-- ##### FUNCTION gras_dict_free ##### -->
<para>
</para>
-@name:
-@elm_type:
-@size:
-@code:
+@dict:
+@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_array_cb ##### -->
+<!-- ##### FUNCTION gras_dict_get ##### -->
<para>
</para>
-@name:
-@element_type:
-@fixed_size:
-@dynamic_size:
-@post:
-@code:
+@head:
+@key:
+@data:
@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_ref_cb ##### -->
+<!-- ##### FUNCTION gras_dict_get_ext ##### -->
<para>
</para>
-@name:
-@referenced_type:
-@discriminant:
-@post:
-@code:
+@head:
+@key:
+@key_len:
+@data:
@Returns:
-<!-- ##### MACRO gras_datadesc_declare_ref_disc ##### -->
+<!-- ##### FUNCTION gras_dict_insert ##### -->
<para>
</para>
-@name:
-@discriminant:
-@code:
+@head:
+@key:
+@data:
+@free_ctn:
+@Returns:
-<!-- ##### MACRO gras_datadesc_declare_struct_add_code ##### -->
+<!-- ##### FUNCTION gras_dict_insert_ext ##### -->
<para>
</para>
-@struct_code:
-@field_name:
-@field_type_code:
+@head:
+@key:
+@key_len:
+@data:
+@free_ctn:
+@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_struct_add_code_cb ##### -->
+<!-- ##### FUNCTION gras_dict_new ##### -->
<para>
</para>
-@struct_code:
-@field_name:
-@field_code:
-@pre_cb:
-@post_cb:
@Returns:
+@dict:
-<!-- ##### MACRO gras_datadesc_declare_struct_add_name ##### -->
+<!-- ##### FUNCTION gras_dict_print ##### -->
<para>
</para>
-@struct_code:
-@field_name:
-@field_type_name:
+@data:
-<!-- ##### FUNCTION gras_datadesc_declare_struct_add_name_cb ##### -->
+<!-- ##### FUNCTION gras_dict_prints ##### -->
<para>
</para>
-@struct_code:
-@field_name:
-@field_type_name:
-@pre_cb:
-@post_cb:
-@Returns:
+@data:
-<!-- ##### FUNCTION gras_datadesc_declare_struct_append_name ##### -->
+<!-- ##### FUNCTION gras_dict_remove ##### -->
<para>
</para>
-@struct_type:
-@name:
-@field_type_name:
+@head:
+@key:
@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_struct_cb ##### -->
+<!-- ##### FUNCTION gras_dict_remove_ext ##### -->
<para>
</para>
-@name:
-@pre_cb:
-@post_cb:
-@code:
+@head:
+@key:
+@key_len:
@Returns:
-<!-- ##### MACRO gras_datadesc_declare_union_add_code ##### -->
+<!-- ##### FUNCTION gras_dict_retrieve ##### -->
<para>
</para>
-@union_code:
-@field_name:
-@field_type_code:
+@head:
+@key:
+@data:
+@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_union_add_code_cb ##### -->
+<!-- ##### FUNCTION gras_dict_retrieve_ext ##### -->
<para>
</para>
-
-@union_code:
-@field_name:
-@field_code:
-@pre_cb:
-@post_cb:
+
+@head:
+@key:
+@key_len:
+@data:
@Returns:
-<!-- ##### MACRO gras_datadesc_declare_union_add_name ##### -->
+<!-- ##### FUNCTION gras_dict_set ##### -->
<para>
</para>
-@union_code:
-@field_name:
-@field_type_name:
+@head:
+@key:
+@data:
+@free_ctn:
+@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_union_add_name_cb ##### -->
+<!-- ##### FUNCTION gras_dict_set_ext ##### -->
<para>
</para>
-@union_code:
-@field_name:
-@field_type_name:
-@pre_cb:
-@post_cb:
+@head:
+@key:
+@key_len:
+@data:
+@free_ctn:
@Returns:
-<!-- ##### FUNCTION gras_datadesc_declare_union_append_name ##### -->
+<!-- ##### FUNCTION gras_dynar_cursor_first ##### -->
<para>
</para>
-@union_type:
-@name:
-@field_type_name:
-@Returns:
+@dynar:
+@cursor:
-<!-- ##### FUNCTION gras_datadesc_declare_union_cb ##### -->
+<!-- ##### FUNCTION gras_dynar_cursor_get ##### -->
<para>
</para>
-@name:
-@field_count:
-@post:
-@code:
+@dynar:
+@cursor:
+@whereto:
@Returns:
-<!-- ##### FUNCTION gras_datadesc_from_nws ##### -->
+<!-- ##### FUNCTION gras_dynar_cursor_rm ##### -->
<para>
</para>
-@name:
-@desc:
-@howmany:
-@code:
-@Returns:
-@dst:
+@dynar:
+@cursor:
-<!-- ##### FUNCTION gras_datadesc_import_nws ##### -->
+<!-- ##### FUNCTION gras_dynar_cursor_step ##### -->
<para>
</para>
-@name:
-@desc:
-@howmany:
-@dst:
-@Returns:
+@dynar:
+@cursor:
-<!-- ##### FUNCTION gras_datadesc_parse ##### -->
+<!-- ##### FUNCTION gras_dynar_first ##### -->
<para>
</para>
-@name:
-@Cdefinition:
-@dst:
+@dynar:
+@cursor:
@Returns:
-@code:
-@def:
-<!-- ##### FUNCTION gras_ddt_free ##### -->
+<!-- ##### MACRO gras_dynar_foreach ##### -->
<para>
</para>
-@type:
+@_dynar:
+@_cursor:
+@_data:
+@_whereto:
-<!-- ##### FUNCTION gras_ddt_get_by_code ##### -->
+<!-- ##### FUNCTION gras_dynar_free ##### -->
<para>
</para>
-@code:
-@type:
+@dynar:
@Returns:
-<!-- ##### FUNCTION gras_ddt_get_by_name ##### -->
+<!-- ##### FUNCTION gras_dynar_free_container ##### -->
<para>
</para>
-@name:
-@type:
+@dynar:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_array ##### -->
+<!-- ##### FUNCTION gras_dynar_get ##### -->
<para>
</para>
-@name:
-@element_type:
-@fixed_size:
-@dynamic_size:
-@post:
+@dynar:
+@idx:
@dst:
+@whereto:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_from_nws ##### -->
+<!-- ##### FUNCTION gras_dynar_insert_at ##### -->
<para>
</para>
-@name:
-@desc:
-@howmany:
-@dst:
+@dynar:
+@idx:
+@src:
@Returns:
+@object:
-<!-- ##### FUNCTION gras_ddt_new_ignored ##### -->
+<!-- ##### FUNCTION gras_dynar_length ##### -->
<para>
</para>
-@name:
-@default_value:
-@free_func:
-@size:
-@alignment:
-@post:
-@dst:
+@dynar:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_parse ##### -->
+<!-- ##### FUNCTION gras_dynar_map ##### -->
<para>
</para>
-@name:
-@C_definition:
-@dst:
+@dynar:
+@operator:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_ref ##### -->
+<!-- ##### FUNCTION gras_dynar_new ##### -->
<para>
</para>
-@name:
-@referenced_type:
-@discriminant:
-@post:
-@dst:
+@Param1:
+@free_func:
@Returns:
+@whereto:
+@elm_size:
-<!-- ##### FUNCTION gras_ddt_new_scalar ##### -->
+<!-- ##### FUNCTION gras_dynar_next ##### -->
<para>
</para>
-@name:
-@type:
+@dynar:
+@cursor:
+@whereto:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_struct ##### -->
+<!-- ##### FUNCTION gras_dynar_pop ##### -->
<para>
</para>
-@name:
-@pre:
-@post:
+@dynar:
@dst:
-@Returns:
+@whereto:
-<!-- ##### FUNCTION gras_ddt_new_struct_append ##### -->
+<!-- ##### FUNCTION gras_dynar_push ##### -->
<para>
</para>
-@struct_type:
-@name:
-@field_type:
-@pre:
-@post:
+@dynar:
+@src:
@Returns:
+@object:
-<!-- ##### FUNCTION gras_ddt_new_union ##### -->
+<!-- ##### FUNCTION gras_dynar_remove_at ##### -->
<para>
</para>
-@name:
-@field_count:
-@post:
-@dst:
+@dynar:
+@idx:
+@object:
@Returns:
-<!-- ##### FUNCTION gras_ddt_new_union_append ##### -->
+<!-- ##### FUNCTION gras_dynar_remplace ##### -->
<para>
</para>
-@union_type:
-@name:
-@field_type:
-@pre:
-@post:
+@dynar:
+@idx:
+@object:
@Returns:
-<!-- ##### FUNCTION gras_ddt_register ##### -->
+<!-- ##### FUNCTION gras_dynar_reset ##### -->
<para>
</para>
-@type:
+@dynar:
@Returns:
-<!-- ##### FUNCTION gras_dict_cursor_next ##### -->
+<!-- ##### FUNCTION gras_dynar_set ##### -->
<para>
</para>
-@cursor:
+@dynar:
+@idx:
+@src:
@Returns:
+@object:
-<!-- ##### FUNCTION gras_dict_insert ##### -->
+<!-- ##### FUNCTION gras_dynar_shift ##### -->
<para>
</para>
-@head:
-@key:
-@data:
-@free_ctn:
+@dynar:
+@dst:
+@whereto:
@Returns:
-<!-- ##### FUNCTION gras_dict_insert_ext ##### -->
+<!-- ##### FUNCTION gras_dynar_unshift ##### -->
<para>
</para>
-@head:
-@key:
-@key_len:
-@data:
-@free_ctn:
+@dynar:
+@src:
@Returns:
+@object:
-<!-- ##### FUNCTION gras_dict_retrieve ##### -->
+<!-- ##### ENUM gras_error_t ##### -->
<para>
</para>
-@head:
-@key:
-@data:
-@Returns:
+@no_error: no error
+@mismatch_error: Not found
+@system_error: a syscall did fail
+@network_error: error while sending/receiving data
+@timeout_error: not quick enough, dude
+@thread_error: error while [un]locking
+@unknown_error: no idea
-<!-- ##### FUNCTION gras_dict_retrieve_ext ##### -->
+<!-- ##### FUNCTION gras_lock ##### -->
<para>
</para>
-@head:
-@key:
-@key_len:
-@data:
@Returns:
-<!-- ##### FUNCTION gras_dynar_first ##### -->
+<!-- ##### FUNCTION gras_log_appender_set ##### -->
<para>
</para>
-@dynar:
-@cursor:
-@Returns:
+@cat:
+@app:
-<!-- ##### FUNCTION gras_dynar_next ##### -->
+<!-- ##### FUNCTION gras_log_control_set ##### -->
<para>
</para>
-@dynar:
-@cursor:
-@whereto:
+@cs:
@Returns:
-<!-- ##### FUNCTION gras_lock ##### -->
+<!-- ##### VARIABLE gras_log_default_appender ##### -->
<para>
</para>
-@Returns:
<!-- ##### FUNCTION gras_log_parent_set ##### -->
<para>
@cat:
@parent:
+<!-- ##### ENUM gras_log_priority_t ##### -->
+<para>
+
+</para>
+
+@gras_log_priority_none:
+@gras_log_priority_trace:
+@gras_log_priority_debug:
+@gras_log_priority_verbose:
+@gras_log_priority_info:
+@gras_log_priority_warning:
+@gras_log_priority_error:
+@gras_log_priority_critical:
+@gras_log_priority_infinite:
+@gras_log_priority_uninitialized:
+
<!-- ##### FUNCTION gras_log_threshold_set ##### -->
<para>
@Varargs:
@Returns:
+<!-- ##### FUNCTION gras_set_add ##### -->
+<para>
+
+</para>
+
+@set:
+@elm:
+@free_func:
+@Returns:
+
+<!-- ##### MACRO gras_set_foreach ##### -->
+<para>
+
+</para>
+
+@set:
+@cursor:
+@elm:
+
+<!-- ##### FUNCTION gras_set_free ##### -->
+<para>
+
+</para>
+
+@set:
+
+<!-- ##### FUNCTION gras_set_get_by_id ##### -->
+<para>
+
+</para>
+
+@set:
+@id:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_set_get_by_name ##### -->
+<para>
+
+</para>
+
+@set:
+@key:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_set_get_by_name_ext ##### -->
+<para>
+
+</para>
+
+@set:
+@name:
+@name_len:
+@dst:
+@Returns:
+
+<!-- ##### FUNCTION gras_set_new ##### -->
+<para>
+
+</para>
+
+@Returns:
+@dst:
+
<!-- ##### FUNCTION gras_sleep ##### -->
<para>
@Returns:
+<!-- ##### ENUM xbt_error_t ##### -->
+<para>
+
+</para>
+
+@no_error:
+@mismatch_error:
+@system_error:
+@network_error:
+@timeout_error:
+@thread_error:
+@unknown_error:
+@remote_mismatch_error:
+@remote_system_error:
+@remote_network_error:
+@remote_timeout_error:
+@remote_thread_error:
+@remote_unknown_error:
+