Listing 1
// Structures for the Open-RJ C-API
struct IORJAllocator
{
/** Defines the "member" function for allocating memory */
void *(*pfnAlloc)(IORJAllocator *ator, size_t cb);
/** Defines the "member" function for reallocating memory */
void *(*pfnRealloc)(IORJAllocator *ator, void *pv, size_t cb);
/** Defines the "member" function for freeing memory */
void (*pfnFree)(IORJAllocator *ator, void *pv);
};
struct ORJStringA
{
/* The number of characters in the string */
size_t len;
/* Pointer to the first element in the string */
char const *ptr;
};
struct ORJFieldA
{
/* Reserved: must be 0 */
size_t mbz0;
/* The field name */
ORJStringA name;
/* The field value */
ORJStringA value;
/* Reserved. Cannot be used by client code */
void *reserved0;
};
struct ORJRecordA
{
/* Reserved: must be 0 */
size_t mbz0;
/* The number of fields in the record */
size_t numFields;
/* The field array */
ORJFieldA *fields;
/* Reserved. Cannot be used by client code */
void *reserved0;
};
struct ORJDatabaseA
{
/* Reserved: must be 0 */
size_t mbz0;
/* Holds the flags passed to function used to create database */
size_t flags;
/* The number of lines in the database */
size_t numLines;
/* The number of fields in the database */
size_t numFields;
/* The record array */
ORJFieldA *fields;
/* The number of records in the database */
size_t numRecords;
/* The record array */
ORJRecordA *records;
/* The allocator */
IORJAllocator *ator;
};
struct ORJError
{
/* Reserved: must not be accessed */
size_t reserved0;
/* The line on which the parsing error was encountered */
unsigned invalidLine;
/* The column on which the parsing error was encountered */
unsigned invalidColumn;
/* The type of the parsing error */
ORJ_PARSE_ERROR parseError;
};