diff --git a/src/R_modb_manage.c b/src/R_modb_manage.c index 26a16c9..093c478 100644 --- a/src/R_modb_manage.c +++ b/src/R_modb_manage.c @@ -121,7 +121,7 @@ SEXP modb_disconnect(SEXP r_conn_ref) SEXP modb_exists(SEXP r_conn_ref, SEXP r_name) { struct stored_conn_t *sconn; - struct modb_t modb; + struct modb_ref_t modb; if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { 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) { struct stored_conn_t *sconn; - struct modb_t modb; + struct modb_ref_t modb; struct column_data_t **cols; size_t n_cols; 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) { struct stored_conn_t *sconn; - struct modb_t modb; + struct modb_ref_t modb; if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { 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) { struct stored_conn_t *sconn; - struct modb_t modb; + struct modb_ref_t modb; if ((sconn = getConnectionByRef(r_conn_ref)) == 0) { Rf_error("invalid connection reference\n"); diff --git a/src/db_column.h b/src/db_column.h index b8d6868..321dc3c 100644 --- a/src/db_column.h +++ b/src/db_column.h @@ -70,6 +70,7 @@ struct column_data_t { uint8_t *nulls; }; +typedef struct column_data_t column_data; // Null column value handling - maybe convert these to macros? diff --git a/src/db_connection.h b/src/db_connection.h index 1e61ea6..5bad5f4 100644 --- a/src/db_connection.h +++ b/src/db_connection.h @@ -28,6 +28,7 @@ struct stored_conn_t { struct stored_conn_t *prev; struct stored_conn_t *next; }; +typedef struct stored_conn_t stored_conn; // Connections are stored in a linked list, these functions provide access struct stored_conn_t *connectionById(int conn_id); diff --git a/src/modb_manage.c b/src/modb_manage.c index f562385..ea994f6 100644 --- a/src/modb_manage.c +++ b/src/modb_manage.c @@ -10,21 +10,21 @@ #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; } -int modbFindUse(struct stored_conn_t *sconn, struct modb_t *modb) +int modbFindUse(stored_conn *sconn, modb_ref *modb) { return connectionGetUse(sconn, modb) == 1; } -void modbReleaseUse(struct stored_conn_t *sconn) +void modbReleaseUse(stored_conn *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) { return 0; @@ -47,11 +47,11 @@ int modbCreate(struct stored_conn_t *sconn, struct modb_t *modb) 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)); } -int modbDestroy(struct stored_conn_t *sconn, struct modb_t *modb) +int modbDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 | 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; } -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) { return 0; @@ -78,11 +78,11 @@ int modbAccountingCreate(struct stored_conn_t *sconn, struct modb_t *modb) 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)); } -int modbAccountingDestroy(struct stored_conn_t *sconn, struct modb_t *modb) +int modbAccountingDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 | 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; } -int modbMetaExtCreate(struct stored_conn_t *sconn, struct modb_t *modb, - struct column_data_t **col_data, size_t cols) +int modbMetaExtCreate(stored_conn *sconn, modb_ref *modb, + column_data **col_data, size_t cols) { uint64_t err = 0 | createMetaExtTable(sconn, modb, col_data, cols); 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)); } -int modbMetaExtDestroy(struct stored_conn_t *sconn, struct modb_t *modb) +int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 | destroyTable(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); diff --git a/src/modb_manage.h b/src/modb_manage.h index a45c6ba..c92e3d7 100644 --- a/src/modb_manage.h +++ b/src/modb_manage.h @@ -6,24 +6,24 @@ // Connection reference -int modbUse(struct stored_conn_t *sconn, struct modb_t *modb, int override); -int modbFindUse(struct stored_conn_t *sconn, struct modb_t *modb); -void modbReleaseUse(struct stored_conn_t *sconn); +int modbUse(stored_conn *sconn, modb_ref *modb, int override); +int modbFindUse(stored_conn *sconn, modb_ref *modb); +void modbReleaseUse(stored_conn *sconn); // MODB instance -int modbCreate(struct stored_conn_t *sconn, struct modb_t *modb); -int modbExists(struct stored_conn_t *sconn, struct modb_t *modb); -int modbDestroy(struct stored_conn_t *sconn, struct modb_t *modb); +int modbCreate(stored_conn *sconn, modb_ref *modb); +int modbExists(stored_conn *sconn, modb_ref *modb); +int modbDestroy(stored_conn *sconn, modb_ref *modb); -int modbAccountingCreate(struct stored_conn_t *sconn, struct modb_t *modb); -int modbAccountingExists(struct stored_conn_t *sconn, struct modb_t *modb); -int modbAccountingDestroy(struct stored_conn_t *sconn, struct modb_t *modb); +int modbAccountingCreate(stored_conn *sconn, modb_ref *modb); +int modbAccountingExists(stored_conn *sconn, modb_ref *modb); +int modbAccountingDestroy(stored_conn *sconn, modb_ref *modb); -int modbMetaExtCreate(struct stored_conn_t *sconn, struct modb_t *modb, - struct column_data_t **col_data, size_t cols); -int modbMetaExtExists(struct stored_conn_t *sconn, struct modb_t *modb); -int modbMetaExtDestroy(struct stored_conn_t *sconn, struct modb_t *modb); +int modbMetaExtCreate(stored_conn *sconn, modb_ref *modb, + column_data **col_data, size_t cols); +int modbMetaExtExists(stored_conn *sconn, modb_ref *modb); +int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb); #endif // H__MODB_MANAGE__ diff --git a/src/modb_manage_p.c b/src/modb_manage_p.c index 87b15ac..8e55cba 100644 --- a/src/modb_manage_p.c +++ b/src/modb_manage_p.c @@ -9,7 +9,7 @@ struct sconn_modb_use_t { - struct stored_conn_t *sconn; + stored_conn *sconn; char *modb_name; size_t modb_name_len; @@ -20,7 +20,7 @@ struct sconn_modb_use_t { 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; uint64_t res; @@ -46,7 +46,7 @@ uint64_t createSysTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; uint64_t res; @@ -76,7 +76,7 @@ uint64_t createMetaTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; uint64_t res; @@ -102,7 +102,7 @@ uint64_t createObjectsTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; uint64_t res; @@ -130,7 +130,7 @@ uint64_t createMDOGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; uint64_t res; @@ -162,7 +162,7 @@ uint64_t createUsersTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; uint64_t res; @@ -192,7 +192,7 @@ uint64_t createGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb) 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; 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; size_t colstr_len; @@ -297,8 +297,8 @@ char *createColString(struct column_data_t *col) return colstr; } -uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb, - struct column_data_t **col_data, size_t cols) +uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb, + column_data **col_data, size_t cols) { char *qry; uint64_t res; @@ -314,7 +314,7 @@ uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb, strbld_str(sb, "` (" "`mdo_id` INT UNSIGNED NOT NULL", 0); 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) { strbld_destroy(&sb); 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, - const char *suffix, size_t suffix_len) +int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) { char *qry, *res; 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, - const char *suffix, size_t suffix_len) +uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) { char *qry; 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 *tail; @@ -451,7 +449,7 @@ void freeUse(struct sconn_modb_use_t *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; char *old_name; @@ -495,7 +493,7 @@ int connectionUseMODB(struct stored_conn_t *sconn, struct modb_t *modb, int over 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; @@ -512,7 +510,7 @@ int connectionGetUse(struct stored_conn_t *sconn, struct modb_t *modb) return 0; } -void connectionReleaseMODB(struct stored_conn_t *sconn) +void connectionReleaseMODB(stored_conn *sconn) { struct sconn_modb_use_t *ptr = storedUses; diff --git a/src/modb_manage_p.h b/src/modb_manage_p.h index 71cda3f..60f8006 100644 --- a/src/modb_manage_p.h +++ b/src/modb_manage_p.h @@ -8,26 +8,24 @@ #include "modb_types.h" -uint64_t createSysTable(struct stored_conn_t *sconn, struct modb_t *modb); -uint64_t createMetaTable(struct stored_conn_t *sconn, struct modb_t *modb); -uint64_t createObjectsTable(struct stored_conn_t *sconn, struct modb_t *modb); -uint64_t createMDOGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); +uint64_t createSysTable(stored_conn *sconn, modb_ref *modb); +uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb); +uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb); +uint64_t createMDOGroupsTable(stored_conn *sconn, modb_ref *modb); -uint64_t createUsersTable(struct stored_conn_t *sconn, struct modb_t *modb); -uint64_t createGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); -uint64_t createUserGroupsTable(struct stored_conn_t *sconn, struct modb_t *modb); +uint64_t createUsersTable(stored_conn *sconn, modb_ref *modb); +uint64_t createGroupsTable(stored_conn *sconn, modb_ref *modb); +uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb); -uint64_t createMetaExtTable(struct stored_conn_t *sconn, struct modb_t *modb, - struct column_data_t **col_data, size_t cols); +uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb, + column_data **col_data, size_t cols); -int tableExists(struct stored_conn_t *sconn, struct modb_t *modb, - const char *suffix, size_t suffix_len); +int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); -uint64_t destroyTable(struct stored_conn_t *sconn, struct modb_t *modb, - const char *suffix, size_t suffix_len); +uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); -int connectionUseMODB(struct stored_conn_t *sconn, struct modb_t *modb, int override); -int connectionGetUse(struct stored_conn_t *sconn, struct modb_t *modb); -void connectionReleaseMODB(struct stored_conn_t *sconn); +int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override); +int connectionGetUse(stored_conn *sconn, modb_ref *modb); +void connectionReleaseMODB(stored_conn *sconn); #endif // H__MODB_P__ diff --git a/src/modb_p.c b/src/modb_p.c index 6424d18..40d04b8 100644 --- a/src/modb_p.c +++ b/src/modb_p.c @@ -1,7 +1,7 @@ #include "modb_p.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; char *str; @@ -20,14 +20,14 @@ char *modbTableName(struct modb_t *modb, const char *suffix, size_t suffix_len) 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, suffix, suffix_len); } -char *modbColumnName(struct modb_t *modb, +char *modbColumnName(modb_ref *modb, const char *table, size_t table_len, const char *column, size_t column_len) { @@ -47,7 +47,7 @@ char *modbColumnName(struct modb_t *modb, 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 *column, size_t column_len) { @@ -62,7 +62,7 @@ void modbColumnName_sb(str_builder *sb, struct modb_t *modb, strbld_char(sb, '`'); } -char *modbColumnNameAs(struct modb_t *modb, +char *modbColumnNameAs(modb_ref *modb, const char *table, size_t table_len, const char *column, size_t column_len, const char *as_column, size_t as_column_len) @@ -83,7 +83,7 @@ char *modbColumnNameAs(struct modb_t *modb, 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 *column, size_t column_len, const char *as_column, size_t as_column_len) diff --git a/src/modb_p.h b/src/modb_p.h index af050a0..1bb24a1 100644 --- a/src/modb_p.h +++ b/src/modb_p.h @@ -19,21 +19,21 @@ #define META_EXT_TABLE "_meta_ext" -char *modbTableName(struct modb_t *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); +char *modbTableName(modb_ref *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 *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 *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 *column, size_t 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 *column, size_t column_len, const char *as_column, size_t as_column_len); diff --git a/src/modb_types.h b/src/modb_types.h index f1ef665..5c67bf2 100644 --- a/src/modb_types.h +++ b/src/modb_types.h @@ -4,10 +4,11 @@ #include #include -struct modb_t { +struct modb_ref_t { const char *name; size_t name_len; }; +typedef struct modb_ref_t modb_ref; #endif // H__MODB_TYPES__