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; };