* struct.c: #include "alist.h", "weaks.h", "hashtab.h";
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Sun, 14 Mar 1999 16:52:32 +0000 (16:52 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Sun, 14 Mar 1999 16:52:32 +0000 (16:52 +0000)
commit98d5f6018aaaff6a76081ea8712568bb3336455e
tree38d8a8cb0ecfca4cb7eb74de1a45295e55d83212
parentda61c37a083928f8de0d4fc549718f9c95552926
* struct.c: #include "alist.h", "weaks.h", "hashtab.h";
(scm_struct_table): Weak key table with auxilliary information for
struct types.  Currently used for names and wrapper classes.
(scm_struct_ihashq): Hash function for structs.
(scm_struct_create_handle): Get/create entry in scm_struct_table.
(scm_struct_vtable_name, scm_set_struct_vtable_name_x): Procedures
for accessing names of vtables.  The record implementation in
boot-9.scm currently uses the setter to record the name of record
types.  When the object system is initialized, it can use this
information to create wrapper classes with suitable names.
(scm_init_struct): Allocate scm_struct_table.
(scm_alloc_struct): Don't initialize scm_struct_i_tag here.
(struct tags are a finite resource and we might want to restrict
the use of tags to vtables only.  E.g., Goops only uses tags for
classes.)
(scm_make_struct): Use scm_struct_entity_n_extra_words instead of
magic number 5.
(scm_struct_vtable_tag): Use scm_struct_i_tag instead of magic
number -1.
libguile/struct.c