diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-05-13 07:26:47 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-05-13 07:26:47 +0000 |
commit | ae2fe781dd4aae16a2f03a4b9fb93514eb9886d4 (patch) | |
tree | bc7b2f6399af854b2b7e3515916c5f51d970bf57 /struct.c | |
parent | ad592443af373c3bbe61b41df106734856ad3072 (diff) |
1.1b9_19
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -10,6 +10,10 @@ #include "ruby.h" +#ifdef USE_CWGUSI +#include <stdio.h> +#endif + ID rb_frame_last_func(); VALUE cStruct; extern VALUE mEnumerable; @@ -161,12 +165,22 @@ make_struct(name, member, klass) return nstr; } +#ifdef __STDC__ +#include <stdarg.h> +#define va_init_list(a,b) va_start(a,b) +#else #include <varargs.h> +#define va_init_list(a,b) va_start(a) +#endif VALUE +#ifdef __STDC__ +struct_define(char *name, ...) +#else struct_define(name, va_alist) char *name; va_dcl +#endif { va_list ar; VALUE nm, ary; @@ -175,7 +189,7 @@ struct_define(name, va_alist) nm = str_new2(name); ary = ary_new(); - va_start(ar); + va_init_list(ar, name); while (mem = va_arg(ar, char*)) { ID slot = rb_intern(mem); ary_push(ary, INT2FIX(slot)); @@ -235,9 +249,13 @@ struct_alloc(klass, values) } VALUE +#ifdef __STDC__ +struct_new(VALUE klass, ...) +#else struct_new(klass, va_alist) VALUE klass; va_dcl +#endif { VALUE val, mem; int size; @@ -246,7 +264,7 @@ struct_new(klass, va_alist) val = rb_iv_get(klass, "__size__"); size = FIX2INT(val); mem = ary_new(); - va_start(args); + va_init_list(args, klass); while (size--) { val = va_arg(args, VALUE); ary_push(mem, val); |