simplify _make_struct_type signature

svn: r18674
This commit is contained in:
Kevin Tew 2010-03-30 17:55:59 +00:00
parent 0289edf0cb
commit a10c42a852

View File

@ -3518,7 +3518,7 @@ static Scheme_Object *add_struct_type_chaperone_guards(Scheme_Object *o, Scheme_
return scheme_make_pair(orig_guard, first); return scheme_make_pair(orig_guard, first);
} }
static Scheme_Object *_make_struct_type(Scheme_Object *basesym, const char *base, int blen, static Scheme_Object *_make_struct_type(Scheme_Object *base,
Scheme_Object *parent, Scheme_Object *parent,
Scheme_Object *inspector, Scheme_Object *inspector,
int num_fields, int num_fields,
@ -3554,14 +3554,8 @@ static Scheme_Object *_make_struct_type(Scheme_Object *basesym, const char *base
struct_type->parent_types[j] = parent_type->parent_types[j]; struct_type->parent_types[j] = parent_type->parent_types[j];
} }
{ struct_type->name = base;
Scheme_Object *tn;
if (basesym)
tn = basesym;
else
tn = scheme_intern_exact_symbol(base, blen);
struct_type->name = tn;
}
struct_type->num_slots = num_fields + num_uninit_fields + (parent_type ? parent_type->num_slots : 0); struct_type->num_slots = num_fields + num_uninit_fields + (parent_type ? parent_type->num_slots : 0);
struct_type->num_islots = num_fields + (parent_type ? parent_type->num_islots : 0); struct_type->num_islots = num_fields + (parent_type ? parent_type->num_islots : 0);
if (parent_type) if (parent_type)
@ -3856,7 +3850,7 @@ Scheme_Object *scheme_make_struct_type(Scheme_Object *base,
Scheme_Object *properties, Scheme_Object *properties,
Scheme_Object *guard) Scheme_Object *guard)
{ {
return _make_struct_type(base, NULL, 0, return _make_struct_type(base,
parent, inspector, parent, inspector,
num_fields, num_uninit, num_fields, num_uninit,
uninit_val, properties, uninit_val, properties,
@ -3872,7 +3866,7 @@ Scheme_Object *scheme_make_proc_struct_type(Scheme_Object *base,
Scheme_Object *proc_attr, Scheme_Object *proc_attr,
Scheme_Object *guard) Scheme_Object *guard)
{ {
return _make_struct_type(base, NULL, 0, return _make_struct_type(base,
parent, inspector, parent, inspector,
num_fields, num_uninit, num_fields, num_uninit,
uninit_val, scheme_null, uninit_val, scheme_null,
@ -3887,6 +3881,7 @@ Scheme_Object *scheme_make_struct_type_from_string(const char *base,
Scheme_Object *guard, Scheme_Object *guard,
int immutable) int immutable)
{ {
Scheme_Object *basesym;
Scheme_Object *imm = scheme_null; Scheme_Object *imm = scheme_null;
int i; int i;
@ -3896,7 +3891,9 @@ Scheme_Object *scheme_make_struct_type_from_string(const char *base,
} }
} }
return _make_struct_type(NULL, base, strlen(base), basesym = scheme_intern_exact_symbol(base, strlen(base));
return _make_struct_type(basesym,
parent, scheme_false, parent, scheme_false,
num_fields, 0, num_fields, 0,
NULL, props, NULL, props,
@ -4070,7 +4067,7 @@ static Scheme_Object *make_struct_type(int argc, Scheme_Object **argv)
} }
} }
type = (Scheme_Struct_Type *)_make_struct_type(argv[0], NULL, 0, type = (Scheme_Struct_Type *)_make_struct_type(argv[0],
SCHEME_FALSEP(argv[1]) ? NULL : argv[1], SCHEME_FALSEP(argv[1]) ? NULL : argv[1],
inspector, inspector,
initc, uninitc, initc, uninitc,
@ -4274,7 +4271,7 @@ Scheme_Struct_Type *scheme_lookup_prefab_type(Scheme_Object *key, int field_coun
if (parent && (icnt + parent->num_slots > MAX_STRUCT_FIELD_COUNT)) if (parent && (icnt + parent->num_slots > MAX_STRUCT_FIELD_COUNT))
return NULL; return NULL;
parent = (Scheme_Struct_Type *)_make_struct_type(name, NULL, 0, parent = (Scheme_Struct_Type *)_make_struct_type(name,
(Scheme_Object *)parent, (Scheme_Object *)parent,
scheme_false, scheme_false,
icnt, ucnt, icnt, ucnt,