rdmtypes.h File Reference

Header for the native RDM Runtime types. More...

#include "psptypes.h"
#include "rdmretcodetypes.h"
Include dependency graph for rdmtypes.h:
This graph shows which files directly or indirectly include this file:

Data Structures

struct  RDM_SEARCH_KEY
 The RDM Partial Key data structure. More...
 
union  RDM_RTREE_FILTER
 
struct  RDM_RTREE_KEY
 The RDM R-tree Key data structure. More...
 
struct  RDM_RANGE_KEY
 The RDM Range Key data structure. More...
 
struct  RDM_ROW_STATUS_INFO
 RDM Rows status info. More...
 

Macros

#define RDM_IDENTIFIER_LEN   127
 
#define RDM_CATALOG_EMPTY_SCHEMA
 A catalog with an empty schema. More...
 
#define RDM_LOCK_NONE   (const RDM_TABLE_ID *) (-1)
 
#define RDM_LOCK_ALL   (const RDM_TABLE_ID *) (-2)
 
#define RDM_LOCK_SCHEMA   (const RDM_TABLE_ID *) (-3)
 
#define RDM_LOCK_DB_OPEN   (RDM_TABLE_ID) (-4)
 
#define TABLE_SCHEMA   (RDM_TABLE_ID) (0x10002)
 
#define REF_CURSOR   ((RDM_REF_ID) 0)
 
#define RDM_COL_HAS_VALUE   ((RDM_HAS_VALUE_T) 1)
 
#define RDM_COL_IS_NULL   ((RDM_HAS_VALUE_T) 0)
 
#define RDM_ALL_DATA   ((size_t) -1)
 
#define RDM_COLUMN_SIZE(table, column)   sizeof (((table *) 0)->column)
 Macro for getting the size of a column in the struct definition. More...
 

Typedefs

typedef uint32_t RDM_TABLE_ID
 
typedef uint32_t RDM_COLUMN_ID
 
typedef uint32_t RDM_KEY_ID
 
typedef uint32_t RDM_REF_ID
 
typedef uint64_t RDM_TX
 
typedef RDM_RETCODE() RDM_REBUILD_INDEX_REPORT_FCN(const char *table, const char *indexes, uint64_t current, uint64_t total)
 Callback function signature to report status on an ID-index rebuild. More...
 
typedef uint8_t RDM_HAS_VALUE_T
 
typedef struct RDM_DB_S * RDM_DB
 
typedef struct RDM_CURSOR_S * RDM_CURSOR
 
typedef struct RDM_TRANS_S * RDM_TRANS
 
typedef struct RDM_ENCRYPT_S * RDM_ENCRYPT
 
typedef const struct RDM_ENCRYPT_S * RDM_ENCRYPT_C
 
typedef void(* RDM_ERROR_FCN) (RDM_DB, RDM_RETCODE, const char *, void *)
 
typedef void(* RDM_ERROR_A_FCN) (RDM_DB, RDM_RETCODE, const char *, void *)
 
typedef void(* RDM_ERROR_W_FCN) (RDM_DB, RDM_RETCODE, const wchar_t *, void *)
 

Enumerations

enum  RDM_RTREE_TYPE {
  RDM_RTREE_ALL, RDM_RTREE_EXACT, RDM_RTREE_OVERLAP, RDM_RTREE_CONTAINS,
  RDM_RTREE_NEAREST, RDM_RTREE_RADIUS_OVERLAP, RDM_RTREE_RADIUS_CONTAINS, RDM_RTREE_POLYGON_OVERLAP,
  RDM_RTREE_POLYGON_CONTAINS
}
 Query types for an R-tree index. More...
 
enum  RDM_RANGE { RDM_RANGE_OPEN = 0, RDM_RANGE_CLOSED }
 The range include or exclude enumeration. More...
 
enum  RDM_TRANS_STATUS { RDM_TRANS_READ = 1, RDM_TRANS_UPDATE, RDM_TRANS_SNAPSHOT, RDM_TRANS_NONE }
 The RDM transaction status identifiers. More...
 
