This commit is contained in:
Justin Ethier 2015-07-27 22:29:42 -04:00
parent bdd8bf2aa9
commit 41cda2de8b
8 changed files with 39 additions and 3 deletions

View file

@ -104,8 +104,6 @@ install:
$(MKDIR) $(DESTDIR)$(INCDIR) $(MKDIR) $(DESTDIR)$(INCDIR)
$(MKDIR) $(DESTDIR)$(DATADIR) $(MKDIR) $(DESTDIR)$(DATADIR)
$(MKDIR) $(DESTDIR)$(DATADIR)/scheme/cyclone $(MKDIR) $(DESTDIR)$(DATADIR)/scheme/cyclone
$(INSTALL) -m0755 cyclone $(DESTDIR)$(BINDIR)/
$(INSTALL) -m0755 icyc $(DESTDIR)$(BINDIR)/
$(INSTALL) -m0644 libcyclone.a $(DESTDIR)$(LIBDIR)/ $(INSTALL) -m0644 libcyclone.a $(DESTDIR)$(LIBDIR)/
$(INSTALL) -m0644 include/cyclone/*.h $(DESTDIR)$(INCDIR)/ $(INSTALL) -m0644 include/cyclone/*.h $(DESTDIR)$(INCDIR)/
$(INSTALL) -m0644 scheme/*.scm $(DESTDIR)$(DATADIR)/scheme $(INSTALL) -m0644 scheme/*.scm $(DESTDIR)$(DATADIR)/scheme
@ -114,6 +112,8 @@ install:
$(INSTALL) -m0644 scheme/cyclone/*.scm $(DESTDIR)$(DATADIR)/scheme/cyclone $(INSTALL) -m0644 scheme/cyclone/*.scm $(DESTDIR)$(DATADIR)/scheme/cyclone
$(INSTALL) -m0644 scheme/cyclone/*.sld $(DESTDIR)$(DATADIR)/scheme/cyclone $(INSTALL) -m0644 scheme/cyclone/*.sld $(DESTDIR)$(DATADIR)/scheme/cyclone
$(INSTALL) -m0644 scheme/cyclone/*.o $(DESTDIR)$(DATADIR)/scheme/cyclone $(INSTALL) -m0644 scheme/cyclone/*.o $(DESTDIR)$(DATADIR)/scheme/cyclone
$(INSTALL) -m0755 cyclone $(DESTDIR)$(BINDIR)/
$(INSTALL) -m0755 icyc $(DESTDIR)$(BINDIR)/
uninstall: uninstall:
$(RM) $(DESTDIR)$(BINDIR)/cyclone $(RM) $(DESTDIR)$(BINDIR)/cyclone

View file

@ -133,6 +133,7 @@ string_type Cyc_string_append_va_list(int argc, object str1, va_list ap);
integer_type Cyc_string_length(object str); integer_type Cyc_string_length(object str);
string_type Cyc_substring(object str, object start, object end); string_type Cyc_substring(object str, object start, object end);
object Cyc_string_ref(object str, object k); object Cyc_string_ref(object str, object k);
object Cyc_string_set(object str, object k, object chr);
string_type Cyc_installation_dir(); string_type Cyc_installation_dir();
object Cyc_command_line_arguments(object cont); object Cyc_command_line_arguments(object cont);
integer_type Cyc_system(object cmd); integer_type Cyc_system(object cmd);
@ -350,6 +351,7 @@ extern const object primitive_list_91_125vector;
extern const object primitive_vector_91ref; extern const object primitive_vector_91ref;
extern const object primitive_vector_91set_67; extern const object primitive_vector_91set_67;
extern const object primitive_string_91ref; extern const object primitive_string_91ref;
extern const object primitive_string_91set_67;
extern const object primitive_Cyc_91installation_91dir; extern const object primitive_Cyc_91installation_91dir;
extern const object primitive_command_91line_91arguments; extern const object primitive_command_91line_91arguments;
extern const object primitive_system; extern const object primitive_system;

View file

@ -978,6 +978,26 @@ integer_type Cyc_string_length(object str) {
{ make_int(len, strlen(string_str(str))); { make_int(len, strlen(string_str(str)));
return len; }} return len; }}
object Cyc_string_set(object str, object k, object chr) {
char *raw;
int idx, len;
Cyc_check_str(str);
Cyc_check_int(k);
if (!eq(boolean_t, Cyc_is_char(chr))) {
Cyc_rt_raise2("Expected char but received", chr);
}
raw = string_str(str);
idx = integer_value(k),
len = strlen(raw);
Cyc_check_bounds("string-set!", len, idx);
raw[idx] = obj_obj2char(chr);
return str;
}
object Cyc_string_ref(object str, object k) { object Cyc_string_ref(object str, object k) {
const char *raw; const char *raw;
int idx, len; int idx, len;
@ -1633,6 +1653,10 @@ void _cyc_substring(object cont, object args) {
Cyc_check_num_args("substring", 3, args); Cyc_check_num_args("substring", 3, args);
{ string_type s = Cyc_substring(car(args), cadr(args), caddr(args)); { string_type s = Cyc_substring(car(args), cadr(args), caddr(args));
return_funcall1(cont, &s);}} return_funcall1(cont, &s);}}
void _cyc_string_91set_67(object cont, object args) {
Cyc_check_num_args("string-set!", 3, args);
{ object s = Cyc_string_set(car(args), cadr(args), caddr(args));
return_funcall1(cont, s); }}
void _cyc_string_91ref(object cont, object args) { void _cyc_string_91ref(object cont, object args) {
Cyc_check_num_args("string-ref", 2, args); Cyc_check_num_args("string-ref", 2, args);
{ object c = Cyc_string_ref(car(args), cadr(args)); { object c = Cyc_string_ref(car(args), cadr(args));
@ -2335,6 +2359,7 @@ static primitive_type string_91_125number_primitive = {primitive_tag, "string->n
static primitive_type string_91length_primitive = {primitive_tag, "string-length", &_string_91length}; static primitive_type string_91length_primitive = {primitive_tag, "string-length", &_string_91length};
static primitive_type substring_primitive = {primitive_tag, "substring", &_cyc_substring}; static primitive_type substring_primitive = {primitive_tag, "substring", &_cyc_substring};
static primitive_type string_91ref_primitive = {primitive_tag, "string-ref", &_cyc_string_91ref}; static primitive_type string_91ref_primitive = {primitive_tag, "string-ref", &_cyc_string_91ref};
static primitive_type string_91set_67_primitive = {primitive_tag, "string-set!", &_cyc_string_91set_67};
static primitive_type Cyc_91installation_91dir_primitive = {primitive_tag, "Cyc-installation-dir", &_Cyc_91installation_91dir}; static primitive_type Cyc_91installation_91dir_primitive = {primitive_tag, "Cyc-installation-dir", &_Cyc_91installation_91dir};
static primitive_type command_91line_91arguments_primitive = {primitive_tag, "command-line-arguments", &_command_91line_91arguments}; static primitive_type command_91line_91arguments_primitive = {primitive_tag, "command-line-arguments", &_command_91line_91arguments};
static primitive_type system_primitive = {primitive_tag, "system", &_cyc_system}; static primitive_type system_primitive = {primitive_tag, "system", &_cyc_system};
@ -2451,6 +2476,7 @@ const object primitive_string_91_125number = &string_91_125number_primitive;
const object primitive_string_91length = &string_91length_primitive; const object primitive_string_91length = &string_91length_primitive;
const object primitive_substring = &substring_primitive; const object primitive_substring = &substring_primitive;
const object primitive_string_91ref = &string_91ref_primitive; const object primitive_string_91ref = &string_91ref_primitive;
const object primitive_string_91set_67 = &string_91set_67_primitive;
const object primitive_Cyc_91installation_91dir = &Cyc_91installation_91dir_primitive; const object primitive_Cyc_91installation_91dir = &Cyc_91installation_91dir_primitive;
const object primitive_command_91line_91arguments = &command_91line_91arguments_primitive; const object primitive_command_91line_91arguments = &command_91line_91arguments_primitive;
const object primitive_system = &system_primitive; const object primitive_system = &system_primitive;

View file

@ -41,6 +41,7 @@
symbol=? symbol=?
Cyc-obj=? Cyc-obj=?
make-string make-string
string
vector vector
vector-append vector-append
vector-copy vector-copy
@ -275,6 +276,8 @@
(return #f))) (return #f)))
objs) objs)
#t)))) #t))))
(define (string . chars)
(list->string chars))
(define (make-string k . fill) (define (make-string k . fill)
(let ((fill* (if (null? fill) (let ((fill* (if (null? fill)
'(#\space) '(#\space)

View file

@ -494,6 +494,7 @@
((eq? p 'number->string) "Cyc_number2string") ((eq? p 'number->string) "Cyc_number2string")
((eq? p 'string-length) "Cyc_string_length") ((eq? p 'string-length) "Cyc_string_length")
((eq? p 'string-ref) "Cyc_string_ref") ((eq? p 'string-ref) "Cyc_string_ref")
((eq? p 'string-set!) "Cyc_string_set")
((eq? p 'substring) "Cyc_substring") ((eq? p 'substring) "Cyc_substring")
((eq? p 'Cyc-installation-dir) "Cyc_installation_dir") ((eq? p 'Cyc-installation-dir) "Cyc_installation_dir")
((eq? p 'command-line-arguments) "Cyc_command_line_arguments") ((eq? p 'command-line-arguments) "Cyc_command_line_arguments")

View file

@ -577,6 +577,7 @@
number->string number->string
string-length string-length
string-ref string-ref
string-set!
substring substring
make-vector make-vector
list->vector list->vector
@ -636,6 +637,7 @@
cell cell
set-car! set-car!
set-cdr! set-cdr!
string-set!
string->symbol ;; Could be mistaken for an identifier string->symbol ;; Could be mistaken for an identifier
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

View file

@ -264,6 +264,7 @@
(list 'number->string number->string) (list 'number->string number->string)
(list 'string-length string-length) (list 'string-length string-length)
(list 'string-ref string-ref) (list 'string-ref string-ref)
(list 'string-set! string-set!)
(list 'substring substring) (list 'substring substring)
(list 'make-vector make-vector) (list 'make-vector make-vector)
(list 'list->vector list->vector) (list 'list->vector list->vector)

View file

@ -1,7 +1,8 @@
(import (scheme base) (import (scheme base)
(scheme file) (scheme file)
(scheme write)) (scheme write))
(write (make-vector 4 #t)) (apply make-vector '())
1
; ;
;(map ;(map
; (lambda (_) ; (lambda (_)