commit a4b85984484ede70a1d23f5b8bb40503f6f8e652
parent 3ca515c7e8aee79d3847ba3ee495af1d11529b80
Author: Andres Navarro <canavarro82@gmail.com>
Date: Fri, 18 Mar 2011 16:44:43 -0300
Added char-downcase & char-upcase to the ground environment.
Diffstat:
3 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/kgchars.c b/src/kgchars.c
@@ -69,6 +69,27 @@ void kinteger_to_char(klisp_State *K, TValue *xparams, TValue ptree,
}
/* 14.1.4? char-upcase, char-downcase */
+void kchar_upcase(klisp_State *K, TValue *xparams, TValue ptree,
+ TValue denv)
+{
+ UNUSED(xparams);
+ UNUSED(denv);
+ bind_1tp(K, "char-upcase", ptree, "character", ttischar, chtv);
+ char ch = chvalue(chtv);
+ ch = toupper(ch);
+ kapply_cc(K, ch2tv(ch));
+}
+
+void kchar_downcase(klisp_State *K, TValue *xparams, TValue ptree,
+ TValue denv)
+{
+ UNUSED(xparams);
+ UNUSED(denv);
+ bind_1tp(K, "char-downcase", ptree, "character", ttischar, chtv);
+ char ch = chvalue(chtv);
+ ch = tolower(ch);
+ kapply_cc(K, ch2tv(ch));
+}
/* TODO */
/* 14.2.1? char=? */
diff --git a/src/kgchars.h b/src/kgchars.h
@@ -44,7 +44,10 @@ void kinteger_to_char(klisp_State *K, TValue *xparams, TValue ptree,
TValue denv);
/* 14.1.4? char-upcase, char-downcase */
-/* TODO */
+void kchar_upcase(klisp_State *K, TValue *xparams, TValue ptree,
+ TValue denv);
+void kchar_downcase(klisp_State *K, TValue *xparams, TValue ptree,
+ TValue denv);
/* 14.2.1? char=? */
/* TODO */
diff --git a/src/kground.c b/src/kground.c
@@ -515,7 +515,8 @@ void kinit_ground_env(klisp_State *K)
add_applicative(K, ground_env, "integer->char", kinteger_to_char, 0);
/* 14.1.4? char-upcase, char-downcase */
- /* TODO */
+ add_applicative(K, ground_env, "char-upcase", kchar_upcase, 0);
+ add_applicative(K, ground_env, "char-downcase", kchar_downcase, 0);
/*
** 14.2 Library features