enum  RDM_TRANS_PRECOMMIT_STATUS { RDM_TRANS_NOT_PRECOMMITTED = 0, RDM_TRANS_PRECOMMITTED, RDM_TRANS_PRECOMMITTED_NO_UPDATES }
 The RDM transaction status identifiers. More...
 
enum  RDM_USER_STATUS { RDM_U_EMPTY = 0, RDM_U_LIVE }
 The RDM user status. More...
 
enum  RDM_LOCK_STATUS {
  RDM_LOCK_FREE = 0x0000, RDM_LOCK_READ = 0x0001, RDM_LOCK_WRITE = 0x0003, RDM_LOCK_SNAPSHOT = 0x0005,
  RDM_LOCK_CATALOG = 0x0310
}
 Enumeration for RDM table lock status. More...
 
enum  RDM_CURSOR_STATUS {
  CURSOR_NOT_AT_ROW = 0, CURSOR_AT_ROW, CURSOR_BETWEEN, CURSOR_BEFORE_FIRST,
  CURSOR_AFTER_LAST, CURSOR_DELETED, CURSOR_CHANGED, CURSOR_UNLINKED,
  CURSOR_ROW_GONE, CURSOR_SET_GONE, CURSOR_DROPPED
}
 Enumeration for RDM cursor positions / statuses. More...
 
enum  RDM_CURSOR_COMPARE { CURSOR_BEFORE, CURSOR_EQUAL = RDM_EQ, CURSOR_AFTER }
 Enumeration for RDM cursor comparisons. More...
 
enum  RDM_OPEN_MODE { RDM_OPEN_SHARED = 0x0000, RDM_OPEN_EXCLUSIVE = 0x0001, RDM_OPEN_READONLY = 0x0002 }
 Enumeration for open modes. More...
 
enum  RDM_CURSOR_TYPE {
  CURSOR_TYPE_BEFORE_FIRST = 1, CURSOR_TYPE_AFTER_LAST, CURSOR_TYPE_REC_SCAN, CURSOR_TYPE_KEY_SCAN,
  CURSOR_TYPE_RTREE_SCAN, CURSOR_TYPE_SET_SCAN, CURSOR_TYPE_SINGLETON, CURSOR_TYPE_REC_RANGE,
  CURSOR_TYPE_STATUS, CURSOR_TYPE_SYSCOLUMN, CURSOR_TYPE_ALLOCATED
}
 Enumeration for cursor types. More...
 
enum  RDM_ENC_TYPE {
  RDM_ENC_NONE, RDM_ENC_XOR, RDM_ENC_AES128, RDM_ENC_AES192,
  RDM_ENC_AES256, RDM_ENC_DEFAULT
}
 
enum  RDM_TRIGGERS_STATUS { RDM_TRIGGERS_ON = 1, RDM_TRIGGERS_OFF = -1, RDM_TRIGGERS_UNDEFINED = 0 }
 Triggers status values. More...
 

Detailed Description

Header for the native RDM Runtime types.

Macro Definition Documentation

◆ RDM_ALL_DATA

#define RDM_ALL_DATA   ((size_t) -1)

◆ RDM_CATALOG_EMPTY_SCHEMA

#define RDM_CATALOG_EMPTY_SCHEMA
Value:
"{\n" \
" \"database\":{\n" \
" \"catver\":142,\n" \
" \"dbver\":1,\n" \
" \"encryption\":\"none\",\n" \
" \"maxdrawers\":0,\n" \
" \"nodrawers\":0,\n" \
" \"nextdrawer\":0,\n" \
" \"nodoms\":0,\n" \
" \"maxdoms\":0,\n" \
" \"maxtabs\":32768,\n" \
" \"notabs\":1,\n" \
" \"nexttab\":1,\n" \
" \"drawers\":[\n" \
" ],\n" \
" \"tables\":[\n" \
" ]\n" \
" }\n" \
"}\n"

A catalog with an empty schema.

Use this string as a parameter to rdm_dbLoadCatalog() to set an empty schema

◆ RDM_COL_HAS_VALUE

◆ RDM_COL_IS_NULL

