Skip to content

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 rowNbr_th 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)