Typedef'd some structs to make code readability easier

This commit is contained in:
2020-10-06 15:00:13 +01:00
parent 14032f98cf
commit 4937b58c98
10 changed files with 78 additions and 79 deletions

View File

@@ -121,7 +121,7 @@ SEXP modb_disconnect(SEXP r_conn_ref)
SEXP modb_exists(SEXP r_conn_ref, SEXP r_name) SEXP modb_exists(SEXP r_conn_ref, SEXP r_name)
{ {
struct stored_conn_t *sconn; struct stored_conn_t *sconn;
struct modb_t modb; struct modb_ref_t modb;
if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { if ((sconn = getConnectionByRef(r_conn_ref)) == 0) {
Rf_error("invalid connection reference\n"); Rf_error("invalid connection reference\n");
@@ -136,7 +136,7 @@ SEXP modb_exists(SEXP r_conn_ref, SEXP r_name)
SEXP modb_create(SEXP r_conn_ref, SEXP r_name, SEXP r_extra_meta) SEXP modb_create(SEXP r_conn_ref, SEXP r_name, SEXP r_extra_meta)
{ {
struct stored_conn_t *sconn; struct stored_conn_t *sconn;
struct modb_t modb; struct modb_ref_t modb;
struct column_data_t **cols; struct column_data_t **cols;
size_t n_cols; size_t n_cols;
SEXP r_col, r_col_name, r_col_type, r_col_null; SEXP r_col, r_col_name, r_col_type, r_col_null;
@@ -201,7 +201,7 @@ SEXP modb_create(SEXP r_conn_ref, SEXP r_name, SEXP r_extra_meta)
SEXP modb_destroy(SEXP r_conn_ref, SEXP r_name) SEXP modb_destroy(SEXP r_conn_ref, SEXP r_name)
{ {
struct stored_conn_t *sconn; struct stored_conn_t *sconn;
struct modb_t modb; struct modb_ref_t modb;
if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { if ((sconn = getConnectionByRef(r_conn_ref)) == 0) {
Rf_error("invalid connection reference\n"); Rf_error("invalid connection reference\n");
@@ -223,7 +223,7 @@ SEXP modb_destroy(SEXP r_conn_ref, SEXP r_name)
SEXP modb_use(SEXP r_conn_ref, SEXP r_name, SEXP r_override) SEXP modb_use(SEXP r_conn_ref, SEXP r_name, SEXP r_override)
{ {
struct stored_conn_t *sconn; struct stored_conn_t *sconn;
struct modb_t modb; struct modb_ref_t modb;
if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { if ((sconn = getConnectionByRef(r_conn_ref)) == 0) {
Rf_error("invalid connection reference\n"); Rf_error("invalid connection reference\n");

View File

@@ -70,6 +70,7 @@ struct column_data_t {
uint8_t *nulls; uint8_t *nulls;
}; };
typedef struct column_data_t column_data;
// Null column value handling - maybe convert these to macros? // Null column value handling - maybe convert these to macros?

View File

@@ -28,6 +28,7 @@ struct stored_conn_t {
struct stored_conn_t *prev; struct stored_conn_t *prev;
struct stored_conn_t *next; struct stored_conn_t *next;
}; };
typedef struct stored_conn_t stored_conn;
// Connections are stored in a linked list, these functions provide access // Connections are stored in a linked list, these functions provide access
struct stored_conn_t *connectionById(int conn_id); struct stored_conn_t *connectionById(int conn_id);

View File

@@ -10,21 +10,21 @@
#include "modb_manage_p.h" #include "modb_manage_p.h"
int modbUse(struct stored_conn_t *sconn, struct modb_t *modb, int override) int modbUse(stored_conn *sconn, modb_ref *modb, int override)
{ {
return connectionUseMODB(sconn, modb, override) == 0; return connectionUseMODB(sconn, modb, override) == 0;
} }
int modbFindUse(struct stored_conn_t *sconn, struct modb_t *modb) int modbFindUse(stored_conn *sconn, modb_ref *modb)
{ {
return connectionGetUse(sconn, modb) == 1; return connectionGetUse(sconn, modb) == 1;
} }
void modbReleaseUse(struct stored_conn_t *sconn) void modbReleaseUse(stored_conn *sconn)
{ {
connectionReleaseMODB(sconn); connectionReleaseMODB(sconn);
} }
int modbCreate(struct stored_conn_t *sconn, struct modb_t *modb) int modbCreate(stored_conn *sconn, modb_ref *modb)
{ {
if (createSysTable(sconn, modb) == (uint64_t)-1) { if (createSysTable(sconn, modb) == (uint64_t)-1) {
return 0; return 0;
@@ -47,11 +47,11 @@ int modbCreate(struct stored_conn_t *sconn, struct modb_t *modb)
return 1; return 1;
} }
int modbExists(struct stored_conn_t *sconn, struct modb_t *modb) int modbExists(stored_conn *sconn, modb_ref *modb)
{ {
return tableExists(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); return tableExists(sconn, modb, META_TABLE, STR_LEN(META_TABLE));
} }
int modbDestroy(struct stored_conn_t *sconn, struct modb_t *modb) int modbDestroy(stored_conn *sconn, modb_ref *modb)
{ {
uint64_t err = 0 uint64_t err = 0
| destroyTable(sconn, modb, MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE)) | destroyTable(sconn, modb, MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE))
@@ -61,7 +61,7 @@ int modbDestroy(struct stored_conn_t *sconn, struct modb_t *modb)
return err == 0; return err == 0;
} }
int modbAccountingCreate(struct stored_conn_t *sconn, struct modb_t *modb) int modbAccountingCreate(stored_conn *sconn, modb_ref *modb)
{ {
if (createUsersTable(sconn, modb) == (uint64_t)-1) { if (createUsersTable(sconn, modb) == (uint64_t)-1) {
return 0; return 0;
@@ -78,11 +78,11 @@ int modbAccountingCreate(struct stored_conn_t *sconn, struct modb_t *modb)
return 1; return 1;
} }
int modbAccountingExists(struct stored_conn_t *sconn, struct modb_t *modb) int modbAccountingExists(stored_conn *sconn, modb_ref *modb)
{ {
return tableExists(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); return tableExists(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE));
} }
int modbAccountingDestroy(struct stored_conn_t *sconn, struct modb_t *modb) int modbAccountingDestroy(stored_conn *sconn, modb_ref *modb)
{ {
uint64_t err = 0 uint64_t err = 0
| destroyTable(sconn, modb, USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE)) | destroyTable(sconn, modb, USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE))
@@ -91,18 +91,18 @@ int modbAccountingDestroy(struct stored_conn_t *sconn, struct modb_t *modb)
return err == 0; return err == 0;
} }
int modbMetaExtCreate(struct stored_conn_t *sconn, struct modb_t *modb, int modbMetaExtCreate(stored_conn *sconn, modb_ref *modb,
struct column_data_t **col_data, size_t cols) column_data **col_data, size_t cols)
{ {
uint64_t err = 0 uint64_t err = 0
| createMetaExtTable(sconn, modb, col_data, cols); | createMetaExtTable(sconn, modb, col_data, cols);
return err == 0; return err == 0;
} }
int modbMetaExtExists(struct stored_conn_t *sconn, struct modb_t *modb) int modbMetaExtExists(stored_conn *sconn, modb_ref *modb)
{ {
return tableExists(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); return tableExists(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE));
} }
int modbMetaExtDestroy(struct stored_conn_t *sconn, struct modb_t *modb) int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb)
{ {
uint64_t err = 0 uint64_t err = 0
| destroyTable(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); | destroyTable(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE));

View File

@@ -6,24 +6,24 @@
// Connection reference // Connection reference
int modbUse(struct stored_conn_t *sconn, struct modb_t *modb, int override); int modbUse(stored_conn *sconn, modb_ref *modb, int override);
int modbFindUse(struct stored_conn_t *sconn, struct modb_t *modb); int modbFindUse(stored_conn *sconn, modb_ref *modb);
void modbReleaseUse(struct stored_conn_t *sconn); void modbReleaseUse(stored_conn *sconn);
// MODB instance // MODB instance
int modbCreate(struct stored_conn_t *sconn, struct modb_t *modb); int modbCreate(stored_conn *sconn, modb_ref *modb);
int modbExists(struct stored_conn_t *sconn, struct modb_t *modb); int modbExists(stored_conn *sconn, modb_ref *modb);
int modbDestroy(struct stored_conn_t *sconn, struct modb_t *modb); int modbDestroy(stored_conn *sconn, modb_ref *modb);
int modbAccountingCreate(struct stored_conn_t *sconn, struct modb_t *modb); int modbAccountingCreate(stored_conn *sconn, modb_ref *modb);
int modbAccountingExists(struct stored_conn_t *sconn, struct modb_t *modb); int modbAccountingExists(stored_conn *sconn, modb_ref *modb);
int modbAccountingDestroy(struct stored_conn_t *sconn, struct modb_t *modb); int modbAccountingDestroy(stored_conn *sconn, modb_ref *modb);
int modbMetaExtCreate(struct stored_conn_t *sconn, struct modb_t *modb, int modbMetaExtCreate(stored_conn *sconn, modb_ref *modb,
struct column_data_t **col_data, size_t cols); column_data **col_data, size_t cols);
int modbMetaExtExists(struct stored_conn_t *sconn, struct modb_t *modb); int modbMetaExtExists(stored_conn *sconn, modb_ref *modb);
int modbMetaExtDestroy(struct stored_conn_t *sconn, struct modb_t *modb); int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb);
#endif // H__MODB_MANAGE__ #endif // H__MODB_MANAGE__

View File

@@ -9,7 +9,7 @@
struct sconn_modb_use_t { struct sconn_modb_use_t {
struct stored_conn_t *sconn; stored_conn *sconn;
char *modb_name; char *modb_name;
size_t modb_name_len; size_t modb_name_len;
@@ -20,7 +20,7 @@ struct sconn_modb_use_t {
static struct sconn_modb_use_t *storedUses = 0; static struct sconn_modb_use_t *storedUses = 0;
uint64_t createSysTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createSysTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -46,7 +46,7 @@ uint64_t createSysTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createMetaTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -76,7 +76,7 @@ uint64_t createMetaTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createObjectsTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -102,7 +102,7 @@ uint64_t createObjectsTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createMDOGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createMDOGroupsTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -130,7 +130,7 @@ uint64_t createMDOGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createUsersTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createUsersTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -162,7 +162,7 @@ uint64_t createUsersTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createGroupsTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -192,7 +192,7 @@ uint64_t createGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb)
return res; return res;
} }
uint64_t createUserGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb) uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -221,7 +221,7 @@ uint64_t createUserGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb)
} }
char *createColString(struct column_data_t *col) char *createColString(column_data *col)
{ {
char *colstr; char *colstr;
size_t colstr_len; size_t colstr_len;
@@ -297,8 +297,8 @@ char *createColString(struct column_data_t *col)
return colstr; return colstr;
} }
uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb, uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
struct column_data_t **col_data, size_t cols) column_data **col_data, size_t cols)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -314,7 +314,7 @@ uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb,
strbld_str(sb, "` (" strbld_str(sb, "` ("
"`mdo_id` INT UNSIGNED NOT NULL", 0); "`mdo_id` INT UNSIGNED NOT NULL", 0);
for (size_t c = 0; c < cols; c++) { for (size_t c = 0; c < cols; c++) {
struct column_data_t *col = *(col_data + c); column_data *col = *(col_data + c);
if ((colstr = createColString(col)) == 0) { if ((colstr = createColString(col)) == 0) {
strbld_destroy(&sb); strbld_destroy(&sb);
return (uint64_t)-1; return (uint64_t)-1;
@@ -334,8 +334,7 @@ uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb,
} }
int tableExists(struct stored_conn_t *sconn, struct modb_t *modb, int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len)
const char *suffix, size_t suffix_len)
{ {
char *qry, *res; char *qry, *res;
size_t qry_len; size_t qry_len;
@@ -378,8 +377,7 @@ int tableExists(struct stored_conn_t *sconn, struct modb_t *modb,
} }
uint64_t destroyTable(struct stored_conn_t *sconn, struct modb_t *modb, uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len)
const char *suffix, size_t suffix_len)
{ {
char *qry; char *qry;
uint64_t res; uint64_t res;
@@ -403,7 +401,7 @@ uint64_t destroyTable(struct stored_conn_t *sconn, struct modb_t *modb,
} }
struct sconn_modb_use_t *allocUse(struct stored_conn_t *sconn, struct modb_t *modb) struct sconn_modb_use_t *allocUse(stored_conn *sconn, modb_ref *modb)
{ {
struct sconn_modb_use_t *ptr = 0; struct sconn_modb_use_t *ptr = 0;
struct sconn_modb_use_t *tail; struct sconn_modb_use_t *tail;
@@ -451,7 +449,7 @@ void freeUse(struct sconn_modb_use_t *ptr)
free(ptr); free(ptr);
} }
int connectionUseMODB(struct stored_conn_t *sconn, struct modb_t *modb, int override) int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override)
{ {
struct sconn_modb_use_t *ptr = storedUses; struct sconn_modb_use_t *ptr = storedUses;
char *old_name; char *old_name;
@@ -495,7 +493,7 @@ int connectionUseMODB(struct stored_conn_t *sconn, struct modb_t *modb, int over
return 0; return 0;
} }
int connectionGetUse(struct stored_conn_t *sconn, struct modb_t *modb) int connectionGetUse(stored_conn *sconn, modb_ref *modb)
{ {
struct sconn_modb_use_t *ptr = storedUses; struct sconn_modb_use_t *ptr = storedUses;
@@ -512,7 +510,7 @@ int connectionGetUse(struct stored_conn_t *sconn, struct modb_t *modb)
return 0; return 0;
} }
void connectionReleaseMODB(struct stored_conn_t *sconn) void connectionReleaseMODB(stored_conn *sconn)
{ {
struct sconn_modb_use_t *ptr = storedUses; struct sconn_modb_use_t *ptr = storedUses;

View File

@@ -8,26 +8,24 @@
#include "modb_types.h" #include "modb_types.h"
uint64_t createSysTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createSysTable(stored_conn *sconn, modb_ref *modb);
uint64_t createMetaTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb);
uint64_t createObjectsTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb);
uint64_t createMDOGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createMDOGroupsTable(stored_conn *sconn, modb_ref *modb);
uint64_t createUsersTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createUsersTable(stored_conn *sconn, modb_ref *modb);
uint64_t createGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createGroupsTable(stored_conn *sconn, modb_ref *modb);
uint64_t createUserGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb);
uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb, uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb,
struct column_data_t **col_data, size_t cols); column_data **col_data, size_t cols);
int tableExists(struct stored_conn_t *sconn, struct modb_t *modb, int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len);
const char *suffix, size_t suffix_len);
uint64_t destroyTable(struct stored_conn_t *sconn, struct modb_t *modb, uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len);
const char *suffix, size_t suffix_len);
int connectionUseMODB(struct stored_conn_t *sconn, struct modb_t *modb, int override); int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override);
int connectionGetUse(struct stored_conn_t *sconn, struct modb_t *modb); int connectionGetUse(stored_conn *sconn, modb_ref *modb);
void connectionReleaseMODB(struct stored_conn_t *sconn); void connectionReleaseMODB(stored_conn *sconn);
#endif // H__MODB_P__ #endif // H__MODB_P__

