proton
0
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
proton-c
include
proton
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
36
typedef
enum
{
37
PN_NULL
= 1,
38
PN_BOOL
= 2,
39
PN_UBYTE
= 3,
40
PN_BYTE
= 4,
41
PN_USHORT
= 5,
42
PN_SHORT
= 6,
43
PN_UINT
= 7,
44
PN_INT
= 8,
45
PN_CHAR
= 9,
46
PN_ULONG
= 10,
47
PN_LONG
= 11,
48
PN_TIMESTAMP
= 12,
49
PN_FLOAT
= 13,
50
PN_DOUBLE
= 14,
51
PN_DECIMAL32
= 15,
52
PN_DECIMAL64
= 16,
53
PN_DECIMAL128
= 17,
54
PN_UUID
= 18,
55
PN_BINARY
= 19,
56
PN_STRING
= 20,
57
PN_SYMBOL
= 21,
58
PN_DESCRIBED
= 22,
59
PN_ARRAY
= 23,
60
PN_LIST
= 24,
61
PN_MAP
= 25
62
}
pn_type_t
;
63
64
PN_EXTERN
const
char
*
pn_type_name
(
pn_type_t
type);
65
66
typedef
struct
{
67
pn_type_t
type
;
68
union
{
69
bool
as_bool
;
70
uint8_t
as_ubyte
;
71
int8_t
as_byte
;
72
uint16_t
as_ushort
;
73
int16_t
as_short
;
74
uint32_t
as_uint
;
75
int32_t
as_int
;
76
pn_char_t
as_char
;
77
uint64_t
as_ulong
;
78
int64_t
as_long
;
79
pn_timestamp_t
as_timestamp
;
80
float
as_float
;
81
double
as_double
;
82
pn_decimal32_t
as_decimal32
;
83
pn_decimal64_t
as_decimal64
;
84
pn_decimal128_t
as_decimal128
;
85
pn_uuid_t
as_uuid
;
86
pn_bytes_t
as_bytes
;
87
} u;
88
}
pn_atom_t
;
89
90
// data
91
92
typedef
struct
pn_data_t
pn_data_t
;
93
94
PN_EXTERN
pn_data_t
*
pn_data
(
size_t
capacity);
95
PN_EXTERN
void
pn_data_free
(
pn_data_t
*data);
96
PN_EXTERN
int
pn_data_errno
(
pn_data_t
*data);
97
PN_EXTERN
pn_error_t
*
pn_data_error
(
pn_data_t
*data);
98
PN_EXTERN
int
pn_data_vfill
(
pn_data_t
*data,
const
char
*fmt, va_list ap);
99
PN_EXTERN
int
pn_data_fill
(
pn_data_t
*data,
const
char
*fmt, ...);
100
PN_EXTERN
int
pn_data_vscan
(
pn_data_t
*data,
const
char
*fmt, va_list ap);
101
PN_EXTERN
int
pn_data_scan
(
pn_data_t
*data,
const
char
*fmt, ...);
102
103
PN_EXTERN
void
pn_data_clear
(
pn_data_t
*data);
104
PN_EXTERN
size_t
pn_data_size
(
pn_data_t
*data);
105
PN_EXTERN
void
pn_data_rewind
(
pn_data_t
*data);
106
PN_EXTERN
bool
pn_data_next
(
pn_data_t
*data);
107
PN_EXTERN
bool
pn_data_prev
(
pn_data_t
*data);
108
PN_EXTERN
bool
pn_data_enter
(
pn_data_t
*data);
109
PN_EXTERN
bool
pn_data_exit
(
pn_data_t
*data);
110
PN_EXTERN
bool
pn_data_lookup
(
pn_data_t
*data,
const
char
*name);
111
112
PN_EXTERN
pn_type_t
pn_data_type
(
pn_data_t
*data);
113
114
PN_EXTERN
int
pn_data_print
(
pn_data_t
*data);
115
PN_EXTERN
int
pn_data_format
(
pn_data_t
*data,
char
*bytes,
size_t
*size);
116
PN_EXTERN
ssize_t
pn_data_encode
(
pn_data_t
*data,
char
*bytes,
size_t
size);
117
PN_EXTERN
ssize_t
pn_data_decode
(
pn_data_t
*data,
const
char
*bytes,
size_t
size);
118
119
PN_EXTERN
int
pn_data_put_list
(
pn_data_t
*data);
120
PN_EXTERN
int
pn_data_put_map
(
pn_data_t
*data);
121
PN_EXTERN
int
pn_data_put_array
(
pn_data_t
*data,
bool
described,
pn_type_t
type);
122
PN_EXTERN
int
pn_data_put_described
(
pn_data_t
*data);
123
PN_EXTERN
int
pn_data_put_null
(
pn_data_t
*data);
124
PN_EXTERN
int
pn_data_put_bool
(
pn_data_t
*data,
bool
b);
125
PN_EXTERN
int
pn_data_put_ubyte
(
pn_data_t
*data, uint8_t ub);
126
PN_EXTERN
int
pn_data_put_byte
(
pn_data_t
*data, int8_t b);
127
PN_EXTERN
int
pn_data_put_ushort
(
pn_data_t
*data, uint16_t us);
128
PN_EXTERN
int
pn_data_put_short
(
pn_data_t
*data, int16_t s);
129
PN_EXTERN
int
pn_data_put_uint
(
pn_data_t
*data, uint32_t ui);
130
PN_EXTERN
int
pn_data_put_int
(
pn_data_t
*data, int32_t i);
131
PN_EXTERN
int
pn_data_put_char
(
pn_data_t
*data,
pn_char_t
c);
132
PN_EXTERN
int
pn_data_put_ulong
(
pn_data_t
*data, uint64_t ul);
133
PN_EXTERN
int
pn_data_put_long
(
pn_data_t
*data, int64_t l);
134
PN_EXTERN
int
pn_data_put_timestamp
(
pn_data_t
*data,
pn_timestamp_t
t);
135
PN_EXTERN
int
pn_data_put_float
(
pn_data_t
*data,
float
f);
136
PN_EXTERN
int
pn_data_put_double
(
pn_data_t
*data,
double
d);
137
PN_EXTERN
int
pn_data_put_decimal32
(
pn_data_t
*data,
pn_decimal32_t
d);
138
PN_EXTERN
int
pn_data_put_decimal64
(
pn_data_t
*data,
pn_decimal64_t
d);
139
PN_EXTERN
int
pn_data_put_decimal128
(
pn_data_t
*data,
pn_decimal128_t
d);
140
PN_EXTERN
int
pn_data_put_uuid
(
pn_data_t
*data,
pn_uuid_t
u);
141
PN_EXTERN
int
pn_data_put_binary
(
pn_data_t
*data,
pn_bytes_t
bytes);
142
PN_EXTERN
int
pn_data_put_string
(
pn_data_t
*data,
pn_bytes_t
string
);
143
PN_EXTERN
int
pn_data_put_symbol
(
pn_data_t
*data,
pn_bytes_t
symbol);
144
PN_EXTERN
int
pn_data_put_atom
(
pn_data_t
*data,
pn_atom_t
atom);
145
146
PN_EXTERN
size_t
pn_data_get_list
(
pn_data_t
*data);
147
PN_EXTERN
size_t
pn_data_get_map
(
pn_data_t
*data);
148
PN_EXTERN
size_t
pn_data_get_array
(
pn_data_t
*data);
149
PN_EXTERN
bool
pn_data_is_array_described
(
pn_data_t
*data);
150
PN_EXTERN
pn_type_t
pn_data_get_array_type
(
pn_data_t
*data);
151
PN_EXTERN
bool
pn_data_is_described
(
pn_data_t
*data);
152
PN_EXTERN
bool
pn_data_is_null
(
pn_data_t
*data);
153
PN_EXTERN
bool
pn_data_get_bool
(
pn_data_t
*data);
154
PN_EXTERN
uint8_t
pn_data_get_ubyte
(
pn_data_t
*data);
155
PN_EXTERN
int8_t
pn_data_get_byte
(
pn_data_t
*data);
156
PN_EXTERN
uint16_t
pn_data_get_ushort
(
pn_data_t
*data);
157
PN_EXTERN
int16_t
pn_data_get_short
(
pn_data_t
*data);
158
PN_EXTERN
uint32_t
pn_data_get_uint
(
pn_data_t
*data);
159
PN_EXTERN
int32_t
pn_data_get_int
(
pn_data_t
*data);
160
PN_EXTERN
pn_char_t
pn_data_get_char
(
pn_data_t
*data);
161
PN_EXTERN
uint64_t
pn_data_get_ulong
(
pn_data_t
*data);
162
PN_EXTERN
int64_t
pn_data_get_long
(
pn_data_t
*data);
163
PN_EXTERN
pn_timestamp_t
pn_data_get_timestamp
(
pn_data_t
*data);
164
PN_EXTERN
float
pn_data_get_float
(
pn_data_t
*data);
165
PN_EXTERN
double
pn_data_get_double
(
pn_data_t
*data);
166
PN_EXTERN
pn_decimal32_t
pn_data_get_decimal32
(
pn_data_t
*data);
167
PN_EXTERN
pn_decimal64_t
pn_data_get_decimal64
(
pn_data_t
*data);
168
PN_EXTERN
pn_decimal128_t
pn_data_get_decimal128
(
pn_data_t
*data);
169
PN_EXTERN
pn_uuid_t
pn_data_get_uuid
(
pn_data_t
*data);
170
PN_EXTERN
pn_bytes_t
pn_data_get_binary
(
pn_data_t
*data);
171
PN_EXTERN
pn_bytes_t
pn_data_get_string
(
pn_data_t
*data);
172
PN_EXTERN
pn_bytes_t
pn_data_get_symbol
(
pn_data_t
*data);
173
PN_EXTERN
pn_bytes_t
pn_data_get_bytes
(
pn_data_t
*data);
174
PN_EXTERN
pn_atom_t
pn_data_get_atom
(
pn_data_t
*data);
175
176
PN_EXTERN
int
pn_data_copy
(
pn_data_t
*data,
pn_data_t
*src);
177
PN_EXTERN
int
pn_data_append
(
pn_data_t
*data,
pn_data_t
*src);
178
PN_EXTERN
int
pn_data_appendn
(
pn_data_t
*data,
pn_data_t
*src,
int
limit);
179
PN_EXTERN
void
pn_data_narrow
(
pn_data_t
*data);
180
PN_EXTERN
void
pn_data_widen
(
pn_data_t
*data);
181
PN_EXTERN
pn_handle_t
pn_data_point
(
pn_data_t
*data);
182
PN_EXTERN
bool
pn_data_restore
(
pn_data_t
*data,
pn_handle_t
point);
183
184
185
PN_EXTERN
void
pn_data_dump
(
pn_data_t
*data);
186
187
#ifdef __cplusplus
188
}
189
#endif
190
191
#endif
/* codec.h */
Generated on Mon Jun 2 2014 22:59:05 for proton by
1.8.1.2