proton/codec.h

Go to the documentation of this file.
00001 #ifndef PROTON_CODEC_H
00002 #define PROTON_CODEC_H 1
00003 
00004 /*
00005  *
00006  * Licensed to the Apache Software Foundation (ASF) under one
00007  * or more contributor license agreements.  See the NOTICE file
00008  * distributed with this work for additional information
00009  * regarding copyright ownership.  The ASF licenses this file
00010  * to you under the Apache License, Version 2.0 (the
00011  * "License"); you may not use this file except in compliance
00012  * with the License.  You may obtain a copy of the License at
00013  *
00014  *   http://www.apache.org/licenses/LICENSE-2.0
00015  *
00016  * Unless required by applicable law or agreed to in writing,
00017  * software distributed under the License is distributed on an
00018  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
00019  * KIND, either express or implied.  See the License for the
00020  * specific language governing permissions and limitations
00021  * under the License.
00022  *
00023  */
00024 
00025 #include <proton/import_export.h>
00026 #include <proton/object.h>
00027 #include <proton/types.h>
00028 #include <proton/error.h>
00029 #include <proton/type_compat.h>
00030 #include <stdarg.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00047 typedef enum {
00051   PN_NULL = 1,
00052 
00056   PN_BOOL = 2,
00057 
00061   PN_UBYTE = 3,
00062 
00066   PN_BYTE = 4,
00067 
00071   PN_USHORT = 5,
00072 
00076   PN_SHORT = 6,
00077 
00081   PN_UINT = 7,
00082 
00086   PN_INT = 8,
00087 
00091   PN_CHAR = 9,
00092 
00096   PN_ULONG = 10,
00097 
00101   PN_LONG = 11,
00102 
00107   PN_TIMESTAMP = 12,
00108 
00112   PN_FLOAT = 13,
00113 
00117   PN_DOUBLE = 14,
00118 
00122   PN_DECIMAL32 = 15,
00123 
00127   PN_DECIMAL64 = 16,
00128 
00132   PN_DECIMAL128 = 17,
00133 
00137   PN_UUID = 18,
00138 
00142   PN_BINARY = 19,
00143 
00148   PN_STRING = 20,
00149 
00154   PN_SYMBOL = 21,
00155 
00159   PN_DESCRIBED = 22,
00160 
00164   PN_ARRAY = 23,
00165 
00169   PN_LIST = 24,
00170 
00175   PN_MAP = 25,
00176 
00181   PN_INVALID = -1
00182 } pn_type_t;
00183 
00191 PN_EXTERN const char *pn_type_name(pn_type_t type);
00192 
00200 typedef struct {
00205   pn_type_t type;
00206   union {
00210     bool as_bool;
00211 
00215     uint8_t as_ubyte;
00216 
00220     int8_t as_byte;
00221 
00225     uint16_t as_ushort;
00226 
00230     int16_t as_short;
00231 
00235     uint32_t as_uint;
00236 
00240     int32_t as_int;
00241 
00245     pn_char_t as_char;
00246 
00250     uint64_t as_ulong;
00251 
00255     int64_t as_long;
00256 
00260     pn_timestamp_t as_timestamp;
00261 
00265     float as_float;
00266 
00270     double as_double;
00271 
00275     pn_decimal32_t as_decimal32;
00276 
00280     pn_decimal64_t as_decimal64;
00281 
00285     pn_decimal128_t as_decimal128;
00286 
00290     pn_uuid_t as_uuid;
00291 
00299     pn_bytes_t as_bytes;
00300   } u;
00301 } pn_atom_t;
00302 
00364 typedef struct pn_data_t pn_data_t;
00365 
00374 PN_EXTERN pn_data_t *pn_data(size_t capacity);
00375 
00381 PN_EXTERN void pn_data_free(pn_data_t *data);
00382 
00389 PN_EXTERN int pn_data_errno(pn_data_t *data);
00390 
00402 PN_EXTERN pn_error_t *pn_data_error(pn_data_t *data);
00403 
00407 PN_EXTERN int pn_data_vfill(pn_data_t *data, const char *fmt, va_list ap);
00408 PN_EXTERN int pn_data_fill(pn_data_t *data, const char *fmt, ...);
00409 PN_EXTERN int pn_data_vscan(pn_data_t *data, const char *fmt, va_list ap);
00410 PN_EXTERN int pn_data_scan(pn_data_t *data, const char *fmt, ...);
00423 PN_EXTERN void pn_data_clear(pn_data_t *data);
00424 
00434 PN_EXTERN size_t pn_data_size(pn_data_t *data);
00435 
00441 PN_EXTERN void pn_data_rewind(pn_data_t *data);
00442 
00451 PN_EXTERN bool pn_data_next(pn_data_t *data);
00452 
00461 PN_EXTERN bool pn_data_prev(pn_data_t *data);
00462 
00473 PN_EXTERN bool pn_data_enter(pn_data_t *data);
00474 
00484 PN_EXTERN bool pn_data_exit(pn_data_t *data);
00485 
00489 PN_EXTERN bool pn_data_lookup(pn_data_t *data, const char *name);
00501 PN_EXTERN pn_type_t pn_data_type(pn_data_t *data);
00502 
00510 PN_EXTERN int pn_data_print(pn_data_t *data);
00511 
00523 PN_EXTERN int pn_data_format(pn_data_t *data, char *bytes, size_t *size);
00524 
00535 PN_EXTERN ssize_t pn_data_encode(pn_data_t *data, char *bytes, size_t size);
00536 
00544 PN_EXTERN ssize_t pn_data_encoded_size(pn_data_t *data);
00545 
00563 PN_EXTERN ssize_t pn_data_decode(pn_data_t *data, const char *bytes, size_t size);
00564 
00587 PN_EXTERN int pn_data_put_list(pn_data_t *data);
00588 
00607 PN_EXTERN int pn_data_put_map(pn_data_t *data);
00608 
00642 PN_EXTERN int pn_data_put_array(pn_data_t *data, bool described, pn_type_t type);
00643 
00663 PN_EXTERN int pn_data_put_described(pn_data_t *data);
00664 
00671 PN_EXTERN int pn_data_put_null(pn_data_t *data);
00672 
00680 PN_EXTERN int pn_data_put_bool(pn_data_t *data, bool b);
00681 
00689 PN_EXTERN int pn_data_put_ubyte(pn_data_t *data, uint8_t ub);
00690 
00698 PN_EXTERN int pn_data_put_byte(pn_data_t *data, int8_t b);
00699 
00707 PN_EXTERN int pn_data_put_ushort(pn_data_t *data, uint16_t us);
00708 
00716 PN_EXTERN int pn_data_put_short(pn_data_t *data, int16_t s);
00717 
00725 PN_EXTERN int pn_data_put_uint(pn_data_t *data, uint32_t ui);
00726 
00734 PN_EXTERN int pn_data_put_int(pn_data_t *data, int32_t i);
00735 
00743 PN_EXTERN int pn_data_put_char(pn_data_t *data, pn_char_t c);
00744 
00752 PN_EXTERN int pn_data_put_ulong(pn_data_t *data, uint64_t ul);
00753 
00761 PN_EXTERN int pn_data_put_long(pn_data_t *data, int64_t l);
00762 
00770 PN_EXTERN int pn_data_put_timestamp(pn_data_t *data, pn_timestamp_t t);
00771 
00779 PN_EXTERN int pn_data_put_float(pn_data_t *data, float f);
00780 
00788 PN_EXTERN int pn_data_put_double(pn_data_t *data, double d);
00789 
00797 PN_EXTERN int pn_data_put_decimal32(pn_data_t *data, pn_decimal32_t d);
00798 
00806 PN_EXTERN int pn_data_put_decimal64(pn_data_t *data, pn_decimal64_t d);
00807 
00815 PN_EXTERN int pn_data_put_decimal128(pn_data_t *data, pn_decimal128_t d);
00816 
00824 PN_EXTERN int pn_data_put_uuid(pn_data_t *data, pn_uuid_t u);
00825 
00834 PN_EXTERN int pn_data_put_binary(pn_data_t *data, pn_bytes_t bytes);
00835 
00844 PN_EXTERN int pn_data_put_string(pn_data_t *data, pn_bytes_t string);
00845 
00854 PN_EXTERN int pn_data_put_symbol(pn_data_t *data, pn_bytes_t symbol);
00855 
00863 PN_EXTERN int pn_data_put_atom(pn_data_t *data, pn_atom_t atom);
00864 
00892 PN_EXTERN size_t pn_data_get_list(pn_data_t *data);
00893 
00932 PN_EXTERN size_t pn_data_get_map(pn_data_t *data);
00933 
00967 PN_EXTERN size_t pn_data_get_array(pn_data_t *data);
00968 
00975 PN_EXTERN bool pn_data_is_array_described(pn_data_t *data);
00976 
00984 PN_EXTERN pn_type_t pn_data_get_array_type(pn_data_t *data);
00985 
01009 PN_EXTERN bool pn_data_is_described(pn_data_t *data);
01010 
01017 PN_EXTERN bool pn_data_is_null(pn_data_t *data);
01018 
01024 PN_EXTERN bool pn_data_get_bool(pn_data_t *data);
01025 
01032 PN_EXTERN uint8_t pn_data_get_ubyte(pn_data_t *data);
01033 
01040 PN_EXTERN int8_t pn_data_get_byte(pn_data_t *data);
01041 
01048 PN_EXTERN uint16_t pn_data_get_ushort(pn_data_t *data);
01049 
01056 PN_EXTERN int16_t pn_data_get_short(pn_data_t *data);
01057 
01064 PN_EXTERN uint32_t pn_data_get_uint(pn_data_t *data);
01065 
01072 PN_EXTERN int32_t pn_data_get_int(pn_data_t *data);
01073 
01080 PN_EXTERN pn_char_t pn_data_get_char(pn_data_t *data);
01081 
01088 PN_EXTERN uint64_t pn_data_get_ulong(pn_data_t *data);
01089 
01096 PN_EXTERN int64_t pn_data_get_long(pn_data_t *data);
01097 
01104 PN_EXTERN pn_timestamp_t pn_data_get_timestamp(pn_data_t *data);
01105 
01112 PN_EXTERN float pn_data_get_float(pn_data_t *data);
01113 
01120 PN_EXTERN double pn_data_get_double(pn_data_t *data);
01121 
01128 PN_EXTERN pn_decimal32_t pn_data_get_decimal32(pn_data_t *data);
01129 
01136 PN_EXTERN pn_decimal64_t pn_data_get_decimal64(pn_data_t *data);
01137 
01144 PN_EXTERN pn_decimal128_t pn_data_get_decimal128(pn_data_t *data);
01145 
01153 PN_EXTERN pn_uuid_t pn_data_get_uuid(pn_data_t *data);
01154 
01163 PN_EXTERN pn_bytes_t pn_data_get_binary(pn_data_t *data);
01164 
01174 PN_EXTERN pn_bytes_t pn_data_get_string(pn_data_t *data);
01175 
01185 PN_EXTERN pn_bytes_t pn_data_get_symbol(pn_data_t *data);
01186 
01196 PN_EXTERN pn_bytes_t pn_data_get_bytes(pn_data_t *data);
01197 
01204 PN_EXTERN pn_atom_t pn_data_get_atom(pn_data_t *data);
01205 
01214 PN_EXTERN int pn_data_copy(pn_data_t *data, pn_data_t *src);
01215 
01223 PN_EXTERN int pn_data_append(pn_data_t *data, pn_data_t *src);
01224 
01234 PN_EXTERN int pn_data_appendn(pn_data_t *data, pn_data_t *src, int limit);
01235 
01246 PN_EXTERN void pn_data_narrow(pn_data_t *data);
01247 
01253 PN_EXTERN void pn_data_widen(pn_data_t *data);
01254 
01262 PN_EXTERN pn_handle_t pn_data_point(pn_data_t *data);
01263 
01275 PN_EXTERN bool pn_data_restore(pn_data_t *data, pn_handle_t point);
01276 
01284 PN_EXTERN void pn_data_dump(pn_data_t *data);
01285 
01290 #ifdef __cplusplus
01291 }
01292 #endif
01293 
01294 #endif /* codec.h */

Generated on 1 Jun 2020 for Qpid Proton C by  doxygen 1.6.1