mruby/c VM Source Code release 3.4
Loading...
Searching...
No Matches
console.h
Go to the documentation of this file.
1
13
14#ifndef MRBC_SRC_CONSOLE_H_
15#define MRBC_SRC_CONSOLE_H_
16
17/***** Feature test switches ************************************************/
18/***** System headers *******************************************************/
19//@cond
20#include "vm_config.h"
21#include <stdint.h>
22#include <stdarg.h>
23#include <string.h>
24//@endcond
25
26/***** Local headers ********************************************************/
27#include "value.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32/***** Constant values ******************************************************/
33/***** Macros ***************************************************************/
34// For compatibility. Not recommended for use.
35#define mrb_p(vm, v) mrbc_p(&v)
36#define console_print mrbc_print
37#define console_nprint mrbc_nprint
38#define console_putchar mrbc_putchar
39#define console_printf mrbc_printf
40
41
42/***** Typedefs *************************************************************/
43//================================================================
48 char type;
49 unsigned int flag_plus : 1;
50 unsigned int flag_minus : 1;
51 unsigned int flag_space : 1;
52 unsigned int flag_zero : 1;
53 int16_t width;
54 int16_t precision;
55};
56
57
58//================================================================
62typedef struct RPrintf {
63 char *buf;
64 const char *buf_end;
65 char *p;
66 const char *fstr;
69
70
71/***** Global variables *****************************************************/
72/***** Function prototypes **************************************************/
73//@cond
74void mrbc_putchar(char c);
75void mrbc_print_symbol(mrbc_sym sym_id);
76void mrbc_nprint(const char *str, int size);
77void mrbc_printf(const char *fstr, ...);
78void mrbc_asprintf(char **buf, int bufsiz, const char *fstr, ...);
79void mrbc_snprintf(char *buf, int bufsiz, const char *fstr, ...);
80void mrbc_vprintf(const char *fstr, va_list ap);
81void mrbc_vasprintf(char **buf, int bufsiz, const char *fstr, va_list ap);
82void mrbc_p(const mrbc_value *v);
83int mrbc_p_sub(const mrbc_value *v);
84int mrbc_puts_sub(const mrbc_value *v);
85int mrbc_print_sub(const mrbc_value *v);
86void mrbc_printf_replace_buffer(mrbc_printf_t *pf, char *buf, int size);
88int mrbc_printf_char(mrbc_printf_t *pf, int ch);
89int mrbc_printf_bstr(mrbc_printf_t *pf, const char *str, int len, int pad);
90int mrbc_printf_int(mrbc_printf_t *pf, mrbc_int_t value, unsigned int base);
91int mrbc_printf_bit(mrbc_printf_t *pf, mrbc_int_t value, int bit);
92int mrbc_printf_float(mrbc_printf_t *pf, double value);
93int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr);
94//@endcond
95
96
97/***** Inline functions *****************************************************/
98
99//================================================================
104static inline void mrbc_print(const char *str)
105{
106 mrbc_nprint( str, strlen(str) );
107}
108
109
110//================================================================
118static inline void mrbc_printf_init( mrbc_printf_t *pf, char *buf, int size,
119 const char *fstr )
120{
121 pf->p = pf->buf = buf;
122 pf->buf_end = buf + size - 1;
123 pf->fstr = fstr;
124 pf->fmt = (struct RPrintfFormat){0};
125}
126
127
128//================================================================
133static inline void mrbc_printf_clear( mrbc_printf_t *pf )
134{
135 pf->p = pf->buf;
136}
137
138
139//================================================================
144static inline void mrbc_printf_end( mrbc_printf_t *pf )
145{
146 *pf->p = '\0';
147}
148
149
150//================================================================
156static inline int mrbc_printf_len( mrbc_printf_t *pf )
157{
158 return pf->p - pf->buf;
159}
160
161
162//================================================================
172static inline int mrbc_printf_str( mrbc_printf_t *pf, const char *str, int pad )
173{
174 return mrbc_printf_bstr( pf, str, (str ? strlen(str) : 0), pad );
175}
176
177#ifdef __cplusplus
178}
179#endif
180#endif
void mrbc_p(const mrbc_value *v)
Definition console.c:321
int mrbc_printf_float(mrbc_printf_t *pf, double value)
Definition console.c:834
int mrbc_print_sub(const mrbc_value *v)
Definition console.c:421
void mrbc_printf(const char *fstr,...)
Definition console.c:180
int mrbc_printf_int(mrbc_printf_t *pf, mrbc_int_t value, unsigned int base)
Definition console.c:687
int mrbc_printf_char(mrbc_printf_t *pf, int ch)
Definition console.c:602
void mrbc_vprintf(const char *fstr, va_list ap)
Definition console.c:241
void mrbc_nprint(const char *str, int size)
Definition console.c:151
int mrbc_printf_bstr(mrbc_printf_t *pf, const char *str, int len, int pad)
Definition console.c:635
int mrbc_puts_sub(const mrbc_value *v)
Definition console.c:398
void mrbc_asprintf(char **buf, int bufsiz, const char *fstr,...)
Definition console.c:198
int mrbc_p_sub(const mrbc_value *v)
Definition console.c:333
int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr)
Definition console.c:868
void mrbc_vasprintf(char **buf, int bufsiz, const char *fstr, va_list ap)
Definition console.c:276
void mrbc_snprintf(char *buf, int bufsiz, const char *fstr,...)
Definition console.c:216
void mrbc_printf_replace_buffer(mrbc_printf_t *pf, char *buf, int size)
Definition console.c:524
void mrbc_putchar(char c)
Definition console.c:106
int mrbc_printf_bit(mrbc_printf_t *pf, mrbc_int_t value, int bit)
Definition console.c:774
void mrbc_print_symbol(mrbc_sym sym_id)
Definition console.c:127
int mrbc_printf_main(mrbc_printf_t *pf)
Definition console.c:542
static void mrbc_printf_clear(mrbc_printf_t *pf)
Definition console.h:133
static void mrbc_print(const char *str)
Definition console.h:104
static void mrbc_printf_end(mrbc_printf_t *pf)
Definition console.h:144
static int mrbc_printf_len(mrbc_printf_t *pf)
Definition console.h:156
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:172
static void mrbc_printf_init(mrbc_printf_t *pf, char *buf, int size, const char *fstr)
Definition console.h:118
printf tiny (mruby/c) version format container.
Definition console.h:47
int16_t width
display width. (e.g. %10d as 10)
Definition console.h:53
int16_t precision
precision (e.g. %5.2f as 2)
Definition console.h:54
unsigned int flag_space
Definition console.h:51
unsigned int flag_zero
Definition console.h:52
unsigned int flag_plus
Definition console.h:49
unsigned int flag_minus
Definition console.h:50
char type
format char. (e.g. 'd','f','x'...)
Definition console.h:48
printf tiny (mruby/c) version data container.
Definition console.h:62
struct RPrintfFormat fmt
Definition console.h:67
char * p
output buffer write point.
Definition console.h:65
const char * buf_end
output buffer end point.
Definition console.h:64
const char * fstr
format string. (e.g. "%d %03x")
Definition console.h:66
char * buf
output buffer.
Definition console.h:63
mruby/c value definitions
int32_t mrbc_int_t
Definition value.h:45
int16_t mrbc_sym
mruby/c symbol ID
Definition value.h:59
struct RObject mrbc_value
Definition value.h:174
Global configuration of mruby/c VM's.