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

View file

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

View file

@ -985,14 +985,19 @@ port_type Cyc_stdout() {
return _stdout; return _stdout;
} }
port_type Cyc_io_current_input_port() { port_type Cyc_stdin() {
make_port(p, stdin, 0); make_port(p, stdin, 1);
return p;
}
port_type Cyc_stderr() {
make_port(p, stderr, 0);
return p; return p;
} }
port_type Cyc_io_open_input_file(object str) { port_type Cyc_io_open_input_file(object str) {
const char *fname = ((string_type *)str)->str; const char *fname = ((string_type *)str)->str;
make_port(p, NULL, 0); make_port(p, NULL, 1);
p.fp = fopen(fname, "r"); p.fp = fopen(fname, "r");
return p; return p;
} }
@ -1272,9 +1277,6 @@ void _symbol_91_125string(object cont, object args) {
void _number_91_125string(object cont, object args) { void _number_91_125string(object cont, object args) {
string_type s = Cyc_number2string(car(args)); string_type s = Cyc_number2string(car(args));
return_funcall1(cont, &s);} 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) { void _open_91input_91file(object cont, object args) {
port_type p = Cyc_io_open_input_file(car(args)); port_type p = Cyc_io_open_input_file(car(args));
return_funcall1(cont, &p);} 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 vector_127_primitive = {primitive_tag, "vector?", &_vector_127};
static primitive_type string_127_primitive = {primitive_tag, "string?", &_string_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 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 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 close_91input_91port_primitive = {primitive_tag, "close-input-port", &_close_91input_91port};
static primitive_type read_91char_primitive = {primitive_tag, "read-char", &_read_91char}; 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_port_127 = &port_127_primitive;
const object primitive_vector_127 = &vector_127_primitive; const object primitive_vector_127 = &vector_127_primitive;
const object primitive_symbol_127 = &symbol_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_open_91input_91file = &open_91input_91file_primitive;
const object primitive_close_91input_91port = &close_91input_91port_primitive; const object primitive_close_91input_91port = &close_91input_91port_primitive;
const object primitive_read_91char = &read_91char_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_global_variables();
object Cyc_get_cvar(object var); object Cyc_get_cvar(object var);
object Cyc_set_cvar(object var, object value); object Cyc_set_cvar(object var, object value);
port_type Cyc_stdout(void);
object apply(object cont, object func, object args); object apply(object cont, object func, object args);
void Cyc_apply(int argc, closure cont, object prim, ...); void Cyc_apply(int argc, closure cont, object prim, ...);
integer_type Cyc_string_cmp(object str1, object str2); integer_type Cyc_string_cmp(object str1, object str2);
@ -106,7 +105,9 @@ integer_type Cyc_char2integer(object chr);
object Cyc_integer2char(object n); object Cyc_integer2char(object n);
void my_exit(closure) never_returns; void my_exit(closure) never_returns;
object __halt(object obj); 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); port_type Cyc_io_open_input_file(object str);
object Cyc_io_close_input_port(object port); object Cyc_io_close_input_port(object port);
object Cyc_io_read_char(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_vector_127;
extern const object primitive_string_127; extern const object primitive_string_127;
extern const object primitive_symbol_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_open_91input_91file;
extern const object primitive_close_91input_91port; extern const object primitive_close_91input_91port;
extern const object primitive_read_91char; extern const object primitive_read_91char;

View file

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

View file

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