libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-struct.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  lejp_collation
 
struct  lws_struct_map
 
struct  lws_struct_args
 
struct  lws_struct_serialize_st
 
struct  lws_struct_serialize
 

Macros

#define LSM_SIGNED(type, name, qname)
 
#define LSM_UNSIGNED(type, name, qname)
 
#define LSM_BOOLEAN(type, name, qname)
 
#define LSM_CARRAY(type, name, qname)
 
#define LSM_STRING_PTR(type, name, qname)
 
#define LSM_LIST(ptype, pname, ctype, cname, lejp_cb, cmap, qname)
 
#define LSM_CHILD_PTR(ptype, pname, ctype, lejp_cb, cmap, qname)
 
#define LSM_SCHEMA(ctype, lejp_cb, map, schema_name)
 
#define LSM_SCHEMA_DLL2(ctype, cdll2mem, lejp_cb, map, schema_name)
 
#define LSM_BLOB_PTR(type, blobptr_name, qname)
 

Typedefs

typedef struct lejp_collation lejp_collation_t
 
typedef struct lws_struct_map lws_struct_map_t
 
typedef int(* lws_struct_args_cb) (void *obj, void *cb_arg)
 
typedef struct lws_struct_args lws_struct_args_t
 
typedef struct lws_struct_serialize_st lws_struct_serialize_st_t
 
typedef struct lws_struct_serialize lws_struct_serialize_t
 
typedef struct sqlite3 sqlite3
 

Enumerations

enum  lws_struct_map_type_eum {
  LSMT_SIGNED , LSMT_UNSIGNED , LSMT_BOOLEAN , LSMT_STRING_CHAR_ARRAY ,
  LSMT_STRING_PTR , LSMT_LIST , LSMT_CHILD_PTR , LSMT_SCHEMA ,
  LSMT_BLOB_PTR
}
 
enum  { LSSERJ_FLAG_PRETTY = (1 << 0) , LSSERJ_FLAG_OMIT_SCHEMA = (1 << 1) }
 
enum  lws_struct_json_serialize_result_t { LSJS_RESULT_CONTINUE , LSJS_RESULT_FINISH , LSJS_RESULT_ERROR }
 

Functions

LWS_VISIBLE LWS_EXTERN int lws_struct_json_init_parse (struct lejp_ctx *ctx, lejp_callback cb, void *user)
 
LWS_VISIBLE LWS_EXTERN signed char lws_struct_schema_only_lejp_cb (struct lejp_ctx *ctx, char reason)
 
LWS_VISIBLE LWS_EXTERN signed char lws_struct_default_lejp_cb (struct lejp_ctx *ctx, char reason)
 
LWS_VISIBLE LWS_EXTERN lws_struct_serialize_tlws_struct_json_serialize_create (const lws_struct_map_t *map, size_t map_entries, int flags, const void *ptoplevel)
 
LWS_VISIBLE LWS_EXTERN void lws_struct_json_serialize_destroy (lws_struct_serialize_t **pjs)
 
LWS_VISIBLE LWS_EXTERN lws_struct_json_serialize_result_t lws_struct_json_serialize (lws_struct_serialize_t *js, uint8_t *buf, size_t len, size_t *written)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_serialize (sqlite3 *pdb, const lws_struct_map_t *schema, lws_dll2_owner_t *owner, uint32_t manual_idx)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_update (sqlite3 *pdb, const char *table, const lws_struct_map_t *map, size_t map_entries, const void *data, const char *where_col)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_upsert (sqlite3 *pdb, const char *table, const lws_struct_map_t *map, size_t map_entries, const void *data, const char *where_col)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_deserialize (sqlite3 *pdb, const char *filter, const char *order, const lws_struct_map_t *schema, lws_dll2_owner_t *o, struct lwsac **ac, int start, int limit)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_create_table (sqlite3 *pdb, const lws_struct_map_t *schema)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_open (struct lws_context *context, const char *sqlite3_path, char create_if_missing, sqlite3 **pdb)
 
LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_close (sqlite3 **pdb)
 

Data Structure Documentation

◆ lejp_collation

struct lejp_collation

Definition at line 42 of file lws-struct.h.

+ Collaboration diagram for lejp_collation:
Data Fields
struct lws_dll2 chunks
int len
char buf[LEJP_STRING_CHUNK+1]

◆ lws_struct_map

struct lws_struct_map

Definition at line 48 of file lws-struct.h.

