Added current-input-port and current-error-port

This commit is contained in:
Justin Ethier 2015-06-22 21:08:20 -04:00
parent b8663c0b88
commit bebacfb985
6 changed files with 29 additions and 20 deletions

View file

@ -424,6 +424,8 @@
((eq? p 'Cyc-cvar?) "Cyc_is_cvar")
((eq? p 'Cyc-has-cycle?) "Cyc_has_cycle")
((eq? p 'Cyc-stdout) "Cyc_stdout")
((eq? p 'Cyc-stdin) "Cyc_stdin")
((eq? p 'Cyc-stderr) "Cyc_stderr")
((eq? p '+) "Cyc_sum")
((eq? p '-) "Cyc_sub")
((eq? p '*) "Cyc_mul")
@ -438,7 +440,6 @@
((eq? p 'exit) "__halt")
((eq? p 'Cyc-default-exception-handler) "Cyc_default_exception_handler")
((eq? p 'Cyc-current-exception-handler) "Cyc_current_exception_handler")
((eq? p 'current-input-port) "Cyc_io_current_input_port")
((eq? p 'open-input-file) "Cyc_io_open_input_file")
((eq? p 'close-input-port) "Cyc_io_close_input_port")
((eq? p 'read-char) "Cyc_io_read_char")
@ -530,7 +531,8 @@
(define (prim/c-var-assign p)
(cond
((eq? p 'Cyc-stdout) "port_type")
((eq? p 'current-input-port) "port_type")
((eq? p 'Cyc-stdin) "port_type")
((eq? p 'Cyc-stderr) "port_type")
((eq? p 'open-input-file) "port_type")
((eq? p 'length) "integer_type")
((eq? p 'vector-length) "integer_type")
@ -555,7 +557,9 @@
(and (prim? exp)
(member exp '(
Cyc-stdout
current-input-port open-input-file
Cyc-stdin
Cyc-stderr
open-input-file
char->integer system string->number
string-append string-cmp list->string string->list
make-vector list->vector

View file

@ -285,7 +285,6 @@
(list 'vector? vector?)
(list 'string? string?)
(list 'symbol? symbol?)
(list 'current-input-port current-input-port)
(list 'open-input-file open-input-file)
(list 'close-input-port close-input-port)
(list 'read-char read-char)

View file

@ -985,14 +985,19 @@ port_type Cyc_stdout() {
return _stdout;
}
port_type Cyc_io_current_input_port() {
make_port(p, stdin, 0);
port_type Cyc_stdin() {
make_port(p, stdin, 1);
return p;
}
port_type Cyc_stderr() {
make_port(p, stderr, 0);
return p;
}
port_type Cyc_io_open_input_file(object str) {
const char *fname = ((string_type *)str)->str;
make_port(p, NULL, 0);
make_port(p, NULL, 1);
p.fp = fopen(fname, "r");
return p;
}
@ -1272,9 +1277,6 @@ void _symbol_91_125string(object cont, object args) {
void _number_91_125string(object cont, object args) {
string_type s = Cyc_number2string(car(args));
return_funcall1(cont, &s);}
void _current_91input_91port(object cont, object args) {
port_type p = Cyc_io_current_input_port();
return_funcall1(cont, &p);}
void _open_91input_91file(object cont, object args) {
port_type p = Cyc_io_open_input_file(car(args));
return_funcall1(cont, &p);}
@ -1971,7 +1973,6 @@ static primitive_type port_127_primitive = {primitive_tag, "port?", &_port_127};
static primitive_type vector_127_primitive = {primitive_tag, "vector?", &_vector_127};
static primitive_type string_127_primitive = {primitive_tag, "string?", &_string_127};
static primitive_type symbol_127_primitive = {primitive_tag, "symbol?", &_symbol_127};
static primitive_type current_91input_91port_primitive = {primitive_tag, "current-input-port", &_current_91input_91port};
static primitive_type open_91input_91file_primitive = {primitive_tag, "open-input-file", &_open_91input_91file};
static primitive_type close_91input_91port_primitive = {primitive_tag, "close-input-port", &_close_91input_91port};
static primitive_type read_91char_primitive = {primitive_tag, "read-char", &_read_91char};
@ -2076,7 +2077,6 @@ const object primitive_string_127 = &string_127_primitive;
const object primitive_port_127 = &port_127_primitive;
const object primitive_vector_127 = &vector_127_primitive;
const object primitive_symbol_127 = &symbol_127_primitive;
const object primitive_current_91input_91port = &current_91input_91port_primitive;
const object primitive_open_91input_91file = &open_91input_91file_primitive;
const object primitive_close_91input_91port = &close_91input_91port_primitive;
const object primitive_read_91char = &read_91char_primitive;

View file

@ -59,7 +59,6 @@ extern object Cyc_global_variables;
object Cyc_get_global_variables();
object Cyc_get_cvar(object var);
object Cyc_set_cvar(object var, object value);
port_type Cyc_stdout(void);
object apply(object cont, object func, object args);
void Cyc_apply(int argc, closure cont, object prim, ...);
integer_type Cyc_string_cmp(object str1, object str2);
@ -106,7 +105,9 @@ integer_type Cyc_char2integer(object chr);
object Cyc_integer2char(object n);
void my_exit(closure) never_returns;
object __halt(object obj);
port_type Cyc_io_current_input_port();
port_type Cyc_stdout(void);
port_type Cyc_stdin(void);
port_type Cyc_stderr(void);
port_type Cyc_io_open_input_file(object str);
object Cyc_io_close_input_port(object port);
object Cyc_io_read_char(object port);
@ -322,7 +323,6 @@ extern const object primitive_port_127;
extern const object primitive_vector_127;
extern const object primitive_string_127;
extern const object primitive_symbol_127;
extern const object primitive_current_91input_91port;
extern const object primitive_open_91input_91file;
extern const object primitive_close_91input_91port;
extern const object primitive_read_91char;

View file

@ -53,8 +53,8 @@
string->vector
make-parameter
current-output-port
;current-input-port
;current-error-port
current-input-port
current-error-port
error
raise
raise-continuable
@ -291,6 +291,10 @@
(error "bad parameter syntax"))))))
(define current-output-port
(make-parameter (Cyc-stdout)))
(define current-input-port
(make-parameter (Cyc-stdin)))
(define current-error-port
(make-parameter (Cyc-stderr)))
(define (error msg . args)
(raise (cons msg args)))
(define (raise obj)

View file

@ -485,6 +485,8 @@
Cyc-cvar? ;; Cyclone-specific
Cyc-has-cycle?
Cyc-stdout
Cyc-stdin
Cyc-stderr
+
-
*
@ -551,7 +553,6 @@
vector?
string?
symbol?
current-input-port
open-input-file
close-input-port
read-char
@ -573,7 +574,6 @@
Cyc-get-cvar
Cyc-set-cvar!
Cyc-cvar?
Cyc-stdout
apply
%halt
exit
@ -590,7 +590,9 @@
string->list ;; Mistaken for function call (maybe OK if it was quoted, though). same for above?
make-vector
;; I/O must be done at runtime for side effects:
current-input-port
Cyc-stdout
Cyc-stdin
Cyc-stderr
open-input-file
close-input-port
read-char