LibTRO
0
Uma biblioteca com funções semelhantes às do C para fins educacionais na Eletrônica, IF Sul Pelotas.
Toggle main menu visibility
Carregando...
Procurando...
Nenhuma entrada encontrado
dybuffer.h
Ir para a documentação desse arquivo.
1
2
3
#ifndef TRO_DYBUFFER_H_
4
#define TRO_DYBUFFER_H_
5
6
#include "tro/private/api.h"
7
#include "tro/private/bool.h"
8
#include "tro/private/doxy.h"
9
10
#include <stddef.h>
11
#include <stdint.h>
12
#if TRO__USE_STDBOOL
13
# include <stdbool.h>
14
#endif
15
16
#include "
tro/uchar.h
"
17
18
TRO__C_API_BEGIN
19
26
typedef
enum
tro__ndoxy(
tro_dybuf_pref
) {
32
TRO_DYBUF_PREF_ANY
,
37
TRO_DYBUF_PREF_U8
,
42
TRO_DYBUF_PREF_U16
,
43
}
tro_dybuf_pref
;
44
52
typedef
struct
tro__ndoxy(tro_dybuffer_i)
53
{
63
bool (*
const
writes
)(
void
*buf,
const
char
*data,
size_t
datal);
73
bool (*
const
writes16
)(
void
*buf,
const
tro_char16
*data,
size_t
datal);
81
bool (*
const
writeb
)(
void
*buf,
const
uint8_t *data,
size_t
datal);
89
bool (*
const
writec
)(
void
*buf,
tro_urune
rune,
size_t
count);
95
tro_dybuf_pref
(*
const
preference
)(
const
void
*buf);
96
}
97
tro_dybuffer_i
;
98
106
typedef
struct
tro__ndoxy(tro_dybuffer_obj)
107
{
112
void
*
const
obj
;
119
const
tro_dybuffer_i
*
const
vtable
;
120
}
121
tro_dybuffer_obj
;
122
140
#define tro_dispatch_dybuffer(o, varname) \
141
void *const varname = o.obj; \
142
\
143
bool (*const varname##_writes)(void *buf, const char *data, \
144
size_t datal) = o.vtable->writes; \
145
\
146
bool (*const varname##_writes16)(void *buf, const tro_char16 *data, \
147
size_t datal) = o.vtable->writes16; \
148
\
149
bool (*const varname##_writeb)(void *buf, const uint8_t *data, \
150
size_t datal) = o.vtable->writeb; \
151
\
152
bool (*const varname##_writec)(void *buf, tro_urune rune, \
153
size_t count) = o.vtable->writec; \
154
\
155
tro_dybuf_pref (*const varname##_preference)(const void *buf) = \
156
o.vtable->preference; \
157
\
158
/* Supressão de warnings. */
{ \
159
(void)varname; \
160
(void)varname##_writes; \
161
(void)varname##_writes16; \
162
(void)varname##_writeb; \
163
(void)varname##_writec; \
164
(void)varname##_preference; \
165
}
166
167
TRO__C_API_END
168
169
#endif
// TRO_DYBUFFER_H_
tro_dybuf_pref
tro_dybuf_pref
Definição
dybuffer.h:26
TRO_DYBUF_PREF_U8
@ TRO_DYBUF_PREF_U8
Definição
dybuffer.h:37
TRO_DYBUF_PREF_ANY
@ TRO_DYBUF_PREF_ANY
Definição
dybuffer.h:32
TRO_DYBUF_PREF_U16
@ TRO_DYBUF_PREF_U16
Definição
dybuffer.h:42
tro_dybuffer_i
Definição
dybuffer.h:53
tro_dybuffer_i::writec
bool(*const writec)(void *buf, tro_urune rune, size_t count)
Definição
dybuffer.h:89
tro_dybuffer_i::writes
bool(*const writes)(void *buf, const char *data, size_t datal)
Definição
dybuffer.h:63
tro_dybuffer_i::writes16
bool(*const writes16)(void *buf, const tro_char16 *data, size_t datal)
Definição
dybuffer.h:73
tro_dybuffer_i::writeb
bool(*const writeb)(void *buf, const uint8_t *data, size_t datal)
Definição
dybuffer.h:81
tro_dybuffer_i::preference
tro_dybuf_pref(*const preference)(const void *buf)
Definição
dybuffer.h:95
tro_dybuffer_obj
Definição
dybuffer.h:107
tro_dybuffer_obj::vtable
const tro_dybuffer_i *const vtable
Definição
dybuffer.h:119
tro_dybuffer_obj::obj
void *const obj
Definição
dybuffer.h:112
uchar.h
tro_char16
uint16_t tro_char16
Definição
uchar.h:199
tro_urune
uint32_t tro_urune
Definição
uchar.h:51
tro
dybuffer.h
Gerado por
1.17.0