Qpid Proton C API  0.17.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
codec.h
Go to the documentation of this file.
1 #ifndef PROTON_CODEC_H
2 #define PROTON_CODEC_H 1
3 
4 /*
5  *
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  *
23  */
24 
25 #include <proton/import_export.h>
26 #include <proton/object.h>
27 #include <proton/types.h>
28 #include <proton/error.h>
29 #include <proton/type_compat.h>
30 #include <stdarg.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
47 typedef enum {
48 
52  PN_NULL = 1,
53 
57  PN_BOOL = 2,
58 
62  PN_UBYTE = 3,
63 
67  PN_BYTE = 4,
68 
72  PN_USHORT = 5,
73 
77  PN_SHORT = 6,
78 
82  PN_UINT = 7,
83 
87  PN_INT = 8,
88 
92  PN_CHAR = 9,
93 
97  PN_ULONG = 10,
98 
102  PN_LONG = 11,
103 
109 
113  PN_FLOAT = 13,
114 
118  PN_DOUBLE = 14,
119 
124 
129 
134 
138  PN_UUID = 18,
139 
143  PN_BINARY = 19,
144 
149  PN_STRING = 20,
150 
155  PN_SYMBOL = 21,
156 
161 
165  PN_ARRAY = 23,
166 
170  PN_LIST = 24,
171 
176  PN_MAP = 25,
177 
183 } pn_type_t;
184 
192 PN_EXTERN const char *pn_type_name(pn_type_t type);
193 
201 typedef struct {
207  union {
211  bool as_bool;
212 
216  uint8_t as_ubyte;
217 
221  int8_t as_byte;
222 
226  uint16_t as_ushort;
227 
231  int16_t as_short;
232 
236  uint32_t as_uint;
237 
241  int32_t as_int;
242 
246  pn_char_t as_char;
247 
251  uint64_t as_ulong;
252 
256  int64_t as_long;
257 
261  pn_timestamp_t as_timestamp;
262 
266  float as_float;
267 
271  double as_double;
272 
276  pn_decimal32_t as_decimal32;
277 
281  pn_decimal64_t as_decimal64;
282 
286  pn_decimal128_t as_decimal128;
287 
291  pn_uuid_t as_uuid;
292 
300  pn_bytes_t as_bytes;
301  } u;
302 } pn_atom_t;
303 
365 typedef struct pn_data_t pn_data_t;
366 
375 PN_EXTERN pn_data_t *pn_data(size_t capacity);
376 
382 PN_EXTERN void pn_data_free(pn_data_t *data);
383 
390 PN_EXTERN int pn_data_errno(pn_data_t *data);
391 
403 PN_EXTERN pn_error_t *pn_data_error(pn_data_t *data);
404 
408 PN_EXTERN int pn_data_vfill(pn_data_t *data, const char *fmt, va_list ap);
409 PN_EXTERN int pn_data_fill(pn_data_t *data, const char *fmt, ...);
410 PN_EXTERN int pn_data_vscan(pn_data_t *data, const char *fmt, va_list ap);
411 PN_EXTERN int pn_data_scan(pn_data_t *data, const char *fmt, ...);
424 PN_EXTERN void pn_data_clear(pn_data_t *data);
425 
435 PN_EXTERN size_t pn_data_size(pn_data_t *data);
436 
442 PN_EXTERN void pn_data_rewind(pn_data_t *data);
443 
452 PN_EXTERN bool pn_data_next(pn_data_t *data);
453 
462 PN_EXTERN bool pn_data_prev(pn_data_t *data);
463 
474 PN_EXTERN bool pn_data_enter(pn_data_t *data);
475 
485 PN_EXTERN bool pn_data_exit(pn_data_t *data);
486 
490 PN_EXTERN bool pn_data_lookup(pn_data_t *data, const char *name);
502 PN_EXTERN pn_type_t pn_data_type(pn_data_t *data);
503 
511 PN_EXTERN int pn_data_print(pn_data_t *data);
512 
524 PN_EXTERN int pn_data_format(pn_data_t *data, char *bytes, size_t *size);
525 
536 PN_EXTERN ssize_t pn_data_encode(pn_data_t *data, char *bytes, size_t size);
537 
545 PN_EXTERN ssize_t pn_data_encoded_size(pn_data_t *data);
546 
564 PN_EXTERN ssize_t pn_data_decode(pn_data_t *data, const char *bytes, size_t size);
565 
588 PN_EXTERN int pn_data_put_list(pn_data_t *data);
589 
608 PN_EXTERN int pn_data_put_map(pn_data_t *data);
609 
643 PN_EXTERN int pn_data_put_array(pn_data_t *data, bool described, pn_type_t type);
644 
664 PN_EXTERN int pn_data_put_described(pn_data_t *data);
665 
672 PN_EXTERN int pn_data_put_null(pn_data_t *data);
673 
681 PN_EXTERN int pn_data_put_bool(pn_data_t *data, bool b);
682 
690 PN_EXTERN int pn_data_put_ubyte(pn_data_t *data, uint8_t ub);
691 
699 PN_EXTERN int pn_data_put_byte(pn_data_t *data, int8_t b);
700 
708 PN_EXTERN int pn_data_put_ushort(pn_data_t *data, uint16_t us);
709 
717 PN_EXTERN int pn_data_put_short(pn_data_t *data, int16_t s);
718 
726 PN_EXTERN int pn_data_put_uint(pn_data_t *data, uint32_t ui);
727 
735 PN_EXTERN int pn_data_put_int(pn_data_t *data, int32_t i);
736 
744 PN_EXTERN int pn_data_put_char(pn_data_t *data, pn_char_t c);
745 
753 PN_EXTERN int pn_data_put_ulong(pn_data_t *data, uint64_t ul);
754 
762 PN_EXTERN int pn_data_put_long(pn_data_t *data, int64_t l);
763 
771 PN_EXTERN int pn_data_put_timestamp(pn_data_t *data, pn_timestamp_t t);
772 
780 PN_EXTERN int pn_data_put_float(pn_data_t *data, float f);
781 
789 PN_EXTERN int pn_data_put_double(pn_data_t *data, double d);
790 
798 PN_EXTERN int pn_data_put_decimal32(pn_data_t *data, pn_decimal32_t d);
799 
807 PN_EXTERN int pn_data_put_decimal64(pn_data_t *data, pn_decimal64_t d);
808 
816 PN_EXTERN int pn_data_put_decimal128(pn_data_t *data, pn_decimal128_t d);
817 
825 PN_EXTERN int pn_data_put_uuid(pn_data_t *data, pn_uuid_t u);
826 
835 PN_EXTERN int pn_data_put_binary(pn_data_t *data, pn_bytes_t bytes);
836 
845 PN_EXTERN int pn_data_put_string(pn_data_t *data, pn_bytes_t string);
846 
855 PN_EXTERN int pn_data_put_symbol(pn_data_t *data, pn_bytes_t symbol);
856 
864 PN_EXTERN int pn_data_put_atom(pn_data_t *data, pn_atom_t atom);
865 
893 PN_EXTERN size_t pn_data_get_list(pn_data_t *data);
894 
933 PN_EXTERN size_t pn_data_get_map(pn_data_t *data);
934 
968 PN_EXTERN size_t pn_data_get_array(pn_data_t *data);
969 
976 PN_EXTERN bool pn_data_is_array_described(pn_data_t *data);
977 
986 
1010 PN_EXTERN bool pn_data_is_described(pn_data_t *data);
1011 
1018 PN_EXTERN bool pn_data_is_null(pn_data_t *data);
1019 
1025 PN_EXTERN bool pn_data_get_bool(pn_data_t *data);
1026 
1033 PN_EXTERN uint8_t pn_data_get_ubyte(pn_data_t *data);
1034 
1041 PN_EXTERN int8_t pn_data_get_byte(pn_data_t *data);
1042 
1049 PN_EXTERN uint16_t pn_data_get_ushort(pn_data_t *data);
1050 
1057 PN_EXTERN int16_t pn_data_get_short(pn_data_t *data);
1058 
1065 PN_EXTERN uint32_t pn_data_get_uint(pn_data_t *data);
1066 
1073 PN_EXTERN int32_t pn_data_get_int(pn_data_t *data);
1074 
1081 PN_EXTERN pn_char_t pn_data_get_char(pn_data_t *data);
1082 
1089 PN_EXTERN uint64_t pn_data_get_ulong(pn_data_t *data);
1090 
1097 PN_EXTERN int64_t pn_data_get_long(pn_data_t *data);
1098 
1106 
1113 PN_EXTERN float pn_data_get_float(pn_data_t *data);
1114 
1121 PN_EXTERN double pn_data_get_double(pn_data_t *data);
1122 
1130 
1138 
1146 
1154 PN_EXTERN pn_uuid_t pn_data_get_uuid(pn_data_t *data);
1155 
1164 PN_EXTERN pn_bytes_t pn_data_get_binary(pn_data_t *data);
1165 
1175 PN_EXTERN pn_bytes_t pn_data_get_string(pn_data_t *data);
1176 
1186 PN_EXTERN pn_bytes_t pn_data_get_symbol(pn_data_t *data);
1187 
1197 PN_EXTERN pn_bytes_t pn_data_get_bytes(pn_data_t *data);
1198 
1205 PN_EXTERN pn_atom_t pn_data_get_atom(pn_data_t *data);
1206 
1215 PN_EXTERN int pn_data_copy(pn_data_t *data, pn_data_t *src);
1216 
1224 PN_EXTERN int pn_data_append(pn_data_t *data, pn_data_t *src);
1225 
1235 PN_EXTERN int pn_data_appendn(pn_data_t *data, pn_data_t *src, int limit);
1236 
1247 PN_EXTERN void pn_data_narrow(pn_data_t *data);
1248 
1254 PN_EXTERN void pn_data_widen(pn_data_t *data);
1255 
1263 PN_EXTERN pn_handle_t pn_data_point(pn_data_t *data);
1264 
1276 PN_EXTERN bool pn_data_restore(pn_data_t *data, pn_handle_t point);
1277 
1285 PN_EXTERN void pn_data_dump(pn_data_t *data);
1286 
1291 #ifdef __cplusplus
1292 }
1293 #endif
1294 
1295 #endif /* codec.h */