#define RDM_COL_IS_NULL   ((RDM_HAS_VALUE_T) 0)

◆ RDM_COLUMN_SIZE

#define RDM_COLUMN_SIZE (   table,
  column 
)    sizeof (((table *) 0)->column)

◆ RDM_IDENTIFIER_LEN

#define RDM_IDENTIFIER_LEN   127

The maximum identifier length measured in characters not including a null terminator

◆ RDM_LOCK_ALL

◆ RDM_LOCK_DB_OPEN

#define RDM_LOCK_DB_OPEN   (RDM_TABLE_ID) (-4)

Lock for opening a database exclusively

◆ RDM_LOCK_NONE

#define RDM_LOCK_NONE   (const RDM_TABLE_ID *) (-1)

Don't lock any tables in the database

◆ RDM_LOCK_SCHEMA

#define RDM_LOCK_SCHEMA   (const RDM_TABLE_ID *) (-3)

Lock the schema

◆ REF_CURSOR

#define REF_CURSOR   ((RDM_REF_ID) 0)

The default foreign reference ID for the cursor

◆ TABLE_SCHEMA

#define TABLE_SCHEMA   (RDM_TABLE_ID) (0x10002)

The table ID for the schema

Typedef Documentation

◆ RDM_COLUMN_ID

typedef uint32_t RDM_COLUMN_ID

The RDM column ID

◆ RDM_CURSOR

typedef struct RDM_CURSOR_S* RDM_CURSOR

RDM cursor handle

◆ RDM_DB

typedef struct RDM_DB_S* RDM_DB

RDM database handle

◆ RDM_ENCRYPT

typedef struct RDM_ENCRYPT_S* RDM_ENCRYPT

RDM encryption handle

◆ RDM_ENCRYPT_C

typedef const struct RDM_ENCRYPT_S* RDM_ENCRYPT_C

const RDM encryption handle

◆ RDM_ERROR_A_FCN

typedef void( * RDM_ERROR_A_FCN) (RDM_DB, RDM_RETCODE, const char *, void *)

◆ RDM_ERROR_FCN

typedef void( * RDM_ERROR_FCN) (RDM_DB, RDM_RETCODE, const char *, void *)

◆ RDM_ERROR_W_FCN

typedef void( * RDM_ERROR_W_FCN) (RDM_DB, RDM_RETCODE, const wchar_t *, void *)

◆ RDM_HAS_VALUE_T

typedef uint8_t RDM_HAS_VALUE_T

RDM Type for whether column has a value or is null

◆ RDM_KEY_ID

typedef uint32_t RDM_KEY_ID

The RDM key ID

◆ RDM_REBUILD_INDEX_REPORT_FCN

typedef RDM_RETCODE() RDM_REBUILD_INDEX_REPORT_FCN(const char *table, const char *indexes, uint64_t current, uint64_t total)

Callback function signature to report status on an ID-index rebuild.

◆ RDM_REF_ID

typedef uint32_t RDM_REF_ID

The RDM foreign reference ID

◆ RDM_TABLE_ID

typedef uint32_t RDM_TABLE_ID

The RDM table ID

◆ RDM_TRANS

typedef struct RDM_TRANS_S* RDM_TRANS

RDM transaction handle handle

◆ RDM_TX

typedef uint64_t RDM_TX

Enumeration Type Documentation

◆ RDM_CURSOR_COMPARE

Enumeration for RDM cursor comparisons.

The enumeration allows for position comparisons between two cursors. A cursor can either be positioned before, after, or equal to the position of another cursor. How positioning is determined is based on the type of cursor being compared.

Enumerator
CURSOR_BEFORE 

The cursor is positioned before the position of the other cursor

CURSOR_EQUAL 

The cursor is positioned at the same position as the position of the other cursor

CURSOR_AFTER 

The cursor is positioned after the position of the other cursor

