diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-09-18 19:34:58 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-09-18 19:34:58 +0000 |
commit | d14af9f2d3839498bf976db11ae3e020ac81fed1 (patch) | |
tree | 1410a1c06e7bafad0274520a67a23c1f3fb0cb21 | |
parent | a0fcb308634010a848ead49fa54f67bf03cbc0c4 (diff) | |
download | guile-d14af9f2d3839498bf976db11ae3e020ac81fed1.tar.gz |
* ports.c, ports.h: Name change: scm_\(line\|column\)_number -->
scm_port_\1; Added mutator scm_set_port_filename_x (used when
loading source from non-file ports, which, e. g., happens when
using the Emacs interface).
-rw-r--r-- | libguile/ports.c | 42 | ||||
-rw-r--r-- | libguile/ports.h | 17 |
2 files changed, 43 insertions, 16 deletions
diff --git a/libguile/ports.c b/libguile/ports.c index dba81b757..12381ddf4 100644 --- a/libguile/ports.c +++ b/libguile/ports.c @@ -706,13 +706,13 @@ scm_unread_char (cobj, port) -SCM_PROC (s_line_number, "line-number", 0, 1, 0, scm_line_number); +SCM_PROC (s_port_line, "port-line", 0, 1, 0, scm_port_line); #ifdef __STDC__ SCM -scm_line_number (SCM port) +scm_port_line (SCM port) #else SCM -scm_line_number (port) +scm_port_line (port) SCM port; #endif { @@ -726,13 +726,13 @@ scm_line_number (port) return SCM_MAKINUM (SCM_LINUM (p)); } -SCM_PROC (s_column_number, "column-number", 0, 1, 0, scm_column_number); +SCM_PROC (s_port_column, "port-column", 0, 1, 0, scm_port_column); #ifdef __STDC__ SCM -scm_column_number (SCM port) +scm_port_column (SCM port) #else SCM -scm_column_number (port) +scm_port_column (port) SCM port; #endif { @@ -746,13 +746,13 @@ scm_column_number (port) return SCM_MAKINUM (SCM_COL (p)); } -SCM_PROC (s_port_file_name, "port-file-name", 0, 1, 0, scm_port_file_name); +SCM_PROC (s_port_filename, "port-filename", 0, 1, 0, scm_port_filename); #ifdef __STDC__ SCM -scm_port_file_name (SCM port) +scm_port_filename (SCM port) #else SCM -scm_port_file_name (port) +scm_port_filename (port) SCM port; #endif { @@ -766,6 +766,30 @@ scm_port_file_name (port) return SCM_PTAB_ENTRY (p)->file_name; } +SCM_PROC (s_set_port_filename_x, "set-port-filename!", 1, 1, 0, scm_set_port_filename_x); +#ifdef __STDC__ +SCM +scm_set_port_filename_x (SCM port, SCM filename) +#else +SCM +scm_set_port_filename_x (port, filename) + SCM port; + SCM filename; +#endif +{ + if (filename == SCM_UNDEFINED) + { + filename = port; + port = scm_cur_inp; + } + else + SCM_ASSERT (SCM_NIMP (port) && SCM_PORTP (port) && SCM_OPENP (port), + port, + SCM_ARG1, + s_set_port_filename_x); + return SCM_PTAB_ENTRY (port)->file_name = filename; +} + #ifndef ttyname extern char * ttyname(); #endif diff --git a/libguile/ports.h b/libguile/ports.h index d453073ce..2f0d23213 100644 --- a/libguile/ports.h +++ b/libguile/ports.h @@ -115,6 +115,7 @@ extern int scm_port_table_size; /* Number of ports in scm_port_table. */ #define SCM_SETPTAB_ENTRY(x,ent) SCM_SETCDR ((x), (SCM)(ent)) #define SCM_STREAM(x) SCM_PTAB_ENTRY(x)->stream #define SCM_SETSTREAM(x,s) (SCM_PTAB_ENTRY(x)->stream = s) +#define SCM_FILENAME(x) SCM_PTAB_ENTRY(x)->file_name #define SCM_LINUM(x) SCM_PTAB_ENTRY(x)->line_number #define SCM_COL(x) SCM_PTAB_ENTRY(x)->column_number #define SCM_REVEALED(x) SCM_PTAB_ENTRY(x)->revealed @@ -129,7 +130,7 @@ extern int scm_port_table_size; /* Number of ports in scm_port_table. */ #define SCM_INCLINE(port) {SCM_LINUM (port) += 1; SCM_COL (port) = 0;} #define SCM_INCCOL(port) {SCM_COL (port) += 1;} -#define SCM_TABCOL(port) {SCM_COL (port) += (SCM_COL (port) + 1) % 8;} +#define SCM_TABCOL(port) {SCM_COL (port) += 8 - SCM_COL (port) % 8;} @@ -186,9 +187,10 @@ extern SCM scm_force_output (SCM port); extern SCM scm_read_char (SCM port); extern SCM scm_peek_char (SCM port); extern SCM scm_unread_char (SCM cobj, SCM port); -extern SCM scm_line_number (SCM port); -extern SCM scm_column_number (SCM port); -/* extern SCM scm_port_file_name (SCM port); */ +extern SCM scm_port_line (SCM port); +extern SCM scm_port_column (SCM port); +extern SCM scm_port_filename (SCM port); +extern SCM scm_set_port_filename_x (SCM port, SCM filename); extern void scm_prinport (SCM exp, SCM port, char *type); extern void scm_ports_prehistory (void); extern SCM scm_void_port (char * mode_str); @@ -223,9 +225,10 @@ extern SCM scm_force_output (); extern SCM scm_read_char (); extern SCM scm_peek_char (); extern SCM scm_unread_char (); -extern SCM scm_line_number (); -extern SCM scm_column_number (); -/* extern SCM scm_port_file_name ();*/ +extern SCM scm_port_line (); +extern SCM scm_port_column (); +extern SCM scm_port_filename (); +extern SCM scm_set_port_filename_x (); extern void scm_prinport (); extern void scm_ports_prehistory (); extern SCM scm_void_port (); |