- switch(trait->kind) {
- case TRAIT_METHOD: type="static method";break;
- case TRAIT_CONST: type="constant";break;
- case TRAIT_FUNCTION: type="static function";break;
- case TRAIT_GETTER: type="static variable";break;
- case TRAIT_SETTER: type="static variable";break;
- case TRAIT_SLOT: type="static variable";break;
- case TRAIT_CLASS: type="static subclass";break;
+ }
+ }
+ qsort(traits, num_methods, sizeof(trait_t*), compare_traits);
+ const char*last_package = "-xxx-";
+ for(t=0;t<num_methods;t++) {
+ trait_t*trait = traits[t];
+ if(IS_PUBLIC_MEMBER(trait)) {
+ const char*package = trait->name->ns->name;
+ const char*name = trait->name->name;
+ char*pid = mkpid(package);
+ char*id2 = mkid2(trait->name);
+ int flags = FLAG_STATIC|access2flags(trait->name);
+ NEW(memberinfo_t,m);
+ char np = 0;
+ int clsflags = FLAG_STATIC | FLAG_METHOD;
+ if(pass==0) {
+ fprintf(fi, "static memberinfo_t %s;\n", id2);
+ fprintf(fi, "static classinfo_t %s_class;\n", id2);
+ } else if(pass==1) {
+ write_member_info(fi, 0, id2, name, flags, trait);
+ fprintf(fi, "static classinfo_t %s_class = {0x%02x, 0x%02x, \"%s\", \"%s\", &%s, 0, members:{0}};\n",
+ id2,
+ trait->name->ns->access, clsflags,
+ package, name,
+ id2);
+ } else if(pass==3) {
+ /*if(np) {
+ fprintf(fi, " dict_init(%s.classes, 1); //not used yet\n", pid);
+ fprintf(fi, " dict_init(%s.functions, 1);\n", pid);
+ }
+ fprintf(fi, " dict_put(&%s.functions, \"%s\", &%s);\n", pid, name, id2);*/
+ fprintf(fi, " dict_put(d, &%s_class, &%s_class);\n", id2, id2);