MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

migrate to prototype based EventTarget constructor and methods

+45 -24
+45 -24
src/modules/events.c
··· 518 518 static jsval_t js_eventemitter_constructor(struct js *js, jsval_t *args, int nargs) { 519 519 (void)args; (void)nargs; 520 520 521 + jsval_t proto = js_get_ctor_proto(js, "EventEmitter", 12); 521 522 jsval_t obj = js_mkobj(js); 523 + js_set_proto(js, obj, proto); 522 524 523 - js_set(js, obj, "on", js_mkfun(js_eventemitter_on)); 524 - js_set(js, obj, "addListener", js_mkfun(js_eventemitter_on)); 525 - js_set(js, obj, "once", js_mkfun(js_eventemitter_once)); 526 - js_set(js, obj, "off", js_mkfun(js_eventemitter_off)); 527 - js_set(js, obj, "removeListener", js_mkfun(js_eventemitter_off)); 528 - js_set(js, obj, "emit", js_mkfun(js_eventemitter_emit)); 529 - js_set(js, obj, "removeAllListeners", js_mkfun(js_eventemitter_removeAllListeners)); 530 - js_set(js, obj, "listenerCount", js_mkfun(js_eventemitter_listenerCount)); 531 - js_set(js, obj, "eventNames", js_mkfun(js_eventemitter_eventNames)); 532 - js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "EventEmitter", 12)); 525 + return obj; 526 + } 527 + 528 + static jsval_t js_eventtarget_constructor(struct js *js, jsval_t *args, int nargs) { 529 + (void)args; (void)nargs; 530 + 531 + jsval_t proto = js_get_ctor_proto(js, "EventTarget", 11); 532 + jsval_t obj = js_mkobj(js); 533 + js_set_proto(js, obj, proto); 533 534 534 535 return obj; 535 536 } ··· 537 538 jsval_t events_library(struct js *js) { 538 539 jsval_t lib = js_mkobj(js); 539 540 540 - js_set(js, lib, "EventEmitter", js_mkfun(js_eventemitter_constructor)); 541 + jsval_t eventemitter_ctor = js_mkobj(js); 542 + jsval_t eventemitter_proto = js_mkobj(js); 543 + 544 + js_set(js, eventemitter_proto, "on", js_mkfun(js_eventemitter_on)); 545 + js_set(js, eventemitter_proto, "addListener", js_mkfun(js_eventemitter_on)); 546 + js_set(js, eventemitter_proto, "once", js_mkfun(js_eventemitter_once)); 547 + js_set(js, eventemitter_proto, "off", js_mkfun(js_eventemitter_off)); 548 + js_set(js, eventemitter_proto, "removeListener", js_mkfun(js_eventemitter_off)); 549 + js_set(js, eventemitter_proto, "emit", js_mkfun(js_eventemitter_emit)); 550 + js_set(js, eventemitter_proto, "removeAllListeners", js_mkfun(js_eventemitter_removeAllListeners)); 551 + js_set(js, eventemitter_proto, "listenerCount", js_mkfun(js_eventemitter_listenerCount)); 552 + js_set(js, eventemitter_proto, "eventNames", js_mkfun(js_eventemitter_eventNames)); 553 + js_set(js, eventemitter_proto, get_toStringTag_sym_key(), js_mkstr(js, "EventEmitter", 12)); 554 + 555 + js_set_slot(js, eventemitter_ctor, SLOT_CFUNC, js_mkfun(js_eventemitter_constructor)); 556 + js_mkprop_fast(js, eventemitter_ctor, "prototype", 9, eventemitter_proto); 557 + js_mkprop_fast(js, eventemitter_ctor, "name", 4, ANT_STRING("EventEmitter")); 558 + js_set_descriptor(js, eventemitter_ctor, "name", 4, 0); 559 + 560 + js_set(js, lib, "EventEmitter", js_obj_to_func(eventemitter_ctor)); 541 561 js_set(js, lib, get_toStringTag_sym_key(), js_mkstr(js, "events", 6)); 542 562 543 563 return lib; 544 564 } 545 565 546 - static jsval_t EventTarget(struct js *js, jsval_t *args, int nargs) { 547 - (void)args; (void)nargs; 548 - 549 - jsval_t obj = js_mkobj(js); 550 - js_set(js, obj, "addEventListener", js_mkfun(js_add_event_listener_method)); 551 - js_set(js, obj, "removeEventListener", js_mkfun(js_remove_event_listener_method)); 552 - js_set(js, obj, "dispatchEvent", js_mkfun(js_dispatch_event_method)); 553 - js_set(js, obj, get_toStringTag_sym_key(), js_mkstr(js, "EventTarget", 11)); 554 - 555 - return obj; 556 - } 557 - 558 566 void init_events_module() { 559 567 struct js *js = rt->js; 560 568 jsval_t global = js_glob(js); 561 569 570 + jsval_t eventtarget_ctor = js_mkobj(js); 571 + jsval_t eventtarget_proto = js_mkobj(js); 572 + 573 + js_set(js, eventtarget_proto, "addEventListener", js_mkfun(js_add_event_listener_method)); 574 + js_set(js, eventtarget_proto, "removeEventListener", js_mkfun(js_remove_event_listener_method)); 575 + js_set(js, eventtarget_proto, "dispatchEvent", js_mkfun(js_dispatch_event_method)); 576 + js_set(js, eventtarget_proto, get_toStringTag_sym_key(), js_mkstr(js, "EventTarget", 11)); 577 + 578 + js_set_slot(js, eventtarget_ctor, SLOT_CFUNC, js_mkfun(js_eventtarget_constructor)); 579 + js_mkprop_fast(js, eventtarget_ctor, "prototype", 9, eventtarget_proto); 580 + js_mkprop_fast(js, eventtarget_ctor, "name", 4, ANT_STRING("EventTarget")); 581 + js_set_descriptor(js, eventtarget_ctor, "name", 4, 0); 582 + 562 583 js_set(js, global, "addEventListener", js_mkfun(js_add_event_listener)); 563 584 js_set(js, global, "removeEventListener", js_mkfun(js_remove_event_listener)); 564 585 js_set(js, global, "dispatchEvent", js_mkfun(js_dispatch_event)); 565 586 js_set(js, global, "getEventListeners", js_mkfun(js_get_event_listeners)); 566 - js_set(js, global, "EventTarget", js_mkfun(EventTarget)); 587 + js_set(js, global, "EventTarget", js_obj_to_func(eventtarget_ctor)); 567 588 }