Provided by: ion-doc_3.2.1+dfsg-1.1_all bug

NAME

       sdrtable - Simple Data Recorder table management functions

SYNOPSIS

           #include "sdr.h"

           Object  sdr_table_create        (Sdr sdr, int rowSize, int rowCount);
           int     sdr_table_user_data_set (Sdr sdr, Object table, Address userData);
           Address sdr_table_user_data     (Sdr sdr, Object table);
           int     sdr_table_dimensions    (Sdr sdr, Object table, int *rowSize,
                                               int *rowCount);
           int     sdr_table_stage         (Sdr sdr, Object table);
           Address sdr_table_row           (Sdr sdr, Object table,
                                               unsigned int rowNbr);
           int     sdr_table_destroy       (Sdr sdr, Object table);

DESCRIPTION

       The SDR table functions manage table objects in the SDR.  An SDR table comprises N rows of
       M bytes each, plus optionally one word of user data (which is nominally the address of
       some other object in the SDR's heap space).  When a table is created, the number of rows
       in the table and the length of each row are specified; they remain fixed for the life of
       the table.  The table functions merely maintain information about the table structure and
       its location in the SDR and calculate row addresses; other SDR functions such as
       sdr_read() and sdr_write() are used to read and write the contents of the table's rows.
       In particular, the format of the rows of a table is left entirely up to the user.

       Object sdr_table_create(Sdr sdr, int rowSize, int rowCount)
           Creates a "self-delimited table", comprising rowCount rows of rowSize bytes each, in
           the heap space of the indicated SDR.  Note that the content of the table, a two-
           dimensional array, is a single SDR heap space object of size (rowCount x rowSize).
           Returns the address of the new table on success, zero on any error.

       void sdr_table_user_data_set(Sdr sdr, Object table, Address userData)
           Sets the "user data" word of table to userData.  Note that userData is nominally an
           Address but can in fact be any value that occupies a single word.  It is typically
           used to point to an SDR object that somehow characterizes the table as a whole, such
           as an SDR string containing a name.

       Address sdr_table_user_data(Sdr sdr, Object table)
           Returns the value of the "user data" word of table, or zero on any error.

       void sdr_table_dimensions(Sdr sdr, Object table, int *rowSize, int *rowCount)
           Reports on the row size and row count of the indicated table, as specified when the
           table was created.

       void sdr_table_stage(Sdr sdr, Object table)
           Stages table so that the array it encapsulates may be updated; see the discussion of
           sdr_stage() in sdr(3).  The effect of this function is the same as:

              sdr_stage(sdr, NULL, (Object) sdr_table_row(sdr, table, 0), 0)

       Address sdr_table_row(Sdr sdr, Object table, unsigned int rowNbr)
           Returns the address of the rowNbrth row of table, for use in reading or writing the
           content of this row; returns -1 on any error.

       void sdr_table_destroy(Sdr sdr, Object table)
           Destroys table, releasing all bytes of all rows and destroying the table structure
           itself.  DO NOT use sdr_free() to destroy a table, as this would leave the table's
           content allocated yet unreferenced.

SEE ALSO

       sdr(3), sdrlist(3), sdrstring(3)