54 DAVQL_CMD_INT = 0, |
54 DAVQL_CMD_INT = 0, |
55 DAVQL_CMD_STRING, |
55 DAVQL_CMD_STRING, |
56 DAVQL_CMD_TIMESTAMP, |
56 DAVQL_CMD_TIMESTAMP, |
57 DAVQL_CMD_RES_IDENTIFIER, |
57 DAVQL_CMD_RES_IDENTIFIER, |
58 DAVQL_CMD_PROP_IDENTIFIER, |
58 DAVQL_CMD_PROP_IDENTIFIER, |
59 DAVQL_CMD_OP_UNARY_ADD, |
59 //DAVQL_CMD_OP_UNARY_ADD, |
60 DAVQL_CMD_OP_UNARY_SUB, |
60 DAVQL_CMD_OP_UNARY_SUB, |
61 DAVQL_CMD_OP_UNARY_NEG, |
61 DAVQL_CMD_OP_UNARY_NEG, |
62 DAVQL_CMD_OP_BINARY_ADD, |
62 DAVQL_CMD_OP_BINARY_ADD, |
63 DAVQL_CMD_OP_BINARY_SUB, |
63 DAVQL_CMD_OP_BINARY_SUB, |
64 DAVQL_CMD_OP_BINARY_MUL, |
64 DAVQL_CMD_OP_BINARY_MUL, |
122 typedef struct DavCompiledField { |
122 typedef struct DavCompiledField { |
123 char *ns; |
123 char *ns; |
124 char *name; |
124 char *name; |
125 UcxBuffer *code; |
125 UcxBuffer *code; |
126 } DavCompiledField; |
126 } DavCompiledField; |
|
127 |
|
128 typedef struct DavOrderCriterion { |
|
129 int type; // 0: resprop, 1: property |
|
130 union DavQLColumn { |
|
131 davqlresprop_t resprop; |
|
132 UcxKey property; |
|
133 } column; |
|
134 _Bool descending; |
|
135 } DavOrderCriterion; |
127 |
136 |
128 DavResult dav_statement_exec(DavSession *sn, DavQLStatement *st, ...); |
137 DavResult dav_statement_exec(DavSession *sn, DavQLStatement *st, ...); |
129 DavResult dav_statement_execv(DavSession *sn, DavQLStatement *st, va_list ap); |
138 DavResult dav_statement_execv(DavSession *sn, DavQLStatement *st, va_list ap); |
130 |
139 |
131 UcxBuffer* dav_path_string(sstr_t src, va_list ap, davqlerror_t *error); |
140 UcxBuffer* dav_path_string(sstr_t src, va_list ap, davqlerror_t *error); |
132 sstr_t dav_format_string(UcxAllocator *a, sstr_t fstr, va_list ap, davqlerror_t *error); |
141 sstr_t dav_format_string(UcxAllocator *a, sstr_t fstr, va_list ap, davqlerror_t *error); |
133 |
142 |
134 DavResult dav_exec_select(DavSession *sn, DavQLStatement *st, va_list ap); |
143 DavResult dav_exec_select(DavSession *sn, DavQLStatement *st, va_list ap); |
|
144 |
|
145 int dav_identifier2resprop(sstr_t src, davqlresprop_t *prop); |
135 |
146 |
136 UcxBuffer* dav_compile_expr(DavContext *ctx, UcxAllocator *a, DavQLExpression *lexpr, va_list ap); |
147 UcxBuffer* dav_compile_expr(DavContext *ctx, UcxAllocator *a, DavQLExpression *lexpr, va_list ap); |
137 |
148 |
138 int dav_exec_expr(UcxBuffer *bcode, DavResource *res, DavQLStackObj *result); |
149 int dav_exec_expr(UcxBuffer *bcode, DavResource *res, DavQLStackObj *result); |
139 |
150 |