Flipped params of wherebuilder (breaking commit)
This commit is contained in:
@@ -24,7 +24,7 @@ where_builder *createWhereBuilder(where_builder *initial_clause)
|
||||
|
||||
return wb;
|
||||
}
|
||||
int compileWhereBuilder(where_builder *wb, char **str, size_t *str_len, int free_wb)
|
||||
int compileWhereBuilder(char **str, size_t *str_len, where_builder *wb, int free_wb)
|
||||
{
|
||||
struct str_builder_t *sb;
|
||||
|
||||
@@ -32,14 +32,21 @@ int compileWhereBuilder(where_builder *wb, char **str, size_t *str_len, int free
|
||||
return -1;
|
||||
}
|
||||
|
||||
compileWhereBuilder_sb(wb, sb, free_wb);
|
||||
compileWhereBuilder_sb(sb, wb, free_wb);
|
||||
|
||||
return strbld_finalize_or_destroy(&sb, str, str_len);
|
||||
}
|
||||
void compileWhereBuilder_sb(where_builder *wb, str_builder *sb, int free_wb)
|
||||
void compileWhereBuilder_sb(str_builder *sb, where_builder *wb, int free_wb)
|
||||
{
|
||||
wb = finalizeWhere(wb);
|
||||
strbld_str(sb, " WHERE ", 7);
|
||||
do_compileWhereBuilder_sb(wb, sb, free_wb);
|
||||
do_compileWhereBuilder_sb(sb, wb);
|
||||
if (strbld_len(sb) == 7) {
|
||||
strbld_seek(sb, 0, 1);
|
||||
}
|
||||
if (free_wb) {
|
||||
freeWhereBuilder(&wb);
|
||||
}
|
||||
}
|
||||
void freeWhereBuilder(where_builder **wb_ptr)
|
||||
{
|
||||
|
||||
@@ -40,8 +40,8 @@ typedef struct where_builder_t where_builder;
|
||||
|
||||
|
||||
where_builder *createWhereBuilder(where_builder *initial_clause);
|
||||
int compileWhereBuilder(where_builder *wb, char **str, size_t *str_len, int free_wb);
|
||||
void compileWhereBuilder_sb(where_builder *wb, str_builder *sb, int free_wb);
|
||||
int compileWhereBuilder(char **str, size_t *str_len, where_builder *wb, int free_wb);
|
||||
void compileWhereBuilder_sb(str_builder *sb, where_builder *wb, int free_wb);
|
||||
void freeWhereBuilder(where_builder **wb_ptr);
|
||||
|
||||
|
||||
|
||||
@@ -4,18 +4,18 @@
|
||||
|
||||
#include "db_where-builder_p.h"
|
||||
|
||||
void do_compileWhereBuilder_sb(where_builder *wb, str_builder *sb, int free_wb)
|
||||
void do_compileWhereBuilder_sb(str_builder *sb, where_builder *wb)
|
||||
{
|
||||
switch(wb->logic_type) {
|
||||
case CLAUSE:
|
||||
{
|
||||
compileWhere_sb((where_clause *)wb, sb);
|
||||
compileWhere_sb(sb, (where_clause *)wb);
|
||||
break;
|
||||
}
|
||||
case OR:
|
||||
case AND:
|
||||
{
|
||||
compileLogic_sb((where_logic *)wb, sb);
|
||||
compileLogic_sb(sb, (where_logic *)wb);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -23,9 +23,6 @@ void do_compileWhereBuilder_sb(where_builder *wb, str_builder *sb, int free_wb)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (free_wb) {
|
||||
freeWhereBuilder(&wb);
|
||||
}
|
||||
}
|
||||
|
||||
where_logic *createLogic(e_where_logic type, size_t initial_size)
|
||||
@@ -55,7 +52,7 @@ where_logic *createLogic(e_where_logic type, size_t initial_size)
|
||||
|
||||
return logic;
|
||||
}
|
||||
void compileLogic_sb(where_logic *logic, str_builder *sb)
|
||||
void compileLogic_sb(str_builder *sb, where_logic *logic)
|
||||
{
|
||||
if (logic->n_clauses == 0) {
|
||||
return;
|
||||
@@ -63,7 +60,7 @@ void compileLogic_sb(where_logic *logic, str_builder *sb)
|
||||
|
||||
strbld_char(sb, '(');
|
||||
for (size_t i = 0; i < logic->n_clauses; i++) {
|
||||
do_compileWhereBuilder_sb(logic->clauses[i], sb, 0);
|
||||
do_compileWhereBuilder_sb(sb, logic->clauses[i]);
|
||||
if (i < (logic->n_clauses - 1)) {
|
||||
if (logic->logic_type == OR) {
|
||||
strbld_str(sb, " OR ", 4);
|
||||
@@ -165,7 +162,7 @@ where_clause *createWhere(const char *tbl, const char *col, e_where_op op)
|
||||
|
||||
return clause;
|
||||
}
|
||||
void compileWhere_sb(where_clause *clause, str_builder *sb)
|
||||
void compileWhere_sb(str_builder *sb, where_clause *clause)
|
||||
{
|
||||
size_t idx;
|
||||
|
||||
|
||||
@@ -50,12 +50,12 @@ struct where_clause_t {
|
||||
typedef struct where_clause_t where_clause;
|
||||
|
||||
DLL_LOCAL
|
||||
void do_compileWhereBuilder_sb(where_builder *wb, str_builder *sb, int free_wb);
|
||||
void do_compileWhereBuilder_sb(str_builder *sb, where_builder *wb);
|
||||
|
||||
DLL_LOCAL
|
||||
where_logic *createLogic(e_where_logic type, size_t initial_size);
|
||||
DLL_LOCAL
|
||||
void compileLogic_sb(where_logic *logic, str_builder *sb);
|
||||
void compileLogic_sb(str_builder *sb, where_logic *logic);
|
||||
DLL_LOCAL
|
||||
void freeLogic(where_logic **logic_ptr);
|
||||
|
||||
@@ -65,7 +65,7 @@ where_builder *appendLogicClause(where_builder *wb, where_builder *wb_clause);
|
||||
DLL_LOCAL
|
||||
where_clause *createWhere(const char *tbl, const char *col, e_where_op op);
|
||||
DLL_LOCAL
|
||||
void compileWhere_sb(where_clause *clause, str_builder *sb);
|
||||
void compileWhere_sb(str_builder *sb, where_clause *clause);
|
||||
DLL_LOCAL
|
||||
void freeWhere(where_clause **where_ptr);
|
||||
|
||||
|
||||
19
src/strext.c
19
src/strext.c
@@ -184,6 +184,25 @@ int strbld_ensure_len(str_builder *sb, size_t len, int absolute)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int strbld_seek(str_builder *sb, size_t to, int zero)
|
||||
{
|
||||
if (to > sb->alloc) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (zero && to < sb->len) {
|
||||
memset(sb->str + to, 0, sb->len - to);
|
||||
}
|
||||
|
||||
sb->len = to;
|
||||
|
||||
return 1;
|
||||
}
|
||||
size_t strbld_len(str_builder *sb)
|
||||
{
|
||||
return sb->len;
|
||||
}
|
||||
|
||||
int strbld_str(str_builder *sb, const char *str, size_t len)
|
||||
{
|
||||
if (sb->fails > 0) {
|
||||
|
||||
@@ -26,6 +26,9 @@ int strbld_finalize_or_destroy(str_builder **sb, char **str, size_t *len);
|
||||
|
||||
int strbld_ensure_len(str_builder *sb, size_t len, int absolute);
|
||||
|
||||
int strbld_seek(str_builder *sb, size_t to, int zero);
|
||||
size_t strbld_len(str_builder *sb);
|
||||
|
||||
int strbld_str(str_builder *sb, const char *str, size_t len);
|
||||
int strbld_char(str_builder *sb, const char c);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user