Move string->list to scheme code

This commit is contained in:
Justin Ethier 2015-07-28 22:33:16 -04:00
parent 4c0ce77892
commit 6c277a724b
6 changed files with 5 additions and 42 deletions

View file

@ -125,7 +125,6 @@ string_type Cyc_number2string(object n) ;
string_type Cyc_symbol2string(object sym) ;
object Cyc_string2symbol(object str);
string_type Cyc_list2string(object lst);
void __string2list(const char *str, cons_type *buf, int buflen);
common_type Cyc_string2number(object str);
void dispatch_string_91append(int argc, object clo, object cont, object str1, ...);
string_type Cyc_string_append(int argc, object str1, ...);
@ -209,20 +208,6 @@ void dispatch_va(int argc, function_type_va func, object clo, object cont, objec
void do_dispatch(int argc, function_type func, object clo, object *buffer);
// Note: below is OK since alloca memory is not freed until function exits
#define string2list(c,s) object c = nil; { \
char *str; \
int len; \
Cyc_check_str(s); \
str = ((string_type *)s)->str; \
len = strlen(str); \
cons_type *buf; \
if (len > 0) { \
buf = alloca(sizeof(cons_type) * len); \
__string2list(str, buf, len); \
c = (object)&(buf[0]); \
} \
}
#define list2vector(v, l) object v = nil; { \
integer_type len; \
Cyc_check_cons_or_nil(l); \
@ -339,7 +324,6 @@ extern const object primitive_integer_91_125char;
extern const object primitive_string_91_125number;
extern const object primitive_string_91cmp;
extern const object primitive_string_91append;
extern const object primitive_string_91_125list;
extern const object primitive_list_91_125string;
extern const object primitive_string_91_125symbol;
extern const object primitive_symbol_91_125string;

View file

@ -872,16 +872,6 @@ string_type Cyc_list2string(object lst){
return str;
}
void __string2list(const char *str, cons_type *buf, int buflen){
int i = 0;
while (str[i]){
buf[i].tag = cons_tag;
buf[i].cons_car = obj_char2obj(str[i]);
buf[i].cons_cdr = (i == buflen - 1) ? nil : buf + (i + 1);
i++;
}
}
common_type Cyc_string2number(object str){
common_type result;
double n;
@ -1689,10 +1679,6 @@ void _string_91cmp(object cont, object args) {
void _string_91append(object cont, object args) {
integer_type argc = Cyc_length(args);
dispatch(argc.value, (function_type)dispatch_string_91append, cont, cont, args); }
void _string_91_125list(object cont, object args) {
Cyc_check_num_args("string->list", 1, args);
{ string2list(lst, car(args));
return_funcall1(cont, lst);}}
void _make_91vector(object cont, object args) {
Cyc_check_num_args("make-vector", 1, args);
{ integer_type argc = Cyc_length(args);
@ -2365,7 +2351,6 @@ static primitive_type command_91line_91arguments_primitive = {primitive_tag, "co
static primitive_type system_primitive = {primitive_tag, "system", &_cyc_system};
static primitive_type string_91cmp_primitive = {primitive_tag, "string-cmp", &_string_91cmp};
static primitive_type string_91append_primitive = {primitive_tag, "string-append", &_string_91append};
static primitive_type string_91_125list_primitive = {primitive_tag, "string->list", &_string_91_125list};
static primitive_type list_91_125string_primitive = {primitive_tag, "list->string", &_list_91_125string};
static primitive_type string_91_125symbol_primitive = {primitive_tag, "string->symbol", &_string_91_125symbol};
static primitive_type symbol_91_125string_primitive = {primitive_tag, "symbol->string", &_symbol_91_125string};
@ -2482,7 +2467,6 @@ const object primitive_command_91line_91arguments = &command_91line_91arguments_
const object primitive_system = &system_primitive;
const object primitive_string_91cmp = &string_91cmp_primitive;
const object primitive_string_91append = &string_91append_primitive;
const object primitive_string_91_125list = &string_91_125list_primitive;
const object primitive_list_91_125string = &list_91_125string_primitive;
const object primitive_string_91_125symbol = &string_91_125symbol_primitive;
const object primitive_symbol_91_125string = &symbol_91_125string_primitive;

View file

@ -52,7 +52,7 @@
string-copy
string-copy!
string-fill!
my-string->list
string->list
string->vector
; TODO:
;string-upcase
@ -225,7 +225,7 @@
(let ((lst (apply vector->list (cons vec opts))))
(list->string lst)))
;; TODO: change to string->list
(define (my-string->list str . opts)
(define (string->list str . opts)
(letrec ((len (string-length str))
(start (if (> (length opts) 0) (car opts) 0))
(end (if (> (length opts) 1) (cadr opts) len))

View file

@ -481,7 +481,6 @@
((eq? p 'integer->char) "Cyc_integer2char")
((eq? p 'string->number)"Cyc_string2number")
((eq? p 'list->string) "Cyc_list2string")
((eq? p 'string->list) "string2list")
((eq? p 'make-vector) "Cyc_make_vector")
((eq? p 'list->vector) "list2vector")
((eq? p 'vector-length) "Cyc_vector_length")
@ -552,7 +551,6 @@
((eq? p '/) "common_type")
((eq? p 'string->number) "common_type")
((eq? p 'list->string) "string_type")
; ((eq? p 'string->list) "object")
((eq? p 'string-cmp) "integer_type")
((eq? p 'string-append) "string_type")
((eq? p 'symbol->string) "string_type")
@ -577,7 +575,7 @@
system
Cyc-installation-dir
string->number
string-append string-cmp list->string string->list
string-append string-cmp list->string
make-vector list->vector
symbol->string number->string
string-length substring
@ -605,7 +603,7 @@
;; is obsolete and should be replaced by prim:cont? functions over time.
(define (prim:allocates-object? exp)
(and (prim? exp)
(member exp '(string->list list->vector))))
(member exp '(list->vector))))
;; c-compile-prim : prim-exp -> string -> string
(define (c-compile-prim p cont)
@ -657,7 +655,7 @@
((prim/cvar? p)
;;
;; TODO: look at functions that would actually fall into this
;; branch, I think they are just the macro's like string->list ??
;; branch, I think they are just the macro's like list->vector???
;; may be able to remove this using prim:cont? and simplify
;; the logic
;;

View file

@ -570,7 +570,6 @@
string->number
string-append
string-cmp
string->list
list->string
string->symbol
symbol->string
@ -639,7 +638,6 @@
set-cdr!
string-set!
string->symbol ;; Could be mistaken for an identifier
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:
Cyc-stdout

View file

@ -257,7 +257,6 @@
(list 'string->number string->number)
(list 'string-cmp string-cmp)
(list 'string-append string-append)
(list 'string->list string->list)
(list 'list->string list->string)
(list 'string->symbol string->symbol)
(list 'symbol->string symbol->string)