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
ad9e841c
Commit
ad9e841c
authored
May 24, 2012
by
Yukihiro Matsumoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
made mrb_get_args() better (optinal args, type checks); close #173 #176
parent
4f012f57
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
248 additions
and
161 deletions
+248
-161
include/mruby.h
include/mruby.h
+1
-1
include/mruby/hash.h
include/mruby/hash.h
+1
-1
src/array.c
src/array.c
+2
-9
src/class.c
src/class.c
+169
-80
src/encoding.c
src/encoding.c
+5
-1
src/error.c
src/error.c
+0
-2
src/etc.c
src/etc.c
+1
-0
src/gc.c
src/gc.c
+8
-6
src/hash.c
src/hash.c
+4
-7
src/kernel.c
src/kernel.c
+1
-1
src/numeric.c
src/numeric.c
+4
-3
src/range.c
src/range.c
+9
-8
src/re.c
src/re.c
+3
-1
src/string.c
src/string.c
+7
-4
src/struct.c
src/struct.c
+27
-25
src/time.c
src/time.c
+3
-4
src/vm.c
src/vm.c
+3
-8
No files found.
include/mruby.h
View file @
ad9e841c
...
...
@@ -329,7 +329,7 @@ int mrb_get_args(mrb_state *mrb, const char *format, ...);
mrb_value
mrb_funcall
(
mrb_state
*
,
mrb_value
,
const
char
*
,
int
,...);
mrb_value
mrb_funcall_argv
(
mrb_state
*
,
mrb_value
,
const
char
*
,
int
,
mrb_value
*
);
mrb_value
mrb_funcall_with_block
(
mrb_state
*
,
mrb_value
,
const
char
*
,
int
,
mrb_value
*
,
struct
RProc
*
);
mrb_value
mrb_funcall_with_block
(
mrb_state
*
,
mrb_value
,
const
char
*
,
int
,
mrb_value
*
,
mrb_value
);
mrb_sym
mrb_intern
(
mrb_state
*
,
const
char
*
);
const
char
*
mrb_sym2name
(
mrb_state
*
,
mrb_sym
);
mrb_value
mrb_str_format
(
mrb_state
*
,
int
,
const
mrb_value
*
,
mrb_value
);
...
...
include/mruby/hash.h
View file @
ad9e841c
...
...
@@ -31,7 +31,7 @@ mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key);
mrb_value
mrb_hash_getWithDef
(
mrb_state
*
mrb
,
mrb_value
hash
,
mrb_value
vkey
,
mrb_value
def
);
mrb_value
mrb_hash_delete_key
(
mrb_state
*
mrb
,
mrb_value
hash
,
mrb_value
key
);
mrb_value
mrb_hash
(
mrb_state
*
mrb
,
mrb_value
obj
);
void
ruby_setenv
(
mrb_state
*
mrb
,
const
char
*
name
,
const
char
*
value
);
mrb_value
mrb_check_hash_type
(
mrb_state
*
mrb
,
mrb_value
self
);
/* RHASH_TBL allocates st_table if not available. */
#define RHASH(obj) ((struct RHash*)((obj).value.p))
...
...
src/array.c
View file @
ad9e841c
...
...
@@ -177,10 +177,7 @@ mrb_ary_concat_m(mrb_state *mrb, mrb_value self)
{
mrb_value
other
;
mrb_get_args
(
mrb
,
"o"
,
&
other
);
if
(
mrb_type
(
other
)
!=
MRB_TT_ARRAY
)
{
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"expected Array"
);
}
mrb_get_args
(
mrb
,
"A"
,
&
other
);
mrb_ary_concat
(
mrb
,
self
,
other
);
return
self
;
}
...
...
@@ -193,11 +190,7 @@ mrb_ary_plus(mrb_state *mrb, mrb_value self)
mrb_value
other
;
mrb_value
ary
;
mrb_get_args
(
mrb
,
"o"
,
&
other
);
if
(
mrb_type
(
other
)
!=
MRB_TT_ARRAY
)
{
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"expected Array"
);
}
mrb_get_args
(
mrb
,
"A"
,
&
other
);
ary
=
mrb_ary_new_capa
(
mrb
,
a1
->
len
+
RARRAY_LEN
(
other
));
a2
=
mrb_ary_ptr
(
ary
);
memcpy
(
a2
->
buf
,
a1
->
buf
,
sizeof
(
mrb_value
)
*
a1
->
len
);
...
...
src/class.c
View file @
ad9e841c
...
...
@@ -328,15 +328,67 @@ mrb_define_method_vm(mrb_state *mrb, struct RClass *c, mrb_sym name, mrb_value b
kh_value
(
h
,
k
)
=
mrb_proc_ptr
(
body
);
}
static
mrb_value
check_type
(
mrb_state
*
mrb
,
mrb_value
val
,
enum
mrb_vtype
t
,
const
char
*
c
,
const
char
*
m
)
{
mrb_value
tmp
;
tmp
=
mrb_check_convert_type
(
mrb
,
val
,
t
,
c
,
m
);
if
(
mrb_nil_p
(
tmp
))
{
mrb_raise
(
mrb
,
E_TYPE_ERROR
,
"expected %s"
,
c
);
}
return
tmp
;
}
static
mrb_value
to_str
(
mrb_state
*
mrb
,
mrb_value
val
)
{
return
check_type
(
mrb
,
val
,
MRB_TT_STRING
,
"String"
,
"to_str"
);
}
static
mrb_value
to_ary
(
mrb_state
*
mrb
,
mrb_value
val
)
{
return
check_type
(
mrb
,
val
,
MRB_TT_ARRAY
,
"Array"
,
"to_ary"
);
}
static
mrb_value
to_hash
(
mrb_state
*
mrb
,
mrb_value
val
)
{
return
check_type
(
mrb
,
val
,
MRB_TT_HASH
,
"Hash"
,
"to_hash"
);
}
/*
retrieve arguments from mrb_state.
mrb_get_args(mrb, format, ...)
returns number of arguments parsed.
fortmat specifiers:
o: Object [mrb_value]
S: String [mrb_value]
A: Array [mrb_value]
H: Hash [mrb_value]
s: String [char*,int]
z: String [char*]
a: Array [mrb_value*,int]
f: Float [mrb_float]
i: Integer [mrb_int]
&: Block [mrb_value]
*: rest argument [mrb_value*,int]
|: optional
*/
int
mrb_get_args
(
mrb_state
*
mrb
,
const
char
*
format
,
...)
{
char
c
;
int
i
=
0
;
int
i
=
0
;
mrb_value
*
sp
=
mrb
->
stack
+
1
;
va_list
ap
;
int
argc
=
mrb
->
ci
->
argc
;
int
*
argcp
;
int
opt
=
0
;
va_start
(
ap
,
format
);
if
(
argc
<
0
)
{
...
...
@@ -346,39 +398,92 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
sp
=
a
->
buf
;
}
while
((
c
=
*
format
++
))
{
if
(
argc
<
i
)
{
if
(
opt
)
continue
;
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"wrong number of arguments"
);
}
switch
(
c
)
{
case
'o'
:
{
mrb_value
*
p
;
p
=
va_arg
(
ap
,
mrb_value
*
);
*
p
=
*
sp
;
i
++
;
sp
++
;
}
break
;
case
'
i
'
:
case
'
S
'
:
{
mrb_
int
*
p
;
mrb_
value
*
p
;
p
=
va_arg
(
ap
,
mrb_
int
*
);
switch
(
sp
->
tt
)
{
case
MRB_TT_FIXNUM
:
*
p
=
mrb_fixnum
(
*
sp
);
p
=
va_arg
(
ap
,
mrb_
value
*
);
*
p
=
to_str
(
mrb
,
*
sp
);
i
++
;
sp
++
;
}
break
;
case
MRB_TT_FLOAT
:
*
p
=
(
mrb_int
)
mrb_float
(
*
sp
);
case
'A'
:
{
mrb_value
*
p
;
p
=
va_arg
(
ap
,
mrb_value
*
);
*
p
=
to_ary
(
mrb
,
*
sp
);
i
++
;
sp
++
;
}
break
;
case
MRB_TT_FALSE
:
*
p
=
0
;
case
'H'
:
{
mrb_value
*
p
;
p
=
va_arg
(
ap
,
mrb_value
*
);
*
p
=
to_hash
(
mrb
,
*
sp
);
i
++
;
sp
++
;
}
break
;
default
:
case
's'
:
{
mrb_value
tmp
;
mrb_value
ss
;
struct
RString
*
s
;
char
**
ps
=
0
;
int
*
pl
=
0
;
tmp
=
mrb_convert_type
(
mrb
,
*
sp
,
MRB_TT_FIXNUM
,
"Integer"
,
"to_int"
);
*
p
=
mrb_fixnum
(
tmp
);
ss
=
to_str
(
mrb
,
*
sp
);
s
=
mrb_str_ptr
(
ss
);
ps
=
va_arg
(
ap
,
char
**
);
*
ps
=
s
->
buf
;
pl
=
va_arg
(
ap
,
int
*
);
*
pl
=
s
->
len
;
i
++
;
sp
++
;
}
break
;
case
'z'
:
{
mrb_value
ss
;
struct
RString
*
s
;
char
**
ps
;
ss
=
to_str
(
mrb
,
*
sp
);
s
=
mrb_str_ptr
(
ss
);
if
(
strlen
(
s
->
buf
)
!=
s
->
len
)
{
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"String contains NUL"
);
}
ps
=
va_arg
(
ap
,
char
**
);
*
ps
=
s
->
buf
;
i
++
;
sp
++
;
}
break
;
case
'a'
:
{
mrb_value
aa
;
struct
RArray
*
a
;
mrb_value
**
pb
;
int
*
pl
;
aa
=
to_ary
(
mrb
,
*
sp
);
a
=
mrb_ary_ptr
(
aa
);
pb
=
va_arg
(
ap
,
mrb_value
**
);
*
pb
=
a
->
buf
;
pl
=
va_arg
(
ap
,
int
*
);
*
pl
=
a
->
len
;
i
++
;
sp
++
;
}
break
;
...
...
@@ -409,53 +514,34 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
i
++
;
sp
++
;
}
break
;
case
'
s
'
:
case
'
i
'
:
{
char
**
ps
=
0
;
size_t
*
pl
=
0
;
struct
RString
*
s
;
mrb_int
*
p
;
if
(
argc
>
i
)
{
s
=
mrb_str_ptr
(
*
sp
);
ps
=
va_arg
(
ap
,
char
**
);
*
ps
=
s
->
buf
;
pl
=
va_arg
(
ap
,
size_t
*
);
*
pl
=
s
->
len
;
}
i
++
;
sp
++
;
}
p
=
va_arg
(
ap
,
mrb_int
*
);
switch
(
sp
->
tt
)
{
case
MRB_TT_FIXNUM
:
*
p
=
mrb_fixnum
(
*
sp
);
break
;
case
'a'
:
{
mrb_value
*
var
;
var
=
va_arg
(
ap
,
mrb_value
*
);
if
(
argc
>
i
)
{
if
(
var
)
{
memcpy
(
var
,
sp
,
sizeof
(
mrb_value
)
*
(
argc
-
i
));
}
//i = mrb->argc;
}
else
{
if
(
var
)
*
var
=
mrb_ary_new
(
mrb
);
}
argcp
=
va_arg
(
ap
,
int
*
);
*
argcp
=
argc
-
i
;
goto
last_var
;
}
case
MRB_TT_FLOAT
:
*
p
=
(
mrb_int
)
mrb_float
(
*
sp
);
break
;
case
'b'
:
case
MRB_TT_FALSE
:
*
p
=
0
;
break
;
default:
{
struct
RProc
**
p
;
mrb_value
*
bp
=
mrb
->
stack
+
1
;
mrb_value
tmp
;
p
=
va_arg
(
ap
,
struct
RProc
**
);
if
(
mrb
->
ci
->
argc
>
0
)
{
bp
+=
mrb
->
ci
->
argc
;
tmp
=
mrb_convert_type
(
mrb
,
*
sp
,
MRB_TT_FIXNUM
,
"Integer"
,
"to_int"
);
*
p
=
mrb_fixnum
(
tmp
);
}
break
;
}
if
(
mrb_nil_p
(
*
bp
))
*
p
=
0
;
else
*
p
=
mrb_proc_ptr
(
*
bp
);
i
++
;
sp
++
;
}
break
;
case
'&'
:
{
mrb_value
*
p
,
*
bp
=
mrb
->
stack
+
1
;
...
...
@@ -467,30 +553,34 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
*
p
=
*
bp
;
}
break
;
case
'|'
:
opt
=
1
;
break
;
case
'*'
:
{
mrb_value
**
var
;
int
*
pl
;
var
=
va_arg
(
ap
,
mrb_value
**
);
argcp
=
va_arg
(
ap
,
int
*
);
pl
=
va_arg
(
ap
,
int
*
);
if
(
argc
>
i
)
{
*
argcp
=
argc
-
i
;
if
(
*
argcp
>
0
)
{
if
(
var
)
{
*
pl
=
argc
-
i
;
if
(
*
pl
>
0
)
{
*
var
=
sp
;
}
i
+=
*
argcp
;
i
=
argc
;
}
}
else
{
*
argcp
=
0
;
*
pl
=
0
;
*
var
=
NULL
;
}
goto
last_var
;
}
break
;
}
}
last_var:
if
(
!*
format
&&
argc
>
i
)
{
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"wrong number of arguments"
);
}
va_end
(
ap
);
return
0
;
}
...
...
@@ -679,17 +769,17 @@ mrb_value
mrb_class_new_instance_m
(
mrb_state
*
mrb
,
mrb_value
klass
)
{
mrb_value
*
argv
;
struct
RProc
*
b
;
mrb_value
blk
;
struct
RClass
*
k
=
mrb_class_ptr
(
klass
);
struct
RClass
*
c
;
int
argc
;
mrb_value
obj
;
mrb_get_args
(
mrb
,
"
b*"
,
&
b
,
&
argv
,
&
argc
);
mrb_get_args
(
mrb
,
"
*&"
,
&
argv
,
&
argc
,
&
blk
);
c
=
(
struct
RClass
*
)
mrb_obj_alloc
(
mrb
,
k
->
tt
,
k
);
c
->
super
=
k
;
obj
=
mrb_obj_value
(
c
);
mrb_funcall_with_block
(
mrb
,
obj
,
"initialize"
,
argc
,
argv
,
b
);
mrb_funcall_with_block
(
mrb
,
obj
,
"initialize"
,
argc
,
argv
,
b
lk
);
return
obj
;
}
...
...
@@ -698,18 +788,17 @@ mrb_value
mrb_instance_new
(
mrb_state
*
mrb
,
mrb_value
cv
)
{
struct
RClass
*
c
=
mrb_class_ptr
(
cv
);
struct
RProc
*
b
;
struct
RObject
*
o
;
enum
mrb_vtype
ttype
=
MRB_INSTANCE_TT
(
c
);
mrb_value
obj
;
mrb_value
obj
,
blk
;
mrb_value
*
argv
;
int
argc
;
if
(
ttype
==
0
)
ttype
=
MRB_TT_OBJECT
;
o
=
(
struct
RObject
*
)
mrb_obj_alloc
(
mrb
,
ttype
,
c
);
obj
=
mrb_obj_value
(
o
);
mrb_get_args
(
mrb
,
"
b*"
,
&
b
,
&
argv
,
&
argc
);
mrb_funcall_with_block
(
mrb
,
obj
,
"initialize"
,
argc
,
argv
,
b
);
mrb_get_args
(
mrb
,
"
*&"
,
&
argv
,
&
argc
,
&
blk
);
mrb_funcall_with_block
(
mrb
,
obj
,
"initialize"
,
argc
,
argv
,
b
lk
);
return
obj
;
}
...
...
src/encoding.c
View file @
ad9e841c
...
...
@@ -1028,8 +1028,8 @@ static mrb_value
enc_find
(
mrb_state
*
mrb
,
mrb_value
klass
)
{
mrb_value
enc
;
mrb_get_args
(
mrb
,
"o"
,
&
enc
);
mrb_get_args
(
mrb
,
"o"
,
&
enc
);
return
mrb_enc_from_encoding
(
mrb
,
to_encoding
(
mrb
,
enc
));
}
...
...
@@ -1058,6 +1058,7 @@ enc_compatible_p(mrb_state *mrb, mrb_value klass)
mrb_value
str1
;
mrb_value
str2
;
mrb_encoding
*
enc
;
mrb_get_args
(
mrb
,
"oo"
,
&
str1
,
&
str2
);
if
(
!
enc_capable
(
str1
))
return
mrb_nil_value
();
if
(
!
enc_capable
(
str2
))
return
mrb_nil_value
();
...
...
@@ -1081,6 +1082,7 @@ static mrb_value
enc_load
(
mrb_state
*
mrb
,
mrb_value
klass
)
{
mrb_value
str
;
mrb_get_args
(
mrb
,
"o"
,
&
str
);
return
enc_find
(
mrb
,
str
);
}
...
...
@@ -1277,6 +1279,7 @@ static mrb_value
set_default_external
(
mrb_state
*
mrb
,
mrb_value
klass
)
{
mrb_value
encoding
;
mrb_get_args
(
mrb
,
"o"
,
&
encoding
);
mrb_warning
(
"setting Encoding.default_external"
);
mrb_enc_set_default_external
(
mrb
,
encoding
);
...
...
@@ -1335,6 +1338,7 @@ static mrb_value
set_default_internal
(
mrb_state
*
mrb
,
mrb_value
klass
)
{
mrb_value
encoding
;
mrb_get_args
(
mrb
,
"o"
,
&
encoding
);
mrb_warning
(
"setting Encoding.default_internal"
);
mrb_enc_set_default_internal
(
mrb
,
encoding
);
...
...
src/error.c
View file @
ad9e841c
...
...
@@ -83,7 +83,6 @@ exc_exception(mrb_state *mrb, mrb_value self)
int
argc
;
mrb_get_args
(
mrb
,
"*"
,
&
argv
,
&
argc
);
if
(
argc
==
0
)
return
self
;
if
(
argc
==
1
&&
mrb_obj_equal
(
mrb
,
self
,
argv
[
0
]))
return
self
;
exc
=
mrb_obj_clone
(
mrb
,
self
);
...
...
@@ -161,7 +160,6 @@ exc_equal(mrb_state *mrb, mrb_value exc)
mrb_sym
id_mesg
=
mrb_intern
(
mrb
,
"mesg"
);
mrb_get_args
(
mrb
,
"o"
,
&
obj
);
if
(
mrb_obj_equal
(
mrb
,
exc
,
obj
))
return
mrb_true_value
();
if
(
mrb_obj_class
(
mrb
,
exc
)
!=
mrb_obj_class
(
mrb
,
obj
))
{
...
...
src/etc.c
View file @
ad9e841c
...
...
@@ -67,6 +67,7 @@ mrb_lastline_get(mrb_state *mrb)
//return mrb_nil_value();
mrb_value
*
argv
;
int
argc
;
mrb_get_args
(
mrb
,
"*"
,
&
argv
,
&
argc
);
if
(
argc
<
1
)
{
return
mrb_nil_value
();
...
...
src/gc.c
View file @
ad9e841c
...
...
@@ -844,9 +844,10 @@ gc_interval_ratio_get(mrb_state *mrb, mrb_value obj)
static
mrb_value
gc_interval_ratio_set
(
mrb_state
*
mrb
,
mrb_value
obj
)
{
mrb_value
ratio
;
mrb_get_args
(
mrb
,
"o"
,
&
ratio
);
mrb
->
gc_interval_ratio
=
mrb_fixnum
(
mrb_to_int
(
mrb
,
ratio
));
mrb_int
ratio
;
mrb_get_args
(
mrb
,
"i"
,
&
ratio
);
mrb
->
gc_interval_ratio
=
ratio
;
return
mrb_nil_value
();
}
...
...
@@ -876,9 +877,10 @@ gc_step_ratio_get(mrb_state *mrb, mrb_value obj)
static
mrb_value
gc_step_ratio_set
(
mrb_state
*
mrb
,
mrb_value
obj
)
{
mrb_value
ratio
;
mrb_get_args
(
mrb
,
"o"
,
&
ratio
);
mrb
->
gc_step_ratio
=
mrb_fixnum
(
mrb_to_int
(
mrb
,
ratio
));
mrb_int
ratio
;
mrb_get_args
(
mrb
,
"i"
,
&
ratio
);
mrb
->
gc_step_ratio
=
ratio
;
return
mrb_nil_value
();
}
...
...
src/hash.c
View file @
ad9e841c
...
...
@@ -283,7 +283,6 @@ mrb_hash_init_core(mrb_state *mrb, mrb_value hash)
int
argc
;
mrb_get_args
(
mrb
,
"o*"
,
&
block
,
&
argv
,
&
argc
);
mrb_hash_modify
(
mrb
,
hash
);
if
(
mrb_nil_p
(
block
))
{
if
(
argc
>
0
)
{
...
...
@@ -434,7 +433,6 @@ mrb_hash_default(mrb_state *mrb, mrb_value hash)
mrb_value
key
;
mrb_get_args
(
mrb
,
"*"
,
&
argv
,
&
argc
);
if
(
MRB_RHASH_PROCDEFAULT_P
(
hash
))
{
if
(
argc
==
0
)
return
mrb_nil_value
();
key
=
argv
[
0
];
...
...
@@ -470,8 +468,8 @@ static mrb_value
mrb_hash_set_default
(
mrb_state
*
mrb
,
mrb_value
hash
)
{
mrb_value
ifnone
;
mrb_get_args
(
mrb
,
"o"
,
&
ifnone
);
mrb_get_args
(
mrb
,
"o"
,
&
ifnone
);
mrb_hash_modify
(
mrb
,
hash
);
mrb_iv_set
(
mrb
,
hash
,
mrb_intern
(
mrb
,
"ifnone"
),
ifnone
);
RHASH
(
hash
)
->
flags
&=
~
(
MRB_HASH_PROC_DEFAULT
);
...
...
@@ -521,8 +519,8 @@ static mrb_value
mrb_hash_set_default_proc
(
mrb_state
*
mrb
,
mrb_value
hash
)
{
mrb_value
ifnone
;
mrb_get_args
(
mrb
,
"o"
,
&
ifnone
);
mrb_get_args
(
mrb
,
"o"
,
&
ifnone
);
mrb_hash_modify
(
mrb
,
hash
);
mrb_iv_set
(
mrb
,
hash
,
mrb_intern
(
mrb
,
"ifnone"
),
ifnone
);
RHASH
(
hash
)
->
flags
|=
MRB_HASH_PROC_DEFAULT
;
...
...
@@ -789,7 +787,6 @@ mrb_hash_replace(mrb_state *mrb, mrb_value hash)
khiter_t
k
;
mrb_get_args
(
mrb
,
"o"
,
&
hash2
);
mrb_hash_modify_check
(
mrb
,
hash
);
hash2
=
to_hash
(
mrb
,
hash2
);
if
(
mrb_obj_equal
(
mrb
,
hash
,
hash2
))
return
hash
;
...
...
@@ -1207,6 +1204,7 @@ static mrb_value
mrb_hash_equal
(
mrb_state
*
mrb
,
mrb_value
hash1
)
{
mrb_value
hash2
;
mrb_get_args
(
mrb
,
"o"
,
&
hash2
);
return
hash_equal
(
mrb
,
hash1
,
hash2
,
FALSE
);
}
...
...
@@ -1224,6 +1222,7 @@ static mrb_value
mrb_hash_eql
(
mrb_state
*
mrb
,
mrb_value
hash1
)
{
mrb_value
hash2
;
mrb_get_args
(
mrb
,
"o"
,
&
hash2
);
return
hash_equal
(
mrb
,
hash1
,
hash2
,
TRUE
);
}
...
...
@@ -1292,7 +1291,6 @@ mrb_hash_assoc(mrb_state *mrb, mrb_value hash)
mrb_value
key
,
value
,
has_key
;
mrb_get_args
(
mrb
,
"o"
,
&
key
);
if
(
mrb_nil_p
(
key
))
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"wrong number of arguments"
);
...
...
@@ -1325,7 +1323,6 @@ mrb_hash_rassoc(mrb_state *mrb, mrb_value hash)
mrb_value
key
,
value
,
has_key
;
mrb_get_args
(
mrb
,
"o"
,
&
key
);
if
(
mrb_nil_p
(
key
))
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"wrong number of arguments"
);
...
...
src/kernel.c
View file @
ad9e841c
...
...
@@ -958,10 +958,10 @@ class_instance_method_list(mrb_state *mrb, int argc, mrb_value *argv, struct RCl
}
else
{
mrb_value
r
;
mrb_get_args
(
mrb
,
"o"
,
&
r
);
recur
=
mrb_test
(
r
);
}
ary
=
mrb_ary_new
(
mrb
);
oldklass
=
0
;
while
(
klass
&&
(
klass
!=
oldklass
))
{
...
...
src/numeric.c
View file @
ad9e841c
...
...
@@ -306,6 +306,7 @@ static mrb_value
num_eql
(
mrb_state
*
mrb
,
mrb_value
x
)
{
mrb_value
y
;
mrb_get_args
(
mrb
,
"o"
,
&
y
);
if
(
mrb_type
(
x
)
!=
mrb_type
(
y
))
return
mrb_false_value
();
if
(
mrb_equal
(
mrb
,
x
,
y
))
{
...
...
@@ -942,8 +943,8 @@ fix_xor(mrb_state *mrb, mrb_value x)
{
mrb_value
y
;
mrb_int
val
;
mrb_get_args
(
mrb
,
"o"
,
&
y
);
mrb_get_args
(
mrb
,
"o"
,
&
y
);
y
=
bit_coerce
(
mrb
,
y
);
val
=
mrb_fixnum
(
x
)
^
mrb_fixnum
(
y
);
return
mrb_fixnum_value
(
val
);
...
...
@@ -965,8 +966,8 @@ mrb_fix_lshift(mrb_state *mrb, mrb_value x)
{
mrb_value
y
;
mrb_int
val
,
width
;
mrb_get_args
(
mrb
,
"o"
,
&
y
);
mrb_get_args
(
mrb
,
"o"
,
&
y
);
val
=
mrb_fixnum
(
x
);
y
=
bit_coerce
(
mrb
,
y
);
width
=
mrb_fixnum
(
y
);
...
...
@@ -1000,8 +1001,8 @@ mrb_fix_rshift(mrb_state *mrb, mrb_value x)
{
mrb_value
y
;
mrb_int
i
,
val
;
mrb_get_args
(
mrb
,
"o"
,
&
y
);
mrb_get_args
(
mrb
,
"o"
,
&
y
);
val
=
mrb_fixnum
(
x
);
y
=
bit_coerce
(
mrb
,
y
);
i
=
mrb_fixnum
(
y
);
...
...
src/range.c
View file @
ad9e841c
...
...
@@ -433,8 +433,8 @@ static mrb_value
range_eql
(
mrb_state
*
mrb
,
mrb_value
range
)
{
mrb_value
obj
;
mrb_get_args
(
mrb
,
"o"
,
&
obj
);
mrb_get_args
(
mrb
,
"o"
,
&
obj
);
if
(
mrb_obj_equal
(
mrb
,
range
,
obj
))
return
mrb_true_value
();
if
(
!
mrb_obj_is_kind_of
(
mrb
,
obj
,
RANGE_CLASS
))
...
...
@@ -447,6 +447,7 @@ mrb_value
range_initialize_copy
(
mrb_state
*
mrb
,
mrb_value
copy
)
{
mrb_value
src
;
mrb_get_args
(
mrb
,
"o"
,
&
src
);
if
(
mrb_obj_equal
(
mrb
,
copy
,
src
))
return
copy
;
...
...
src/re.c
View file @
ad9e841c
...
...
@@ -229,6 +229,7 @@ static mrb_value
mrb_reg_s_quote
(
mrb_state
*
mrb
,
mrb_value
c
/*, mrb_value str*/
)
{
mrb_value
str
;
mrb_get_args
(
mrb
,
"o"
,
&
str
);
return
mrb_reg_quote
(
mrb
,
reg_operand
(
mrb
,
str
,
1
/*TRUE*/
));
}
...
...
@@ -1520,6 +1521,7 @@ mrb_value
mrb_reg_match
(
mrb_state
*
mrb
,
mrb_value
re
/*, mrb_value str*/
)
{
mrb_value
str
;
mrb_get_args
(
mrb
,
"o"
,
&
str
);
return
mrb_reg_match_str
(
mrb
,
re
,
str
);
}
...
...
@@ -1582,7 +1584,7 @@ mrb_reg_match_m(mrb_state *mrb, /*int argc, mrb_value *argv,*/ mrb_value re)
long
pos
;
//if (mrb_scan_args(argc, argv, "11", &str, &initpos) == 2) {
mrb_get_args
(
mrb
,
"
&*"
,
&
b
,
&
argv
,
&
argc
);
mrb_get_args
(
mrb
,
"
*&"
,
&
argv
,
&
argc
,
&
b
);
if
(
argc
==
2
)
{
initpos
=
argv
[
1
];
pos
=
mrb_fixnum
(
initpos
);
...
...
src/string.c
View file @
ad9e841c
...
...
@@ -1101,6 +1101,7 @@ static mrb_value
mrb_str_match
(
mrb_state
*
mrb
,
mrb_value
self
/* x */
)
{
mrb_value
y
;
mrb_get_args
(
mrb
,
"o"
,
&
y
);
switch
(
mrb_type
(
y
))
{
case
MRB_TT_STRING
:
...
...
@@ -2048,7 +2049,7 @@ mrb_str_each_line(mrb_state *mrb, mrb_value str)
int
argc
;
//if (mrb_scan_args(argc, argv, "01", &rs) == 0) {
mrb_get_args
(
mrb
,
"
&*"
,
&
b
,
&
argv
,
&
argc
);
mrb_get_args
(
mrb
,
"
*&"
,
&
argv
,
&
argc
,
&
b
);
if
(
argc
>
0
)
{
rs
=
argv
[
0
];
}
else
{
...
...
@@ -2632,8 +2633,8 @@ mrb_str_include(mrb_state *mrb, mrb_value self)
{
mrb_int
i
;
mrb_value
str2
;
mrb_get_args
(
mrb
,
"o"
,
&
str2
);
mrb_get_args
(
mrb
,
"o"
,
&
str2
);
if
(
mrb_type
(
str2
)
==
MRB_TT_FIXNUM
)
{
if
(
memchr
(
RSTRING_PTR
(
self
),
mrb_fixnum
(
str2
),
RSTRING_LEN
(
self
)))
return
mrb_true_value
();
...
...
@@ -2955,7 +2956,8 @@ mrb_str_match_m(mrb_state *mrb, mrb_value self)
mrb_value
*
argv
;
int
argc
;
mrb_value
re
,
result
,
b
;
mrb_get_args
(
mrb
,
"&*"
,
&
b
,
&
argv
,
&
argc
);
mrb_get_args
(
mrb
,
"*&"
,
&
argv
,
&
argc
,
&
b
);
if
(
argc
<
1
)
mrb_raise
(
mrb
,
E_ARGUMENT_ERROR
,
"wrong number of arguments (%d for 1..2)"
,
argc
);
re
=
argv
[
0
];
...
...
@@ -3336,7 +3338,7 @@ mrb_str_scan(mrb_state *mrb, mrb_value str)
char
*
p
=
ps
->
buf
;
long
len
=
ps
->
len
;
mrb_get_args
(
mrb
,
"
&o"
,
&
b
,
&
pat
);
mrb_get_args
(
mrb
,
"
o&"
,
&
pat
,
&
b
);
pat
=
get_pat
(
mrb
,
pat
,
1
);
if
(
!
mrb_block_given_p
())
{
mrb_value
ary
=
mrb_ary_new
(
mrb
);
...
...
@@ -4292,6 +4294,7 @@ static mrb_value
mrb_str_force_encoding
(
mrb_state
*
mrb
,
mrb_value
self
)
{
mrb_value
enc
;
mrb_get_args
(
mrb
,
"o"
,
&
enc
);
str_modifiable
(
self
);
mrb_enc_associate
(
mrb
,
self
,
mrb_to_encoding
(
mrb
,
enc
));
...
...
src/struct.c
View file @
ad9e841c
...
...
@@ -533,6 +533,7 @@ mrb_value
mrb_struct_init_copy
(
mrb_state
*
mrb
,
mrb_value
copy
)
{
mrb_value
s
;
mrb_get_args
(
mrb
,
"o"
,
&
s
);
if
(
mrb_obj_equal
(
mrb
,
copy
,
s
))
return
copy
;
...
...
@@ -668,6 +669,7 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s)
long
i
;
mrb_value
idx
;
mrb_value
val
;
mrb_get_args
(
mrb
,
"oo"
,
&
idx
,
&
val
);
if
(
mrb_type
(
idx
)
==
MRB_TT_STRING
||
mrb_type
(
idx
)
==
MRB_TT_SYMBOL
)
{
...
...
src/time.c
View file @
ad9e841c
...
...
@@ -268,7 +268,7 @@ mrb_time_gm(mrb_state *mrb, mrb_value self)
{
mrb_int
ayear
=
0
,
amonth
=
1
,
aday
=
1
,
ahour
=
0
,
amin
=
0
,
asec
=
0
,
ausec
=
0
;
mrb_get_args
(
mrb
,
"iiiiiii"
,
mrb_get_args
(
mrb
,
"i
|
iiiiii"
,
&
ayear
,
&
amonth
,
&
aday
,
&
ahour
,
&
amin
,
&
asec
,
&
ausec
);
return
mrb_time_wrap
(
mrb
,
mrb_class_ptr
(
self
),
time_mktime
(
mrb
,
ayear
,
amonth
,
aday
,
ahour
,
amin
,
asec
,
ausec
,
MRB_TIMEZONE_UTC
));
...
...
@@ -282,7 +282,7 @@ mrb_time_local(mrb_state *mrb, mrb_value self)
{
mrb_int
ayear
=
0
,
amonth
=
1
,
aday
=
1
,
ahour
=
0
,
amin
=
0
,
asec
=
0
,
ausec
=
0
;
mrb_get_args
(
mrb
,
"iiiiiii"
,
mrb_get_args
(
mrb
,
"i
|
iiiiii"
,
&
ayear
,
&
amonth
,
&
aday
,
&
ahour
,
&
amin
,
&
asec
,
&
ausec
);
return
mrb_time_wrap
(
mrb
,
mrb_class_ptr
(
self
),
time_mktime
(
mrb
,
ayear
,
amonth
,
aday
,
ahour
,
amin
,
asec
,
ausec
,
MRB_TIMEZONE_LOCAL
));
...
...
@@ -352,7 +352,6 @@ mrb_time_minus(mrb_state *mrb, mrb_value self)
struct
mrb_time
*
tm
;
mrb_get_args
(
mrb
,
"f"
,
&
f
);
tm
=
mrb_get_datatype
(
mrb
,
self
,
&
mrb_time_type
);
if
(
!
tm
)
return
mrb_nil_value
();
f
-=
tm
->
sec
;
...
...
@@ -499,8 +498,8 @@ static mrb_value
mrb_time_initialize_copy
(
mrb_state
*
mrb
,
mrb_value
copy
)
{
mrb_value
src
;
mrb_get_args
(
mrb
,
"o"
,
&
src
);
mrb_get_args
(
mrb
,
"o"
,
&
src
);
if
(
mrb_obj_equal
(
mrb
,
copy
,
src
))
return
copy
;
if
(
!
mrb_obj_is_instance_of
(
mrb
,
src
,
mrb_obj_class
(
mrb
,
copy
)))
{
mrb_raise
(
mrb
,
E_TYPE_ERROR
,
"wrong argument class"
);
...
...
src/vm.c
View file @
ad9e841c
...
...
@@ -160,7 +160,7 @@ ecall(mrb_state *mrb, int i)
}
mrb_value
mrb_funcall_with_block
(
mrb_state
*
mrb
,
mrb_value
self
,
const
char
*
name
,
int
argc
,
mrb_value
*
argv
,
struct
RProc
*
blk
)
mrb_funcall_with_block
(
mrb_state
*
mrb
,
mrb_value
self
,
const
char
*
name
,
int
argc
,
mrb_value
*
argv
,
mrb_value
blk
)
{
struct
RProc
*
p
;
struct
RClass
*
c
;
...
...
@@ -197,12 +197,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int arg
else
if
(
argc
>
0
)
{
memcpy
(
mrb
->
stack
+
1
,
argv
,
sizeof
(
mrb_value
)
*
argc
);
}
if
(
!
blk
)
{
mrb
->
stack
[
argc
+
1
]
=
mrb_nil_value
();
}
else
{
mrb
->
stack
[
argc
+
1
]
=
mrb_obj_value
(
blk
);
}
mrb
->
stack
[
argc
+
1
]
=
blk
;
if
(
MRB_PROC_CFUNC_P
(
p
))
{
val
=
p
->
body
.
func
(
mrb
,
self
);
...
...
@@ -218,7 +213,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, const char *name, int arg
mrb_value
mrb_funcall_argv
(
mrb_state
*
mrb
,
mrb_value
self
,
const
char
*
name
,
int
argc
,
mrb_value
*
argv
)
{
return
mrb_funcall_with_block
(
mrb
,
self
,
name
,
argc
,
argv
,
0
);
return
mrb_funcall_with_block
(
mrb
,
self
,
name
,
argc
,
argv
,
mrb_nil_value
()
);
}
mrb_value
...
...
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