+ Collaboration diagram for lws_struct_map:
Data Fields
const char * colname
const struct lws_struct_map * child_map
lejp_callback lejp_cb
size_t ofs
size_t aux
size_t ofs_clist
size_t child_map_size
lws_struct_map_type_eum type

◆ lws_struct_args

struct lws_struct_args

Definition at line 61 of file lws-struct.h.

+ Collaboration diagram for lws_struct_args:
Data Fields
const lws_struct_map_t * map_st[LEJP_MAX_PARSING_STACK_DEPTH]
lws_struct_args_cb cb
struct lwsac * ac
void * cb_arg
void * dest
size_t dest_len
size_t toplevel_dll2_ofs
size_t map_entries_st[LEJP_MAX_PARSING_STACK_DEPTH]
size_t ac_block_size
int subtype
int top_schema_index
struct lwsac * ac_chunks
struct lws_dll2_owner chunks_owner
size_t chunks_length

◆ lws_struct_serialize_st

struct lws_struct_serialize_st

Definition at line 210 of file lws-struct.h.

+ Collaboration diagram for lws_struct_serialize_st:
Data Fields
const struct lws_dll2 * dllpos
const lws_struct_map_t * map
const char * obj
size_t map_entries
size_t map_entry
size_t size
char subsequent
char idt

◆ lws_struct_serialize

struct lws_struct_serialize

Definition at line 226 of file lws-struct.h.

+ Collaboration diagram for lws_struct_serialize:
Data Fields
lws_struct_serialize_st_t st[LEJP_MAX_PARSING_STACK_DEPTH]
size_t offset
size_t remaining
int sp
int flags

Macro Definition Documentation

◆ LSM_SIGNED

#define LSM_SIGNED ( type,
name,
qname )
Value:
{ \
qname, \
NULL, \
NULL, \
offsetof(type, name), \
sizeof ((type *)0)->name, \
0, \
0, \
}
@ LSMT_SIGNED
Definition lws-struct.h:30

Definition at line 85 of file lws-struct.h.

85#define LSM_SIGNED(type, name, qname) \
86 { \
87 qname, \
88 NULL, \
89 NULL, \
90 offsetof(type, name), \
91 sizeof ((type *)0)->name, \
92 0, \
93 0, \
94 LSMT_SIGNED \
95 }

◆ LSM_UNSIGNED

#define LSM_UNSIGNED ( type,
name,
qname )
Value:
{ \
qname, \
NULL, \
NULL, \
offsetof(type, name), \
sizeof ((type *)0)->name, \
0, \
0, \
}
@ LSMT_UNSIGNED
Definition lws-struct.h:31

Definition at line 97 of file lws-struct.h.

97#define LSM_UNSIGNED(type, name, qname) \
98 { \
99 qname, \
100 NULL, \
101 NULL, \
102 offsetof(type, name), \
103 sizeof ((type *)0)->name, \
104 0, \
105 0, \
106 LSMT_UNSIGNED \
107 }

◆ LSM_BOOLEAN

#define LSM_BOOLEAN ( type,
name,
qname )
Value:
{ \
qname, \
NULL, \
NULL, \
offsetof(type, name), \
sizeof ((type *)0)->name, \
0, \
0, \
}
@ LSMT_BOOLEAN
Definition lws-struct.h:32

Definition at line 109 of file lws-struct.h.

109#define LSM_BOOLEAN(type, name, qname) \
110 { \
111 qname, \
112 NULL, \
113 NULL, \
114 offsetof(type, name), \
115 sizeof ((type *)0)->name, \
116 0, \
117 0, \
118 LSMT_BOOLEAN \
119 }

◆ LSM_CARRAY

#define LSM_CARRAY ( type,
name,
qname )
Value:
{ \
qname, \
NULL, \
NULL, \
offsetof(type, name), \
sizeof (((type *)0)->name), \
0, \
0, \
}
@ LSMT_STRING_CHAR_ARRAY
Definition lws-struct.h:33

Definition at line 121 of file lws-struct.h.

121#define LSM_CARRAY(type, name, qname) \
122 { \
123 qname, \
124 NULL, \
125 NULL, \
126 offsetof(type, name), \
127 sizeof (((type *)0)->name), \
128 0, \
129 0, \
130 LSMT_STRING_CHAR_ARRAY \
131 }

◆ LSM_STRING_PTR

#define LSM_STRING_PTR ( type,
name,
qname )
Value:
{ \
qname, \
NULL, \
NULL, \
offsetof(type, name), \
sizeof (((type *)0)->name), \
0, \
0, \
}
@ LSMT_STRING_PTR
Definition lws-struct.h:34

