]> Nishi Git Mirror - gwion.git/commitdiff
:art: Add char type
authorfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 15 Oct 2019 16:55:47 +0000 (18:55 +0200)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Tue, 15 Oct 2019 16:55:47 +0000 (18:55 +0200)
include/type.h
src/lib/engine.c
tests/tree/char.gw [new file with mode: 0644]

index 7b80a27accf21d15f78c61d671968cea23027d30..12bc9b64b7cb1dbb9ee430bb9e8835272ee865d0 100644 (file)
@@ -49,7 +49,7 @@ ANN m_bool is_class(const struct Gwion_*, const Type t);
 ANN m_uint get_depth(const Type type);
 
 typedef enum {
-  et_void, et_int, et_bool, et_float, et_complex, et_polar, et_vec3, et_vec4,
+  et_void, et_int, et_bool, et_char, et_float, et_complex, et_polar, et_vec3, et_vec4,
   et_null, et_object, et_shred, et_fork, et_event, et_ugen, et_string, et_ptr, et_array, et_gack,
   et_function, et_fptr, et_varloop, et_vararg, et_lambda, et_class, et_union, et_undefined, et_auto, et_tuple,
   MAX_TYPE
index 81eec0ae884219d63dff78848edacebe41255a93..2a8b396f33ec91e789d8cad0413d7ec0a1d23cfd 100644 (file)
@@ -45,6 +45,10 @@ static GACK(gack_int) {
   printf("%li", *(m_uint*)VALUE);
 }
 
+static GACK(gack_char) {
+  printf("%c", *(char*)VALUE);
+}
+
 static GACK(gack_float) {
   printf("%.4f", *(m_float*)VALUE);
 }
@@ -104,6 +108,9 @@ ANN static m_bool import_core_libs(const Gwi gwi) {
   const Type t_int = gwi_mk_type(gwi, "int", SZ_INT, NULL);
   GWI_BB(gwi_gack(gwi, t_int, gack_int))
   GWI_BB(gwi_set_global_type(gwi, t_int, et_int))
+  const Type t_char = gwi_mk_type(gwi, "char", SZ_INT, "int");
+  GWI_BB(gwi_gack(gwi, t_char, gack_char))
+  GWI_BB(gwi_set_global_type(gwi, t_char, et_char))
   const Type t_float = gwi_mk_type(gwi, "float", SZ_FLOAT, NULL);
   GWI_BB(gwi_gack(gwi, t_float, gack_float))
   GWI_BB(gwi_set_global_type(gwi, t_float, et_float))
diff --git a/tests/tree/char.gw b/tests/tree/char.gw
new file mode 100644 (file)
index 0000000..f3b1499
--- /dev/null
@@ -0,0 +1,3 @@
+#! [contains] a
+'a' => char c;
+<<< c >>>;