LibTRO 0
Uma biblioteca com funções semelhantes às do C para fins educacionais na Eletrônica, IF Sul Pelotas.
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
18TRO__C_API_BEGIN
19
44
52typedef 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}
98
106typedef struct tro__ndoxy(tro_dybuffer_obj)
107{
112 void *const obj;
119 const tro_dybuffer_i *const vtable;
120}
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
167TRO__C_API_END
168
169#endif // TRO_DYBUFFER_H_
tro_dybuf_pref
Definição dybuffer.h:26
@ TRO_DYBUF_PREF_U8
Definição dybuffer.h:37
@ TRO_DYBUF_PREF_ANY
Definição dybuffer.h:32
@ TRO_DYBUF_PREF_U16
Definição dybuffer.h:42
Definição dybuffer.h:53
bool(*const writec)(void *buf, tro_urune rune, size_t count)
Definição dybuffer.h:89
bool(*const writes)(void *buf, const char *data, size_t datal)
Definição dybuffer.h:63
bool(*const writes16)(void *buf, const tro_char16 *data, size_t datal)
Definição dybuffer.h:73
bool(*const writeb)(void *buf, const uint8_t *data, size_t datal)
Definição dybuffer.h:81
tro_dybuf_pref(*const preference)(const void *buf)
Definição dybuffer.h:95
Definição dybuffer.h:107
const tro_dybuffer_i *const vtable
Definição dybuffer.h:119
void *const obj
Definição dybuffer.h:112
uint16_t tro_char16
Definição uchar.h:199
uint32_t tro_urune
Definição uchar.h:51