summaryrefslogtreecommitdiff
path: root/flags.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-07-02 17:50:51 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-07-02 17:50:51 +0000
commitbe26a1ce93e3ed24e57d2e0916f09252536994cb (patch)
tree296f7fa9ab3e5072158d50ac151d04120ba19d56 /flags.c
parent2bfb79be604c68b7684b515f3be3388fecfcf1f4 (diff)
Begin work on set_prolog_flag/2 and current_prolog_flag/2
Diffstat (limited to 'flags.c')
-rw-r--r--flags.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/flags.c b/flags.c
index 8a75135..6abd3b8 100644
--- a/flags.c
+++ b/flags.c
@@ -4,8 +4,36 @@
#include "dat.h"
#include "fns.h"
+Term *setdoublequotes(Term *);
+
void
initflags(void)
{
flagdoublequotes = DoubleQuotesChars;
+}
+
+Term *
+setflag(Rune *flag, Term *value)
+{
+ if(runestrcmp(flag, L"double_quotes") == 0)
+ return setdoublequotes(value);
+ else
+ return permissionerror(L"modify", L"flag", mkatom(flag));
+}
+
+Term *
+setdoublequotes(Term *value)
+{
+ if(value->tag != AtomTerm)
+ return typeerror(L"atom", value);
+
+ if(runestrcmp(value->text, L"chars") == 0)
+ flagdoublequotes = DoubleQuotesChars;
+ else if(runestrcmp(value->text, L"codes") == 0)
+ flagdoublequotes = DoubleQuotesCodes;
+ else if(runestrcmp(value->text, L"atom") == 0)
+ flagdoublequotes = DoubleQuotesAtom;
+ else
+ return domainerror(L"flag_value", value);
+ return nil;
} \ No newline at end of file