Added a boolean type
[fur] / templates / program.c
index 0f79b14..c9c7394 100644 (file)
@@ -33,12 +33,14 @@ const char * const SYMBOL_LIST[] = {
 
 enum Type
 {
+  BOOLEAN,
   INTEGER,
   STRING
 };
 
 union Instance
 {
+  bool boolean;
   int32_t integer;
   String* string;
 };
@@ -49,6 +51,16 @@ struct Object
   Instance instance;
 };
 
+const Object TRUE = {
+  BOOLEAN,
+  true
+};
+
+const Object FALSE = {
+  BOOLEAN,
+  false
+};
+
 struct EnvironmentNode;
 typedef struct EnvironmentNode EnvironmentNode;
 struct EnvironmentNode
@@ -270,6 +282,10 @@ void builtin$print(Object output)
 {
   switch(output.type)
   {
+    case BOOLEAN:
+      fputs(output.instance.boolean ? "true" : "false", stdout);
+      break;
+
     case INTEGER:
       printf("%" PRId32, output.instance.integer);
       break;