/* generated by Id 1.1 at ,$ */ /* with the command: -I../stage1/ -c _object.st -o ../stage2/_object.o.c */ #include static struct __libid *_libid= 0; #ifdef ID_DEBUG # define _enter(info) void *__id_debug= _libid->enter(info) # define _line(lno) _libid->line(lno) # define _leave() _libid->leave(__id_debug) # define _backtrace() _libid->backtrace() #else # define _enter(info) (void)info # define _line(lno) # define _leave() # define _backtrace() "(no debugging information)\n" #endif #define _return _leave(); return #define _sendv(MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (RCV) }; \ ((_imp_t)(_libid->bindv(&_s)))(&_s, _s.receiver, _s.receiver, ##ARG); \ }) #define _superv(TYP, MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (TYP) }; \ _imp_t _imp= _libid->bindv(&_s); \ _s.receiver= (RCV); \ _imp(&_s, _s.receiver, _s.receiver, ##ARG); \ }) static oop s_new_5f_= 0; static oop s__5fstring= 0; static oop s_size_5f_value_5f_= 0; static oop s__5fdebugName= 0; static oop s__5ftypeName_doesNotUnderstand_= 0; static oop s_doesNotUnderstand_= 0; static oop s__5fsizeof= 0; static struct _Selector { const char *name; oop *addr; } _Selectors[]= { { "new_:", &s_new_5f_ }, { "_string", &s__5fstring }, { "size_:value_:", &s_size_5f_value_5f_ }, { "_debugName", &s__5fdebugName }, { "_typeName:doesNotUnderstand:", &s__5ftypeName_doesNotUnderstand_ }, { "doesNotUnderstand:", &s_doesNotUnderstand_ }, { "_sizeof", &s__5fsizeof }, { 0, 0 } }; struct t__object { struct _vtable *_vtable[0]; }; struct t__selector { struct _vtable *_vtable[0]; oop v__size; oop v__elements; }; struct t__assoc { struct _vtable *_vtable[0]; oop v_key; oop v_value; }; struct t__closure { struct _vtable *_vtable[0]; oop v__method; oop v_data; }; struct t__vector { struct _vtable *_vtable[0]; oop v__size; }; struct t__vtable { struct _vtable *_vtable[0]; oop v__tally; oop v_bindings; oop v_delegate; }; static oop v__object= 0; static oop v__selector= 0; static oop v__assoc= 0; static oop v__closure= 0; static oop v__vector= 0; static oop v__vtable= 0; static struct __methodinfo __info1= { "_debugName", "_object", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 48, 48, 0 }; static oop _object___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info1); oop _1= 0; _line(48); { # define self ((struct t__object *)v_self) return (oop)"_object"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info2= { "_sizeof", "_object", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 48, 49, &__info1 }; static oop _object___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info2); oop _1= 0; _line(48); { # define self ((struct t__object *)v_self) return (oop)(long)sizeof(struct t__object ); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info3= { "_debugName", "_selector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 49, 49, &__info2 }; static oop _selector___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info3); oop _1= 0; _line(49); { # define self ((struct t__selector *)v_self) return (oop)"_selector"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info4= { "_sizeof", "_selector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 49, 50, &__info3 }; static oop _selector___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info4); oop _1= 0; _line(49); { # define self ((struct t__selector *)v_self) return (oop)(long)sizeof(struct t__selector); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info5= { "_debugName", "_assoc", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 50, 50, &__info4 }; static oop _assoc___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info5); oop _1= 0; _line(50); { # define self ((struct t__assoc *)v_self) return (oop)"_assoc"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info6= { "_sizeof", "_assoc", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 50, 51, &__info5 }; static oop _assoc___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info6); oop _1= 0; _line(50); { # define self ((struct t__assoc *)v_self) return (oop)(long)sizeof(struct t__assoc ); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info7= { "_debugName", "_closure", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 51, 51, &__info6 }; static oop _closure___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info7); oop _1= 0; _line(51); { # define self ((struct t__closure *)v_self) return (oop)"_closure"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info8= { "_sizeof", "_closure", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 51, 52, &__info7 }; static oop _closure___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info8); oop _1= 0; _line(51); { # define self ((struct t__closure *)v_self) return (oop)(long)sizeof(struct t__closure ); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info9= { "_debugName", "_vector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 52, 52, &__info8 }; static oop _vector___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info9); oop _1= 0; _line(52); { # define self ((struct t__vector *)v_self) return (oop)"_vector"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info10= { "_sizeof", "_vector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 52, 53, &__info9 }; static oop _vector___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info10); oop _1= 0; _line(52); { # define self ((struct t__vector *)v_self) return (oop)(long)sizeof(struct t__vector ); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info11= { "_debugName", "_vtable", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 53, 53, &__info10 }; static oop _vtable___5fdebugName(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info11); oop _1= 0; _line(53); { # define self ((struct t__vtable *)v_self) return (oop)"_vtable"; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info12= { "_sizeof", "_vtable", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 53, 57, &__info11 }; static oop _vtable___5fsizeof(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info12); oop _1= 0; _line(53); { # define self ((struct t__vtable *)v_self) return (oop)(long)sizeof(struct t__vtable ); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info13= { "doesNotUnderstand:", "_object", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 57, 62, &__info12 }; static oop _object__doesNotUnderstand_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aSelector) { _enter(&__info13); oop _1= 0; oop _2= 0; oop _3= 0; _line(57); _1= v_self; _2= v_self; _line(59); _2=_sendv(s__5fdebugName, 1, _2); _3= v_aSelector; _line(59); _3=_sendv(s__5fstring, 1, _3); _line(59); _1=_sendv(s__5ftypeName_doesNotUnderstand_, 3, _1, _2, _3); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info14= { "_typeName:doesNotUnderstand:", "_object", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 62, 69, &__info13 }; static oop _object___5ftypeName_doesNotUnderstand_(oop v__closure, oop v_stateful_self, oop v_self, oop v__cName, oop v__cSelector) { _enter(&__info14); oop _1= 0; _line(62); { # define self ((struct t__object *)v_self) fprintf(stderr, "%s does not understand '%s'\n", (char *)v__cName, (char *)v__cSelector); fputs(_backtrace(), stderr); abort(); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info15= { "size_:value_:", "_selector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 69, 77, &__info14 }; static oop _selector__size_5f_value_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__stringSize, oop v__stringValue) { _enter(&__info15); oop _1= 0; _line(69); { # define self ((struct t__selector *)v_self) char *buf= alloca((size_t)v__stringSize + 1); memcpy((void *)buf, (void *)v__stringValue, (size_t)v__stringSize); buf[(size_t)v__stringSize]= '\0'; return _libid->intern(buf); # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info16= { "_string", "_selector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 77, 84, &__info15 }; static oop _selector___5fstring(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info16); oop _1= 0; _line(77); _1= ((struct t__selector *)v_stateful_self)->v__elements; _leave(); return _1; _leave(); } static struct __methodinfo __info17= { "new_:", "_vector", "/Users/piumarta/src/idst/object/st80/_object.st", 0, 84, 92, &__info16 }; static oop _vector__new_5f_(oop v__closure, oop v_stateful_self, oop v_self, oop v__newSize) { _enter(&__info17); oop _1= 0; _line(84); { # define self ((struct t__vector *)v_self) #ifndef STAGE1 v_stateful_self= #endif v_self= _libid->alloc(v_self, sizeof(struct t__vector) + sizeof(oop) * (size_t)v__newSize); ((struct t__vector *)v_self)->v__size= v__newSize; # undef self } _1= 0; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info= { "__id__init__", "", "_object.st", 0, 0, 0, &__info17 }; void __id__init___5fobject(struct __libid *__libid) { if (_libid) return; if (!(_libid= __libid)) { fprintf(stderr, "init _libid %p\n", __libid); abort(); } # define GC_add_roots _libid->gc_addRoots GC_INIT(); { struct _Selector *s= 0; for (s= _Selectors; s->name; ++s) *s->addr= _libid->intern(s->name); } _enter(&__info); _libid->infos(&__info, &__info1); v__object= _libid->import("_object"); v__selector= _libid->import("_selector"); v__assoc= _libid->import("_assoc"); v__closure= _libid->import("_closure"); v__vector= _libid->import("_vector"); v__vtable= _libid->import("_vtable"); _libid->method(v__object, s__5fdebugName, (_imp_t)_object___5fdebugName); _libid->method(v__object, s__5fsizeof, (_imp_t)_object___5fsizeof); _libid->method(v__selector, s__5fdebugName, (_imp_t)_selector___5fdebugName); _libid->method(v__selector, s__5fsizeof, (_imp_t)_selector___5fsizeof); _libid->method(v__assoc, s__5fdebugName, (_imp_t)_assoc___5fdebugName); _libid->method(v__assoc, s__5fsizeof, (_imp_t)_assoc___5fsizeof); _libid->method(v__closure, s__5fdebugName, (_imp_t)_closure___5fdebugName); _libid->method(v__closure, s__5fsizeof, (_imp_t)_closure___5fsizeof); _libid->method(v__vector, s__5fdebugName, (_imp_t)_vector___5fdebugName); _libid->method(v__vector, s__5fsizeof, (_imp_t)_vector___5fsizeof); _libid->method(v__vtable, s__5fdebugName, (_imp_t)_vtable___5fdebugName); _libid->method(v__vtable, s__5fsizeof, (_imp_t)_vtable___5fsizeof); _libid->method(v__object, s_doesNotUnderstand_, (_imp_t)_object__doesNotUnderstand_); _libid->method(v__object, s__5ftypeName_doesNotUnderstand_, (_imp_t)_object___5ftypeName_doesNotUnderstand_); _libid->method(v__selector, s_size_5f_value_5f_, (_imp_t)_selector__size_5f_value_5f_); _libid->method(v__selector, s__5fstring, (_imp_t)_selector___5fstring); _libid->method(v__vector, s_new_5f_, (_imp_t)_vector__new_5f_); _leave(); }