summaryrefslogtreecommitdiff
path: root/builtins.c
diff options
context:
space:
mode:
Diffstat (limited to 'builtins.c')
-rw-r--r--builtins.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/builtins.c b/builtins.c
index e403541..b238ad6 100644
--- a/builtins.c
+++ b/builtins.c
@@ -68,6 +68,7 @@ BuiltinProto(builtinstreamproperties);
BuiltinProto(builtinsetstreamposition);
BuiltinProto(builtinop);
BuiltinProto(builtincurrentops);
+BuiltinProto(builtinnewemptymodule);
int compareterms(Term *, Term *);
@@ -193,6 +194,8 @@ findbuiltin(Term *goal)
return builtinop;
if(Match(L"current_ops", 1))
return builtincurrentops;
+ if(Match(L"$new_empty_module", 1))
+ return builtinnewemptymodule;
return nil;
}
@@ -1164,7 +1167,7 @@ assertclause(Term *clause, Module *module, int after)
p->builtin = 0;
p->dynamic = 1;
p->next = nil;
- module->predicates = appendpredicate(module->predicates, p);
+ module->predicates = appendpredicate(p, module->predicates);
return 1;
}
@@ -1631,4 +1634,14 @@ builtincurrentops(Term *goal, Binding **bindings, Module *module)
Term *realops = mklist(oplist);
return unify(ops, realops, bindings);
+}
+
+int
+builtinnewemptymodule(Term *goal, Binding **bindings, Module *module)
+{
+ USED(bindings);
+ USED(module);
+ Rune *name = goal->children->text;
+ addemptymodule(name);
+ return 1;
} \ No newline at end of file