libidav/davqlexec.h

changeset 747
efbd59642577
parent 365
f04ab0420512
equal deleted inserted replaced
746:a569148841ff 747:efbd59642577
30 30
31 #include <stdarg.h> 31 #include <stdarg.h>
32 #include "davqlparser.h" 32 #include "davqlparser.h"
33 #include "webdav.h" 33 #include "webdav.h"
34 34
35 #include <ucx/buffer.h> 35 #include <cx/buffer.h>
36 36
37 #ifdef __cplusplus 37 #ifdef __cplusplus
38 extern "C" { 38 extern "C" {
39 #endif 39 #endif
40 40
64 }; 64 };
65 65
66 typedef enum { 66 typedef enum {
67 DAVQL_OK = 0, 67 DAVQL_OK = 0,
68 DAVQL_UNSUPPORTED_FORMATCHAR, 68 DAVQL_UNSUPPORTED_FORMATCHAR,
69 DAVQL_UNKNOWN_FORMATCHAR 69 DAVQL_UNKNOWN_FORMATCHAR,
70 DAVQL_OOM
70 } davqlerror_t; 71 } davqlerror_t;
71 72
72 typedef enum { 73 typedef enum {
73 DAVQL_CMD_INT = 0, 74 DAVQL_CMD_INT = 0,
74 DAVQL_CMD_STRING, 75 DAVQL_CMD_STRING,
114 115
115 struct DavQLCmd { 116 struct DavQLCmd {
116 davqlcmdtype_t type; 117 davqlcmdtype_t type;
117 union DavQLCmdData { 118 union DavQLCmdData {
118 int64_t integer; 119 int64_t integer;
119 sstr_t string; 120 cxmutstr string;
120 time_t timestamp; 121 time_t timestamp;
121 davqlresprop_t resprop; 122 davqlresprop_t resprop;
122 DavPropName property; 123 DavPropName property;
123 davql_func func; 124 davql_func func;
124 } data; 125 } data;
140 }; 141 };
141 142
142 typedef struct DavCompiledField { 143 typedef struct DavCompiledField {
143 char *ns; 144 char *ns;
144 char *name; 145 char *name;
145 UcxBuffer *code; 146 CxBuffer *code;
146 } DavCompiledField; 147 } DavCompiledField;
147 148
148 typedef struct DavOrderCriterion { 149 typedef struct DavOrderCriterion {
149 int type; // 0: resprop, 1: property 150 int type; // 0: resprop, 1: property
150 union DavQLColumn { 151 union DavQLColumn {
151 davqlresprop_t resprop; 152 davqlresprop_t resprop;
152 UcxKey property; 153 CxHashKey property;
153 } column; 154 } column;
154 _Bool descending; 155 _Bool descending;
155 } DavOrderCriterion; 156 } DavOrderCriterion;
156 157
157 DavQLArgList* dav_ql_get_args(DavQLStatement *st, va_list ap); 158 DavQLArgList* dav_ql_get_args(DavQLStatement *st, va_list ap);
163 time_t dav_ql_getarg_time(DavQLArgList *args); 164 time_t dav_ql_getarg_time(DavQLArgList *args);
164 165
165 DavResult dav_statement_exec(DavSession *sn, DavQLStatement *st, ...); 166 DavResult dav_statement_exec(DavSession *sn, DavQLStatement *st, ...);
166 DavResult dav_statement_execv(DavSession *sn, DavQLStatement *st, va_list ap); 167 DavResult dav_statement_execv(DavSession *sn, DavQLStatement *st, va_list ap);
167 168
168 UcxBuffer* dav_path_string(sstr_t src, DavQLArgList *args, davqlerror_t *error); 169 CxBuffer* dav_path_string(cxmutstr src, DavQLArgList *args, davqlerror_t *error);
169 sstr_t dav_format_string(UcxAllocator *a, sstr_t fstr, DavQLArgList *ap, davqlerror_t *error); 170 cxmutstr dav_format_string(const CxAllocator *a, cxstring fstr, DavQLArgList *ap, davqlerror_t *error);
170 171
171 DavResult dav_exec_select(DavSession *sn, DavQLStatement *st, va_list ap); 172 DavResult dav_exec_select(DavSession *sn, DavQLStatement *st, va_list ap);
172 173
173 int dav_identifier2resprop(sstr_t src, davqlresprop_t *prop); 174 int dav_identifier2resprop(cxstring src, davqlresprop_t *prop);
174 175
175 UcxBuffer* dav_compile_expr(DavContext *ctx, UcxAllocator *a, DavQLExpression *lexpr, DavQLArgList *ap); 176 CxBuffer* dav_compile_expr(DavContext *ctx, const CxAllocator *a, DavQLExpression *lexpr, DavQLArgList *ap);
176 177
177 int dav_exec_expr(UcxBuffer *bcode, DavResource *res, DavQLStackObj *result); 178 int dav_exec_expr(CxBuffer *bcode, DavResource *res, DavQLStackObj *result);
178 179
179 180
180 181
181 #ifdef __cplusplus 182 #ifdef __cplusplus
182 } 183 }

mercurial