View File

@@ -1,7 +1,7 @@
#include "modb_p.h" #include "modb_p.h"
#include "strext.h" #include "strext.h"
char *modbTableName(struct modb_t *modb, const char *suffix, size_t suffix_len) char *modbTableName(modb_ref *modb, const char *suffix, size_t suffix_len)
{ {
str_builder *sb; str_builder *sb;
char *str; char *str;
@@ -20,14 +20,14 @@ char *modbTableName(struct modb_t *modb, const char *suffix, size_t suffix_len)
return str; return str;
} }
void modbTableName_sb(str_builder *sb, struct modb_t *modb, const char *suffix, size_t suffix_len) void modbTableName_sb(str_builder *sb, modb_ref *modb, const char *suffix, size_t suffix_len)
{ {
strbld_str(sb, modb->name, modb->name_len); strbld_str(sb, modb->name, modb->name_len);
strbld_str(sb, suffix, suffix_len); strbld_str(sb, suffix, suffix_len);
} }
char *modbColumnName(struct modb_t *modb, char *modbColumnName(modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len) const char *column, size_t column_len)
{ {
@@ -47,7 +47,7 @@ char *modbColumnName(struct modb_t *modb,
return str; return str;
} }
void modbColumnName_sb(str_builder *sb, struct modb_t *modb, void modbColumnName_sb(str_builder *sb, modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len) const char *column, size_t column_len)
{ {
@@ -62,7 +62,7 @@ void modbColumnName_sb(str_builder *sb, struct modb_t *modb,
strbld_char(sb, '`'); strbld_char(sb, '`');
} }
char *modbColumnNameAs(struct modb_t *modb, char *modbColumnNameAs(modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len, const char *column, size_t column_len,
const char *as_column, size_t as_column_len) const char *as_column, size_t as_column_len)
@@ -83,7 +83,7 @@ char *modbColumnNameAs(struct modb_t *modb,
return str; return str;
} }
void modbColumnNameAs_sb(str_builder *sb, struct modb_t *modb, void modbColumnNameAs_sb(str_builder *sb, modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len, const char *column, size_t column_len,
const char *as_column, size_t as_column_len) const char *as_column, size_t as_column_len)

View File

@@ -19,21 +19,21 @@
#define META_EXT_TABLE "_meta_ext" #define META_EXT_TABLE "_meta_ext"
char *modbTableName(struct modb_t *modb, const char *suffix, size_t suffix_len); char *modbTableName(modb_ref *modb, const char *suffix, size_t suffix_len);
void modbTableName_sb(str_builder *sb, struct modb_t *modb, const char *suffix, size_t suffix_len); void modbTableName_sb(str_builder *sb, modb_ref *modb, const char *suffix, size_t suffix_len);
char *modbColumnName(struct modb_t *modb, char *modbColumnName(modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len); const char *column, size_t column_len);
void modbColumnName_sb(str_builder *sb, struct modb_t *modb, void modbColumnName_sb(str_builder *sb, modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len); const char *column, size_t column_len);
char *modbColumnNameAs(struct modb_t *modb, char *modbColumnNameAs(modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len, const char *column, size_t column_len,
const char *as_column, size_t as_column_len); const char *as_column, size_t as_column_len);
void modbColumnNameAs_sb(str_builder *sb, struct modb_t *modb, void modbColumnNameAs_sb(str_builder *sb, modb_ref *modb,
const char *table, size_t table_len, const char *table, size_t table_len,
const char *column, size_t column_len, const char *column, size_t column_len,
const char *as_column, size_t as_column_len); const char *as_column, size_t as_column_len);

View File

@@ -4,10 +4,11 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
struct modb_t { struct modb_ref_t {
const char *name; const char *name;
size_t name_len; size_t name_len;
}; };
typedef struct modb_ref_t modb_ref;
#endif // H__MODB_TYPES__ #endif // H__MODB_TYPES__