mruby/c VM Source Code release 4.0.0
Loading...
Searching...
No Matches
console.h
Go to the documentation of this file.
1
14
15#ifndef MRBC_SRC_CONSOLE_H_
16#define MRBC_SRC_CONSOLE_H_
17
18/***** Feature test switches ************************************************/
19/***** System headers *******************************************************/
20//@cond
21#include "vm_config.h"
22#include <stdint.h>
23#include <stdarg.h>
24#include <string.h>
25//@endcond
26
27/***** Local headers ********************************************************/
28#include "value.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33/***** Constant values ******************************************************/
34/***** Macros ***************************************************************/
35//@cond
36// For compatibility. Not recommended for use.
37#define mrb_p(vm, v) mrbc_p(&v)
38#define console_print mrbc_print
39#define console_nprint mrbc_nprint
40#define console_putchar mrbc_putchar
41#define console_printf mrbc_printf
42//@endcond
43
44
45/***** Typedefs *************************************************************/
46//================================================================
51 char type;
52 unsigned int flag_plus : 1;
53 unsigned int flag_minus : 1;
54 unsigned int flag_space : 1;
55 unsigned int flag_zero : 1;
56 int16_t width;
57 int16_t precision;
58};
59
60
61//================================================================
65typedef struct RPrintf {
66 char *buf;
67 const char *buf_end;
68 char *p;
69 const char *fstr;
72
73
74/***** Global variables *****************************************************/
75/***** Function prototypes **************************************************/
76//@cond
77void mrbc_putchar(char c);
78void mrbc_print_symbol(mrbc_sym sym_id);
79void mrbc_nprint(const char *str, int size);
80void mrbc_printf(const char *fstr, ...);
81void mrbc_asprintf(char **buf, int bufsiz, const char *fstr, ...);
82void mrbc_snprintf(char *buf, int bufsiz, const char *fstr, ...);
83void mrbc_vprintf(const char *fstr, va_list ap);
84void mrbc_vasprintf(char **buf, int bufsiz, const char *fstr, va_list ap);
85void mrbc_p(const mrbc_value *v);
86void mrbc_char_to_s(char *buf, const void *src);
87int mrbc_p_sub(const mrbc_value *v);
88int mrbc_puts_sub(const mrbc_value *v);
89int mrbc_print_sub(const mrbc_value *v);
90void mrbc_printf_replace_buffer(mrbc_printf_t *pf, char *buf, int size);
92int mrbc_printf_char(mrbc_printf_t *pf, int ch);
93int mrbc_printf_bstr(mrbc_printf_t *pf, const char *str, int len, int pad);
94int mrbc_printf_int(mrbc_printf_t *pf, mrbc_int_t value, unsigned int base);
95int mrbc_printf_bit(mrbc_printf_t *pf, mrbc_int_t value, int bit);
96int mrbc_printf_float(mrbc_printf_t *pf, double value);
97int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr);
98//@endcond
99
100
101/***** Inline functions *****************************************************/
102
103//================================================================
108static inline void mrbc_print(const char *str)
109{
110 mrbc_nprint( str, strlen(str) );
111}
112
113
114//================================================================
122static inline void mrbc_printf_init( mrbc_printf_t *pf, char *buf, int size,
123 const char *fstr )
124{
125 pf->p = pf->buf = buf;
126 pf->buf_end = buf + size - 1;
127 pf->fstr = fstr;
128 pf->fmt = (struct RPrintfFormat){0};
129}
130
131
132//================================================================
137static inline void mrbc_printf_clear( mrbc_printf_t *pf )
138{
139 pf->p = pf->buf;
140}
141
142
143//================================================================
148static inline void mrbc_printf_end( mrbc_printf_t *pf )
149{
150 *pf->p = '\0';
151}
152
153
154//================================================================
160static inline int mrbc_printf_len( mrbc_printf_t *pf )
161{
162 return pf->p - pf->buf;
163}
164
165
166//================================================================
176static inline int mrbc_printf_str( mrbc_printf_t *pf, const char *str, int pad )
177{
178 return mrbc_printf_bstr( pf, str, (str ? strlen(str) : 0), pad );
179}
180
181#ifdef __cplusplus
182}
183#endif
184#endif
struct RObject mrbc_value
Value object. Default version.
void mrbc_p(const mrbc_value *v)
Definition console.c:342
int mrbc_printf_float(mrbc_printf_t *pf, double value)
Definition console.c:935
int mrbc_print_sub(const mrbc_value *v)
Definition console.c:518
void mrbc_printf(const char *fstr,...)
Definition console.c:201
int mrbc_printf_int(mrbc_printf_t *pf, mrbc_int_t value, unsigned int base)
Definition console.c:788
int mrbc_printf_char(mrbc_printf_t *pf, int ch)
Definition console.c:703
void mrbc_vprintf(const char *fstr, va_list ap)
Definition console.c:262
void mrbc_nprint(const char *str, int size)
Definition console.c:172
int mrbc_printf_bstr(mrbc_printf_t *pf, const char *str, int len, int pad)
Definition console.c:736
int mrbc_puts_sub(const mrbc_value *v)
Definition console.c:495
void mrbc_asprintf(char **buf, int bufsiz, const char *fstr,...)
Definition console.c:219
int mrbc_p_sub(const mrbc_value *v)
Definition console.c:394
int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr)
Definition console.c:969
void mrbc_vasprintf(char **buf, int bufsiz, const char *fstr, va_list ap)
Definition console.c:297
void mrbc_snprintf(char *buf, int bufsiz, const char *fstr,...)
Definition console.c:237
void mrbc_printf_replace_buffer(mrbc_printf_t *pf, char *buf, int size)
Definition console.c:625
void mrbc_putchar(char c)
Definition console.c:127
void mrbc_char_to_s(char *buf, const void *src)
Definition console.c:355
int mrbc_printf_bit(mrbc_printf_t *pf, mrbc_int_t value, int bit)
Definition console.c:875
void mrbc_print_symbol(mrbc_sym sym_id)
Definition console.c:148
int mrbc_printf_main(mrbc_printf_t *pf)
Definition console.c:643
static void mrbc_printf_clear(mrbc_printf_t *pf)
Definition console.h:137
static void mrbc_print(const char *str)
Definition console.h:108
static void mrbc_printf_end(mrbc_printf_t *pf)
Definition console.h:148
static int mrbc_printf_len(mrbc_printf_t *pf)
Definition console.h:160
struct RPrintf mrbc_printf_t
printf tiny (mruby/c) version data container.
static int mrbc_printf_str(mrbc_printf_t *pf, const char *str, int pad)
Definition console.h:176
static void mrbc_printf_init(mrbc_printf_t *pf, char *buf, int size, const char *fstr)
Definition console.h:122
printf tiny (mruby/c) version format container.
Definition console.h:50
int16_t width
display width. (e.g. %10d as 10)
Definition console.h:56
int16_t precision
precision (e.g. %5.2f as 2)
Definition console.h:57
unsigned int flag_space
Definition console.h:54
unsigned int flag_zero
Definition console.h:55
unsigned int flag_plus
Definition console.h:52
unsigned int flag_minus
Definition console.h:53
char type
format char. (e.g. 'd','f','x'...)
Definition console.h:51
printf tiny (mruby/c) version data container.
Definition console.h:65
struct RPrintfFormat fmt
Definition console.h:70
char * p
output buffer write point.
Definition console.h:68
const char * buf_end
output buffer end point.
Definition console.h:67
const char * fstr
format string. (e.g. "%d %03x")
Definition console.h:69
char * buf
output buffer.
Definition console.h:66
mruby/c value definitions
int32_t mrbc_int_t
Definition value.h:47
int16_t mrbc_sym
mruby/c symbol ID
Definition value.h:62
Global configuration of mruby/c VM's.