Definition at line 133 of file lws-struct.h.

133#define LSM_STRING_PTR(type, name, qname) \
134 { \
135 qname, \
136 NULL, \
137 NULL, \
138 offsetof(type, name), \
139 sizeof (((type *)0)->name), \
140 0, \
141 0, \
142 LSMT_STRING_PTR \
143 }

◆ LSM_LIST

#define LSM_LIST ( ptype,
pname,
ctype,
cname,
lejp_cb,
cmap,
qname )
Value:
{ \
qname, \
cmap, \
lejp_cb, \
offsetof(ptype, pname), \
sizeof (ctype), \
offsetof(ctype, cname), \
LWS_ARRAY_SIZE(cmap), \
}
@ LSMT_LIST
Definition lws-struct.h:35

Definition at line 145 of file lws-struct.h.

145#define LSM_LIST(ptype, pname, ctype, cname, lejp_cb, cmap, qname) \
146 { \
147 qname, \
148 cmap, \
149 lejp_cb, \
150 offsetof(ptype, pname), \
151 sizeof (ctype), \
152 offsetof(ctype, cname), \
153 LWS_ARRAY_SIZE(cmap), \
154 LSMT_LIST \
155 }

◆ LSM_CHILD_PTR

#define LSM_CHILD_PTR ( ptype,
pname,
ctype,
lejp_cb,
cmap,
qname )
Value:
{ \
qname, \
cmap, \
lejp_cb, \
offsetof(ptype, pname), \
sizeof (ctype), \
0, \
LWS_ARRAY_SIZE(cmap), \
}
@ LSMT_CHILD_PTR
Definition lws-struct.h:36

Definition at line 157 of file lws-struct.h.

157#define LSM_CHILD_PTR(ptype, pname, ctype, lejp_cb, cmap, qname) \
158 { \
159 qname, \
160 cmap, \
161 lejp_cb, \
162 offsetof(ptype, pname), \
163 sizeof (ctype), \
164 0, \
165 LWS_ARRAY_SIZE(cmap), \
166 LSMT_CHILD_PTR \
167 }

◆ LSM_SCHEMA

#define LSM_SCHEMA ( ctype,
lejp_cb,
map,
schema_name )
Value:
{ \
schema_name, \
map, \
lejp_cb, \
0, \
sizeof (ctype), \
0, \
LWS_ARRAY_SIZE(map), \
}
@ LSMT_SCHEMA
Definition lws-struct.h:37

Definition at line 169 of file lws-struct.h.

169#define LSM_SCHEMA(ctype, lejp_cb, map, schema_name) \
170 { \
171 schema_name, \
172 map, \
173 lejp_cb, \
174 0, \
175 sizeof (ctype), \
176 0, \
177 LWS_ARRAY_SIZE(map), \
178 LSMT_SCHEMA \
179 }

◆ LSM_SCHEMA_DLL2

#define LSM_SCHEMA_DLL2 ( ctype,
cdll2mem,
lejp_cb,
map,
schema_name )
Value:
{ \
schema_name, \
map, \
lejp_cb, \
offsetof(ctype, cdll2mem), \
sizeof (ctype), \
0, \
LWS_ARRAY_SIZE(map), \
}

Definition at line 181 of file lws-struct.h.

181#define LSM_SCHEMA_DLL2(ctype, cdll2mem, lejp_cb, map, schema_name) \
182 { \
183 schema_name, \
184 map, \
185 lejp_cb, \
186 offsetof(ctype, cdll2mem), \
187 sizeof (ctype), \
188 0, \
189 LWS_ARRAY_SIZE(map), \
190 LSMT_SCHEMA \
191 }

◆ LSM_BLOB_PTR

#define LSM_BLOB_PTR ( type,
blobptr_name,
qname )
Value:
{ \
qname, /* JSON item, or sqlite3 column name */ \
NULL, \
NULL, \
offsetof(type, blobptr_name), /* member that points to blob */ \
sizeof (((type *)0)->blobptr_name), /* size of blob pointer */ \
0, /* member holding blob len */ \
0, /* size of blob length member */ \
}
@ LSMT_BLOB_PTR
Definition lws-struct.h:38

Definition at line 198 of file lws-struct.h.

198#define LSM_BLOB_PTR(type, blobptr_name, qname) \
199 { \
200 qname, /* JSON item, or sqlite3 column name */ \
201 NULL, \
202 NULL, \
203 offsetof(type, blobptr_name), /* member that points to blob */ \
204 sizeof (((type *)0)->blobptr_name), /* size of blob pointer */ \
205 0, /* member holding blob len */ \
206 0, /* size of blob length member */ \
207 LSMT_BLOB_PTR \
208 }

