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