Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mruby
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
mruby
Commits
4e1a10f0
Commit
4e1a10f0
authored
Mar 13, 2014
by
Yukihiro "Matz" Matsumoto
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1850 from cremno/safer-lit-macros
add mrb_strlen_lit
parents
f85e5a80
e4afd537
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
12 additions
and
4 deletions
+12
-4
include/mruby.h
include/mruby.h
+10
-2
include/mruby/error.h
include/mruby/error.h
+1
-1
include/mruby/string.h
include/mruby/string.h
+1
-1
No files found.
include/mruby.h
View file @
4e1a10f0
...
...
@@ -231,13 +231,21 @@ struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *outer, co
int
mrb_get_args
(
mrb_state
*
mrb
,
const
char
*
format
,
...);
/* `strlen` for character string literals (use with caution or `strlen` instead)
Adjacent string literals are concatenated in C/C++ in translation phase 6.
If `lit` is not one, the compiler will report a syntax error:
MSVC: "error C2143: syntax error : missing ')' before 'string'"
GCC: "error: expected ')' before string constant"
*/
#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
mrb_value
mrb_funcall
(
mrb_state
*
,
mrb_value
,
const
char
*
,
int
,...);
mrb_value
mrb_funcall_argv
(
mrb_state
*
,
mrb_value
,
mrb_sym
,
int
,
mrb_value
*
);
mrb_value
mrb_funcall_with_block
(
mrb_state
*
,
mrb_value
,
mrb_sym
,
int
,
mrb_value
*
,
mrb_value
);
mrb_sym
mrb_intern_cstr
(
mrb_state
*
,
const
char
*
);
mrb_sym
mrb_intern
(
mrb_state
*
,
const
char
*
,
size_t
);
mrb_sym
mrb_intern_static
(
mrb_state
*
,
const
char
*
,
size_t
);
#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb,
(lit), sizeof(lit) - 1
)
#define mrb_intern_lit(mrb, lit) mrb_intern_static(mrb,
lit, mrb_strlen_lit(lit)
)
mrb_sym
mrb_intern_str
(
mrb_state
*
,
mrb_value
);
mrb_value
mrb_check_intern_cstr
(
mrb_state
*
,
const
char
*
);
mrb_value
mrb_check_intern
(
mrb_state
*
,
const
char
*
,
size_t
);
...
...
@@ -257,7 +265,7 @@ void mrb_free(mrb_state*, void*);
mrb_value
mrb_str_new
(
mrb_state
*
mrb
,
const
char
*
p
,
size_t
len
);
mrb_value
mrb_str_new_cstr
(
mrb_state
*
,
const
char
*
);
mrb_value
mrb_str_new_static
(
mrb_state
*
mrb
,
const
char
*
p
,
size_t
len
);
#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit),
sizeof(lit) - 1
)
#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit),
mrb_strlen_lit(lit)
)
mrb_state
*
mrb_open
(
void
);
mrb_state
*
mrb_open_allocf
(
mrb_allocf
,
void
*
ud
);
...
...
include/mruby/error.h
View file @
4e1a10f0
...
...
@@ -13,7 +13,7 @@ extern "C" {
void
mrb_sys_fail
(
mrb_state
*
mrb
,
const
char
*
mesg
);
mrb_value
mrb_exc_new_str
(
mrb_state
*
mrb
,
struct
RClass
*
c
,
mrb_value
str
);
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb,
(lit)
))
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb,
lit
))
mrb_value
mrb_make_exception
(
mrb_state
*
mrb
,
int
argc
,
mrb_value
*
argv
);
mrb_value
mrb_format
(
mrb_state
*
mrb
,
const
char
*
format
,
...);
void
mrb_exc_print
(
mrb_state
*
mrb
,
struct
RObject
*
exc
);
...
...
include/mruby/string.h
View file @
4e1a10f0
...
...
@@ -83,7 +83,7 @@ mrb_bool mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2);
mrb_value
mrb_str_dump
(
mrb_state
*
mrb
,
mrb_value
str
);
mrb_value
mrb_str_cat
(
mrb_state
*
mrb
,
mrb_value
str
,
const
char
*
ptr
,
size_t
len
);
mrb_value
mrb_str_cat_cstr
(
mrb_state
*
mrb
,
mrb_value
str
,
const
char
*
ptr
);
#define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str,
(lit), sizeof(lit) - 1
)
#define mrb_str_cat_lit(mrb, str, lit) mrb_str_cat(mrb, str,
lit, mrb_strlen_lit(lit)
)
mrb_value
mrb_str_append
(
mrb_state
*
mrb
,
mrb_value
str
,
mrb_value
str2
);
int
mrb_str_cmp
(
mrb_state
*
mrb
,
mrb_value
str1
,
mrb_value
str2
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment