lref_t initialize_port(lref_t port, struct port_class_t * cls, lref_t port_name, enum port_mode_t mode, lref_t user_object, void *user_data) { assert(cls != NULL); assert(!NULLP(port)); SET_PORT_PINFO(port, gc_malloc(sizeof(struct port_info_t))); SET_PORT_CLASS(port, cls); PORT_PINFO(port)->port_name = port_name; PORT_PINFO(port)->user_data = user_data; PORT_PINFO(port)->user_object = user_object; PORT_PINFO(port)->mode = mode; SET_PORT_TEXT_INFO(port, NULL);; if (PORT_CLASS(port)->open) PORT_CLASS(port)->open(port); return port; }
void init_debugger_output() { interp.debugger_output.header.type = TC_PORT; initialize_port(&interp.debugger_output, &debug_port_class, NIL, PORT_OUTPUT, NIL, NULL); SET_PORT_TEXT_INFO(&interp.debugger_output, allocate_text_info()); }
void text_port_open(lref_t port) { SET_PORT_TEXT_INFO(port, allocate_text_info()); }