+ if(s->kind == INFOTYPE_CLASS) {
+ classinfo_t*c = (classinfo_t*)s;
+ dict_t*d = &c->members;
+ DICT_ITERATE_DATA(d, slotinfo_t*, s1) {
+ fprintf(fi, "static %s %s;\n", mktype(s1), mkid2(id, s1->name));
+ }
+ DICT_ITERATE_DATA(d, slotinfo_t*, s2) {
+ fprintf(fi, "static %s %s;\n", mktype(s2), mkid2(id, s2->name));
+ }
+ }
+}
+void write_initinfo(FILE*fi, slotinfo_t*s, char*prefix)
+{
+ if(s->kind == INFOTYPE_CLASS) {
+ classinfo_t*c = (classinfo_t*)s;
+ char*id = mkid(c);
+ dict_t*d1 = &c->members;
+ dict_t*d2 = &c->static_members;
+ fprintf(fi, "%s", prefix);
+ fprintf(fi, "dict_init2(&%s.members, &memberinfo_type, %d);\n", id, d1->hashsize);
+ fprintf(fi, "%s", prefix);
+ fprintf(fi, "dict_init2(&%s.static_members, &memberinfo_type, %d);\n", id, d2->hashsize);
+ int t;
+ DICT_ITERATE_DATA(d1,slotinfo_t*,s1) {
+ fprintf(fi, "%s", prefix);
+ char*id2 = mkid2(id, s1->name);
+ fprintf(fi, "dict_put(&%s.members, &%s, &%s);\n", id, id2, id2);
+ }
+ DICT_ITERATE_DATA(d2,slotinfo_t*,s2) {
+ fprintf(fi, "%s", prefix);
+ char*id2 = mkid2(id, s2->name);
+ fprintf(fi, "dict_put(&%s.static_members, &%s, &%s);\n", id, id2, id2);
+ }
+ }
+}