mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-12 15:27:36 +02:00
Added string-cmp
This commit is contained in:
parent
b3f57d7157
commit
b2568e6e09
5 changed files with 20 additions and 1 deletions
5
cgen.scm
5
cgen.scm
|
@ -435,6 +435,7 @@
|
||||||
((eq? p 'list->string) "Cyc_list2string")
|
((eq? p 'list->string) "Cyc_list2string")
|
||||||
((eq? p 'string->list) "string2list")
|
((eq? p 'string->list) "string2list")
|
||||||
((eq? p 'string-append) "Cyc_string_append")
|
((eq? p 'string-append) "Cyc_string_append")
|
||||||
|
((eq? p 'string-cmp) "Cyc_string_cmp")
|
||||||
((eq? p 'string->symbol) "Cyc_string2symbol")
|
((eq? p 'string->symbol) "Cyc_string2symbol")
|
||||||
((eq? p 'symbol->string) "Cyc_symbol2string")
|
((eq? p 'symbol->string) "Cyc_symbol2string")
|
||||||
((eq? p 'number->string) "Cyc_number2string")
|
((eq? p 'number->string) "Cyc_number2string")
|
||||||
|
@ -486,6 +487,7 @@
|
||||||
((eq? p 'string->number) "common_type")
|
((eq? p 'string->number) "common_type")
|
||||||
((eq? p 'list->string) "string_type")
|
((eq? p 'list->string) "string_type")
|
||||||
; ((eq? p 'string->list) "object")
|
; ((eq? p 'string->list) "object")
|
||||||
|
((eq? p 'string-cmp) "integer_type")
|
||||||
((eq? p 'string-append) "string_type")
|
((eq? p 'string-append) "string_type")
|
||||||
((eq? p 'symbol->string) "string_type")
|
((eq? p 'symbol->string) "string_type")
|
||||||
((eq? p 'number->string) "string_type")
|
((eq? p 'number->string) "string_type")
|
||||||
|
@ -497,7 +499,8 @@
|
||||||
(and (prim? exp)
|
(and (prim? exp)
|
||||||
(member exp '(
|
(member exp '(
|
||||||
current-input-port open-input-file
|
current-input-port open-input-file
|
||||||
char->integer system string->number string-append list->string string->list
|
char->integer system string->number
|
||||||
|
string-append string-cmp list->string string->list
|
||||||
symbol->string number->string
|
symbol->string number->string
|
||||||
+ - * / apply cons length cell))))
|
+ - * / apply cons length cell))))
|
||||||
|
|
||||||
|
|
1
eval.scm
1
eval.scm
|
@ -255,6 +255,7 @@
|
||||||
(list 'char->integer char->integer)
|
(list 'char->integer char->integer)
|
||||||
(list 'integer->char integer->char)
|
(list 'integer->char integer->char)
|
||||||
(list 'string->number string->number)
|
(list 'string->number string->number)
|
||||||
|
(list 'string-cmp string-cmp)
|
||||||
(list 'string-append string-append)
|
(list 'string-append string-append)
|
||||||
(list 'string->list string->list)
|
(list 'string->list string->list)
|
||||||
(list 'list->string list->string)
|
(list 'list->string list->string)
|
||||||
|
|
12
runtime.c
12
runtime.c
|
@ -639,6 +639,13 @@ common_type Cyc_string2number(object str){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
integer_type Cyc_string_cmp(object str1, object str2) {
|
||||||
|
// TODO: check types of str1, str2
|
||||||
|
make_int(cmp, strcmp(((string_type *)str1)->str,
|
||||||
|
((string_type *)str2)->str));
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
void dispatch_string_91append(int argc, object clo, object cont, object str1, ...) {
|
void dispatch_string_91append(int argc, object clo, object cont, object str1, ...) {
|
||||||
string_type result;
|
string_type result;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
@ -1063,6 +1070,9 @@ void _Cyc_91default_91exception_91handler(object cont, object args) {
|
||||||
// TODO: this is a quick-and-dirty implementation, may be a better way to write this
|
// TODO: this is a quick-and-dirty implementation, may be a better way to write this
|
||||||
Cyc_default_exception_handler(1, args, car(args));
|
Cyc_default_exception_handler(1, args, car(args));
|
||||||
}
|
}
|
||||||
|
void _string_91cmp(object cont, object args) {
|
||||||
|
integer_type cmp = Cyc_string_cmp(car(args), cadr(args));
|
||||||
|
return_funcall1(cont, &cmp);}
|
||||||
void _string_91append(object cont, object args) {
|
void _string_91append(object cont, object args) {
|
||||||
integer_type argc = Cyc_length(args);
|
integer_type argc = Cyc_length(args);
|
||||||
dispatch(argc.value, (function_type)dispatch_string_91append, cont, cont, args); }
|
dispatch(argc.value, (function_type)dispatch_string_91append, cont, cont, args); }
|
||||||
|
@ -1723,6 +1733,7 @@ static primitive_type char_91_125integer_primitive = {primitive_tag, "char->inte
|
||||||
static primitive_type integer_91_125char_primitive = {primitive_tag, "integer->char", &_integer_91_125char};
|
static primitive_type integer_91_125char_primitive = {primitive_tag, "integer->char", &_integer_91_125char};
|
||||||
static primitive_type string_91_125number_primitive = {primitive_tag, "string->number", &_string_91_125number};
|
static primitive_type string_91_125number_primitive = {primitive_tag, "string->number", &_string_91_125number};
|
||||||
static primitive_type system_primitive = {primitive_tag, "system", &_cyc_system};
|
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_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 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 list_91_125string_primitive = {primitive_tag, "list->string", &_list_91_125string};
|
||||||
|
@ -1819,6 +1830,7 @@ const object primitive_char_91_125integer = &char_91_125integer_primitive;
|
||||||
const object primitive_integer_91_125char = &integer_91_125char_primitive;
|
const object primitive_integer_91_125char = &integer_91_125char_primitive;
|
||||||
const object primitive_string_91_125number = &string_91_125number_primitive;
|
const object primitive_string_91_125number = &string_91_125number_primitive;
|
||||||
const object primitive_system = &system_primitive;
|
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_91append = &string_91append_primitive;
|
||||||
const object primitive_string_91_125list = &string_91_125list_primitive;
|
const object primitive_string_91_125list = &string_91_125list_primitive;
|
||||||
const object primitive_list_91_125string = &list_91_125string_primitive;
|
const object primitive_list_91_125string = &list_91_125string_primitive;
|
||||||
|
|
|
@ -61,6 +61,7 @@ object Cyc_get_cvar(object var);
|
||||||
object Cyc_set_cvar(object var, object value);
|
object Cyc_set_cvar(object var, object value);
|
||||||
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);
|
||||||
void dispatch_string_91append(int argc, object clo, object cont, object str1, ...);
|
void dispatch_string_91append(int argc, object clo, object cont, object str1, ...);
|
||||||
string_type Cyc_string_append(int argc, object str1, ...);
|
string_type Cyc_string_append(int argc, object str1, ...);
|
||||||
string_type Cyc_string_append_va_list(int, object, va_list);
|
string_type Cyc_string_append_va_list(int, object, va_list);
|
||||||
|
@ -256,6 +257,7 @@ extern const object primitive_cddddr;
|
||||||
extern const object primitive_char_91_125integer;
|
extern const object primitive_char_91_125integer;
|
||||||
extern const object primitive_integer_91_125char;
|
extern const object primitive_integer_91_125char;
|
||||||
extern const object primitive_string_91_125number;
|
extern const object primitive_string_91_125number;
|
||||||
|
extern const object primitive_string_91cmp;
|
||||||
extern const object primitive_string_91append;
|
extern const object primitive_string_91append;
|
||||||
extern const object primitive_string_91_125list;
|
extern const object primitive_string_91_125list;
|
||||||
extern const object primitive_list_91_125string;
|
extern const object primitive_list_91_125string;
|
||||||
|
|
|
@ -510,6 +510,7 @@
|
||||||
integer->char
|
integer->char
|
||||||
string->number
|
string->number
|
||||||
string-append
|
string-append
|
||||||
|
string-cmp
|
||||||
string->list
|
string->list
|
||||||
list->string
|
list->string
|
||||||
string->symbol
|
string->symbol
|
||||||
|
|
Loading…
Add table
Reference in a new issue