/* Return a new port of type PORT_TYPE. */ static inline SCM make_port (scm_t_bits port_type) { SCM port; char *c_buffer; scm_t_port *c_port; c_buffer = scm_gc_calloc (PORT_BUFFER_SIZE, "custom-port-buffer"); port = scm_new_port_table_entry (port_type); /* Associate C_BUFFER with PORT, for test purposes. */ SCM_SETSTREAM (port, (scm_t_bits) c_buffer); /* Use C_BUFFER as PORT's internal buffer. */ c_port = SCM_PTAB_ENTRY (port); c_port->read_pos = c_port->read_buf = (unsigned char *) c_buffer; c_port->read_end = (unsigned char *) c_buffer + PORT_BUFFER_SIZE; c_port->read_buf_size = PORT_BUFFER_SIZE; /* Mark PORT as open and readable. */ SCM_SET_CELL_TYPE (port, port_type | SCM_OPN | SCM_RDNG); return port; }
/* Mark a pointer object destroyed */ SWIGINTERN void SWIG_Guile_MarkPointerDestroyed(SCM s) { SCM smob = SWIG_Guile_GetSmob(s); if (!SCM_NULLP(smob)) { if (SCM_SMOB_PREDICATE(swig_tag, smob) || SCM_SMOB_PREDICATE(swig_collectable_tag, smob)) { SCM_SET_CELL_TYPE(smob, swig_destroyed_tag); } else scm_wrong_type_arg(NULL, 0, s); } }
static SCM ioscm_open_port (scm_t_bits port_type, long mode_bits) { SCM port; #if 0 /* TODO: Guile doesn't export this. What to do? */ scm_i_scm_pthread_mutex_lock (&scm_i_port_table_mutex); #endif port = scm_new_port_table_entry (port_type); SCM_SET_CELL_TYPE (port, port_type | mode_bits); #if 0 /* TODO: Guile doesn't export this. What to do? */ scm_i_pthread_mutex_unlock (&scm_i_port_table_mutex); #endif return port; }