Typedef Documentation

◆ lejp_collation_t

◆ lws_struct_map_t

◆ lws_struct_args_cb

typedef int(* lws_struct_args_cb) (void *obj, void *cb_arg)

Definition at line 59 of file lws-struct.h.

◆ lws_struct_args_t

◆ lws_struct_serialize_st_t

◆ lws_struct_serialize_t

◆ sqlite3

typedef struct sqlite3 sqlite3

Definition at line 264 of file lws-struct.h.

Enumeration Type Documentation

◆ lws_struct_map_type_eum

Enumerator
LSMT_SIGNED 
LSMT_UNSIGNED 
LSMT_BOOLEAN 
LSMT_STRING_CHAR_ARRAY 
LSMT_STRING_PTR 
LSMT_LIST 
LSMT_CHILD_PTR 
LSMT_SCHEMA 
LSMT_BLOB_PTR 

Definition at line 29 of file lws-struct.h.

◆ anonymous enum

anonymous enum
Enumerator
LSSERJ_FLAG_PRETTY 
LSSERJ_FLAG_OMIT_SCHEMA 

Definition at line 221 of file lws-struct.h.

221 {
222 LSSERJ_FLAG_PRETTY = (1 << 0),
223 LSSERJ_FLAG_OMIT_SCHEMA = (1 << 1)
224};
@ LSSERJ_FLAG_OMIT_SCHEMA
Definition lws-struct.h:223
@ LSSERJ_FLAG_PRETTY
Definition lws-struct.h:222

◆ lws_struct_json_serialize_result_t

Enumerator
LSJS_RESULT_CONTINUE 
LSJS_RESULT_FINISH 
LSJS_RESULT_ERROR 

Definition at line 236 of file lws-struct.h.

236 {
lws_struct_json_serialize_result_t
Definition lws-struct.h:236
@ LSJS_RESULT_CONTINUE
Definition lws-struct.h:237
@ LSJS_RESULT_FINISH
Definition lws-struct.h:238
@ LSJS_RESULT_ERROR
Definition lws-struct.h:239

Function Documentation

◆ lws_struct_json_init_parse()

LWS_VISIBLE LWS_EXTERN int lws_struct_json_init_parse ( struct lejp_ctx * ctx,
lejp_callback cb,
void * user )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_schema_only_lejp_cb()

LWS_VISIBLE LWS_EXTERN signed char lws_struct_schema_only_lejp_cb ( struct lejp_ctx * ctx,
char reason )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_default_lejp_cb()

LWS_VISIBLE LWS_EXTERN signed char lws_struct_default_lejp_cb ( struct lejp_ctx * ctx,
char reason )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_json_serialize_create()

LWS_VISIBLE LWS_EXTERN lws_struct_serialize_t * lws_struct_json_serialize_create ( const lws_struct_map_t * map,
size_t map_entries,
int flags,
const void * ptoplevel )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_json_serialize_destroy()

LWS_VISIBLE LWS_EXTERN void lws_struct_json_serialize_destroy ( lws_struct_serialize_t ** pjs)

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_json_serialize()

LWS_VISIBLE LWS_EXTERN lws_struct_json_serialize_result_t lws_struct_json_serialize ( lws_struct_serialize_t * js,
uint8_t * buf,
size_t len,
size_t * written )

◆ lws_struct_sq3_serialize()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_serialize ( sqlite3 * pdb,
const lws_struct_map_t * schema,
lws_dll2_owner_t * owner,
uint32_t manual_idx )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_update()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_update ( sqlite3 * pdb,
const char * table,
const lws_struct_map_t * map,
size_t map_entries,
const void * data,
const char * where_col )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_upsert()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_upsert ( sqlite3 * pdb,
const char * table,
const lws_struct_map_t * map,
size_t map_entries,
const void * data,
const char * where_col )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_deserialize()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_deserialize ( sqlite3 * pdb,
const char * filter,
const char * order,
const lws_struct_map_t * schema,
lws_dll2_owner_t * o,
struct lwsac ** ac,
int start,
int limit )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_create_table()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_create_table ( sqlite3 * pdb,
const lws_struct_map_t * schema )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_open()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_open ( struct lws_context * context,
const char * sqlite3_path,
char create_if_missing,
sqlite3 ** pdb )

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_struct_sq3_close()

LWS_VISIBLE LWS_EXTERN int lws_struct_sq3_close ( sqlite3 ** pdb)