228 {
229  CURSOR_BEFORE =
230  RDM_LT,
231  CURSOR_EQUAL = RDM_EQ,
233  CURSOR_AFTER =
234  RDM_GT
Definition: rdmtypes.h:233
Definition: psptypes.h:69
Definition: psptypes.h:70
RDM_CURSOR_COMPARE
Enumeration for RDM cursor comparisons.
Definition: rdmtypes.h:227
Definition: psptypes.h:71
Definition: rdmtypes.h:229
Definition: rdmtypes.h:231

◆ RDM_CURSOR_STATUS

Enumeration for RDM cursor positions / statuses.

The enumeration identifies the current position for an RDM cursor. A cursor can be positioned at a row, between rows, before all rows, or after all rows

Enumerator
CURSOR_NOT_AT_ROW 

A cursor not positioned at a valid row.

CURSOR_AT_ROW 

A cursor positioned at a valid row.

CURSOR_BETWEEN 

A cursor positioned between rows.

CURSOR_BEFORE_FIRST 

A cursor positioned before all rows.

CURSOR_AFTER_LAST 

A cursor positioned after all rows.

CURSOR_DELETED 

A cursor whose current row has been deleted.

CURSOR_CHANGED 

A cursor whose key value has been changed.

CURSOR_UNLINKED 

A cursor whose curent row has been unlinked.

CURSOR_ROW_GONE 

A singleton cursor that has had it's row deleted.

CURSOR_SET_GONE 

A set cursor that has had it's owner deleted.

CURSOR_DROPPED 

A cursor that is based on an object that has been dropped.

206 {
207  CURSOR_NOT_AT_ROW = 0,
208  CURSOR_AT_ROW,
Definition: rdmtypes.h:213
Definition: rdmtypes.h:209
Definition: rdmtypes.h:210
Definition: rdmtypes.h:214
Definition: rdmtypes.h:211
Definition: rdmtypes.h:216
Definition: rdmtypes.h:217
Definition: rdmtypes.h:215
RDM_CURSOR_STATUS
Enumeration for RDM cursor positions / statuses.
Definition: rdmtypes.h:205
Definition: rdmtypes.h:207
Definition: rdmtypes.h:212
Definition: rdmtypes.h:208

◆ RDM_CURSOR_TYPE

Enumeration for cursor types.

The enumeration specifies the type of a cursor

Enumerator
CURSOR_TYPE_BEFORE_FIRST 

enum value for a BeforeFirst special cursor

CURSOR_TYPE_AFTER_LAST 

enum value for a AfterLast special cursor

CURSOR_TYPE_REC_SCAN 

enum value for a record scan cursor

CURSOR_TYPE_KEY_SCAN 

enum value for a key scan cursor

CURSOR_TYPE_RTREE_SCAN 

enum value for a R-tree scan cursor

CURSOR_TYPE_SET_SCAN 

enum value for a set scan cursor

CURSOR_TYPE_SINGLETON 

enum value for a singleton cursor

CURSOR_TYPE_REC_RANGE 

enum value for a rec range cursor

CURSOR_TYPE_STATUS 

enum value for a status cursor

CURSOR_TYPE_SYSCOLUMN 

enum value for a syscolumn meta cursor

CURSOR_TYPE_ALLOCATED 

enum value for a cursor that has only been allocated

278 {
289 #if !defined (RDM_DOXYGEN)
290  CURSOR_TYPE_SYSTABLE,
291  CURSOR_TYPE_SYSREF,
292  CURSOR_TYPE_SYSKEY,
293  CURSOR_TYPE_SYSDOMAIN,
294  CURSOR_TYPE_SYSSORT,
295  CURSOR_TYPE_SYSELEM,
296  CURSOR_TYPE_SYSDB,
297  CURSOR_TYPE_SYSDRAWER,
298 #endif
Definition: rdmtypes.h:287
RDM_CURSOR_TYPE
Enumeration for cursor types.
Definition: rdmtypes.h:277
Definition: rdmtypes.h:283
Definition: rdmtypes.h:282
Definition: rdmtypes.h:284
Definition: rdmtypes.h:286
Definition: rdmtypes.h:285
Definition: rdmtypes.h:299
Definition: rdmtypes.h:280
Definition: rdmtypes.h:288
Definition: rdmtypes.h:281
Definition: rdmtypes.h:279

◆ RDM_ENC_TYPE

Enumeration for RDM encryption algorithms

The enumeration identifies the supported encryption algorithms.

RDM_ENC_XOR is the only type of encryption that is included in packages without export restrictions.

Enumerator
RDM_ENC_NONE 

No encryption

RDM_ENC_XOR 

XOR encryption

RDM_ENC_AES128 

AES-128 encryption

RDM_ENC_AES192 

AES-192 encryption

RDM_ENC_AES256 

AES-256 encryption

RDM_ENC_DEFAULT 

Default encryption

318 {
319  RDM_ENC_NONE,
320  RDM_ENC_XOR,
325 } RDM_ENC_TYPE;
Definition: rdmtypes.h:321
RDM_ENC_TYPE
Definition: rdmtypes.h:317
Definition: rdmtypes.h:320
Definition: rdmtypes.h:322
Definition: rdmtypes.h:323
Definition: rdmtypes.h:324
Definition: rdmtypes.h:319

◆ RDM_LOCK_STATUS

Enumeration for RDM table lock status.

This enumeration specifies the table lock status for RDM databases

Enumerator
RDM_LOCK_FREE 

The table is not locked

RDM_LOCK_READ 

The table is locked for reads

RDM_LOCK_WRITE 

The table is locked for updates

RDM_LOCK_SNAPSHOT 

The table has an active snapshot

RDM_LOCK_CATALOG 

The database has the catalog write locked

158 {
159  RDM_LOCK_FREE = 0x0000,
160  RDM_LOCK_READ = 0x0001,
161  RDM_LOCK_WRITE = 0x0003,
162  RDM_LOCK_SNAPSHOT = 0x0005,
163  RDM_LOCK_CATALOG = 0x0310
RDM_LOCK_STATUS
Enumeration for RDM table lock status.
Definition: rdmtypes.h:157
Definition: rdmtypes.h:160
Definition: rdmtypes.h:162
Definition: rdmtypes.h:161
Definition: rdmtypes.h:159
Definition: rdmtypes.h:163

◆ RDM_OPEN_MODE

Enumeration for open modes.

The enumeration specifies the open modes. The creat flags always require a catalog set using rdm_dbSetCatalog(). The append modes require any catalog that have been set to match the catalog stored in the database. RDM_OPEN_EXCLUSIVE and RDM_OPEN_SHARED default to create if a catalog have been set and append if it have not been set.

Enumerator
RDM_OPEN_SHARED 

Open database in shared mode, requiring locks

RDM_OPEN_EXCLUSIVE 

Open database in exclusive mode

RDM_OPEN_READONLY 

Open database in readonly mode, requiring locks

251 {
252  /* GEN_OPEN_MODE_BEGIN */
253  RDM_OPEN_SHARED = 0x0000,
254  RDM_OPEN_EXCLUSIVE = 0x0001,
255  RDM_OPEN_READONLY = 0x0002,
256 #if !defined (RDM_DOXYGEN)
257  RDM_OPEN_SHARED_APPEND = 0x0010,
258  RDM_OPEN_EXCLUSIVE_APPEND = 0x0011,
259  RDM_OPEN_SHARED_CREAT = 0x0020,
260  RDM_OPEN_EXCLUSIVE_CREAT = 0x0021,
261  RDM_OPEN_SHARED_CREAT_TRUNC =0x0120,
262  RDM_OPEN_EXCLUSIVE_CREAT_TRUNC = 0x0121,
263  RDM_OPEN_SHARED_CREAT_EXCL = 0x0220,
264  RDM_OPEN_EXCLUSIVE_CREAT_EXCL = 0x0221
265 #endif
266  /* GEN_OPEN_MODE_END */
267 } RDM_OPEN_MODE;
Definition: rdmtypes.h:254
RDM_OPEN_MODE
Enumeration for open modes.
Definition: rdmtypes.h:250
Definition: rdmtypes.h:255
Definition: rdmtypes.h:253

◆ RDM_RANGE

enum RDM_RANGE

The range include or exclude enumeration.

Enumerator
RDM_RANGE_OPEN 

The range includes the specified value

RDM_RANGE_CLOSED 

The range excludes the specified value

108 {
109  RDM_RANGE_OPEN = 0,
111 } RDM_RANGE;
Definition: rdmtypes.h:109
Definition: rdmtypes.h:110
RDM_RANGE
The range include or exclude enumeration.
Definition: rdmtypes.h:107

◆ RDM_RTREE_TYPE

Query types for an R-tree index.

Enumerator
RDM_RTREE_ALL 

Return all entries in the R-tree index

RDM_RTREE_EXACT 

Return only an exact match for the query criteria

RDM_RTREE_OVERLAP 

Return all rows that overlap the query criteria

RDM_RTREE_CONTAINS 

Return all rows that are contained in the query criteria

RDM_RTREE_NEAREST 

Return the nearest neighbors to the query criteria.

RDM_RTREE_RADIUS_OVERLAP 

Return all rows that overlap the radius query criteria.

RDM_RTREE_RADIUS_CONTAINS 

Return all rows that are contained in the radius query criteria.

RDM_RTREE_POLYGON_OVERLAP 

Return all rows that overlap the polygon query criteria.

RDM_RTREE_POLYGON_CONTAINS 

Return all rows that are contained in the polygon query criteria.

78 {
Definition: rdmtypes.h:79
Definition: rdmtypes.h:82
Definition: rdmtypes.h:81
RDM_RTREE_TYPE
Query types for an R-tree index.
Definition: rdmtypes.h:77
Definition: rdmtypes.h:83
Definition: rdmtypes.h:85
Definition: rdmtypes.h:80
Definition: rdmtypes.h:84
Definition: rdmtypes.h:87
Definition: rdmtypes.h:86

◆ RDM_TRANS_PRECOMMIT_STATUS

The RDM transaction status identifiers.

Enumerator
RDM_TRANS_NOT_PRECOMMITTED 

A transaction is not precommitted

RDM_TRANS_PRECOMMITTED 

A transaction with changes has been precommitted

RDM_TRANS_PRECOMMITTED_NO_UPDATES 

A transaction without changes has been precommited

140 {
Definition: rdmtypes.h:142
RDM_TRANS_PRECOMMIT_STATUS
The RDM transaction status identifiers.
Definition: rdmtypes.h:139
Definition: rdmtypes.h:141
Definition: rdmtypes.h:143

◆ RDM_TRANS_STATUS

The RDM transaction status identifiers.

Enumerator
RDM_TRANS_READ 

A read transaction is active

RDM_TRANS_UPDATE 

An update transaction is active

RDM_TRANS_SNAPSHOT 

A snapshot is active

RDM_TRANS_NONE 

There is no transaction active

131 {
132  RDM_TRANS_READ = 1,
Definition: rdmtypes.h:135
Definition: rdmtypes.h:132
RDM_TRANS_STATUS
The RDM transaction status identifiers.
Definition: rdmtypes.h:130
Definition: rdmtypes.h:134
Definition: rdmtypes.h:133

◆ RDM_TRIGGERS_STATUS

Triggers status values.

Enumerator
RDM_TRIGGERS_ON 

Triggers have been turned on

RDM_TRIGGERS_OFF 

Triggers have been turned off

RDM_TRIGGERS_UNDEFINED 

Triggers status has not been set yet

336 {
337  RDM_TRIGGERS_ON = 1,
338  RDM_TRIGGERS_OFF = -1,
Definition: rdmtypes.h:337
RDM_TRIGGERS_STATUS
Triggers status values.
Definition: rdmtypes.h:335
Definition: rdmtypes.h:339
Definition: rdmtypes.h:338

◆ RDM_USER_STATUS

The RDM user status.

Enumerator
RDM_U_EMPTY 

The user does not exist on the TFS

RDM_U_LIVE 

The user is in a normal state

148 {
149  RDM_U_EMPTY = 0,
150  RDM_U_LIVE
RDM_USER_STATUS
The RDM user status.
Definition: rdmtypes.h:147
Definition: rdmtypes.h:149
Definition: rdmtypes.h:150