simplify _make_struct_type signature
svn: r18674
This commit is contained in:
parent
0289edf0cb
commit
a10c42a852
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user