mruby/c VM Source Code master (2026/08/06)
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);
96#if MRBC_USE_FLOAT
97int mrbc_printf_float(mrbc_printf_t *pf, double value);
98#endif
99int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr);
100//@endcond
101
102
103/***** Inline functions *****************************************************/
104
105//================================================================
110static inline void mrbc_print(const char *str)
111{
112 mrbc_nprint( str, strlen(str) );
113}
114
115
116//================================================================
124static inline void mrbc_printf_init( mrbc_printf_t *pf, char *buf, int size,
125 const char *fstr )
126{
127 pf->p = pf->buf = buf;
128 pf->buf_end = buf + size - 1;
129 pf->fstr = fstr;
130 pf->fmt = (struct RPrintfFormat){0};
131}
132
133
134//================================================================
139static inline void mrbc_printf_clear( mrbc_printf_t *pf )
140{
141 pf->p = pf->buf;
142}
143
144
145//================================================================
150static inline void mrbc_printf_end( mrbc_printf_t *pf )
151{
152 *pf->p = '\0';
153}
154
155
156//================================================================
162static inline int mrbc_printf_len( mrbc_printf_t *pf )
163{
164 return pf->p - pf->buf;
165}
166
167
168//================================================================
178static inline int mrbc_printf_str( mrbc_printf_t *pf, const char *str, int pad )
179{
180 return mrbc_printf_bstr( pf, str, (str ? strlen(str) : 0), pad );
181}
182
183#ifdef __cplusplus
184}
185#endif
186#endif
struct RObject mrbc_value
Value object. Default version.
void mrbc_p(const mrbc_value *v)
Definition console.c:346
int mrbc_printf_float(mrbc_printf_t *pf, double value)
Definition console.c:939
int mrbc_print_sub(const mrbc_value *v)
Definition console.c:522
void mrbc_printf(const char *fstr,...)
Definition console.c:205
int mrbc_printf_int(mrbc_printf_t *pf, mrbc_int_t value, unsigned int base)
Definition console.c:792
int mrbc_printf_char(mrbc_printf_t *pf, int ch)
Definition console.c:707
void mrbc_vprintf(const char *fstr, va_list ap)
Definition console.c:266
void mrbc_nprint(const char *str, int size)
Definition console.c:176
int mrbc_printf_bstr(mrbc_printf_t *pf, const char *str, int len, int pad)
Definition console.c:740
int mrbc_puts_sub(const mrbc_value *v)
Definition console.c:499
void mrbc_asprintf(char **buf, int bufsiz, const char *fstr,...)
Definition console.c:223
int mrbc_p_sub(const mrbc_value *v)
Definition console.c:398
int mrbc_printf_pointer(mrbc_printf_t *pf, void *ptr)
Definition console.c:973
void mrbc_vasprintf(char **buf, int bufsiz, const char *fstr, va_list ap)
Definition console.c:301
void mrbc_snprintf(char *buf, int bufsiz, const char *fstr,...)
Definition console.c:241
void mrbc_printf_replace_buffer(mrbc_printf_t *pf, char *buf, int size)
Definition console.c:629
void mrbc_putchar(char c)
Definition console.c:131
void mrbc_char_to_s(char *buf, const void *src)
Definition console.c:359
int mrbc_printf_bit(mrbc_printf_t *pf, mrbc_int_t value, int bit)
Definition console.c:879
void mrbc_print_symbol(mrbc_sym sym_id)
Definition console.c:152
int mrbc_printf_main(mrbc_printf_t *pf)
Definition console.c:647
static void mrbc_printf_clear(mrbc_printf_t *pf)
Definition console.h:139
static void mrbc_print(const char *str)
Definition console.h:110
static void mrbc_printf_end(mrbc_printf_t *pf)
Definition console.h:150
static int mrbc_printf_len(mrbc_printf_t *pf)
Definition console.h:162
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:178
static void mrbc_printf_init(mrbc_printf_t *pf, char *buf, int size, const char *fstr)
Definition console.h:124
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.