//: Boolean primitives
:(before "End Primitive Recipe Declarations")
AND,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "and", AND);
:(before "End Primitive Recipe Checks")
case AND: {
for (int i = 0; i < SIZE(inst.ingredients); ++i) {
if (!is_mu_scalar(inst.ingredients.at(i))) {
raise << maybe(get(Recipe, r).name) << "'and' requires boolean ingredients, but got '" << inst.ingredients.at(i).original_string << "'\n" << end();
goto finish_checking_instruction;
}
}
if (SIZE(inst.products) > 1) {
raise << maybe(get(Recipe, r).name) << "'and' yields exactly one product in '" << inst.original_string << "'\n" << end();
break;
}
if (!inst.products.empty() && !is_dummy(inst.products.at(0)) && !is_mu_boolean(inst.products.at(0))) {
raise << maybe(get(Recipe, r).name) << "'and' should yield a boolean, but got '" << inst.products.at(0).original_string << "'\n" << end();
break;
}
break;
}
:(before "End Primitive Recipe Implementations")
case AND: {
bool result = true;
for (int i = 0; i < SIZE(ingredients); ++i)
result = result && ingredients.at(i).at(0);
products.resize(1);
products.at(0).push_back(result);
break;
}
:(scenario and)
def main [
1:bool <- copy 1
2:bool <- copy 0
3:bool <- and 1:bool, 2:bool
]
+mem: storing 0 in location 3
:(scenario and_2)
def main [
1:bool <- and 1, 1
]
+mem: storing 1 in location 1
:(scenario and_multiple)
def main [
1:bool <- and 1, 1, 0
]
+mem: storing 0 in location 1
:(scenario and_multiple_2)
def main [
1:bool <- and 1, 1, 1
]
+mem: storing 1 in location 1
:(before "End Primitive Recipe Declarations")
OR,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "or", OR);
:(before "End Primitive Recipe Checks")
case OR: {
for (int i = 0; i < SIZE(inst.ingredients); ++i) {
if (!is_mu_scalar(inst.ingredients.at(i))) {
raise << maybe(get(Recipe, r).name) << "'and' requires boolean ingredients, but got '" << inst.ingredients.at(i).original_string << "'\n" << end();
goto finish_checking_instruction;
}
}
if (SIZE(inst.products) > 1) {
raise << maybe(get(Recipe, r).name) << "'or' yields exactly one product in '" << inst.original_string << "'\n" << end();
break;
}
if (!inst.products.empty() && !is_dummy(inst.products.at(0)) && !is_mu_boolean(inst.products.at(0))) {
raise << maybe(get(Recipe, r).name) << "'or' should yield a boolean, but got '" << inst.products.at(0).original_string << "'\n" << end();
break;
}
break;
}
:(before "End Primitive Recipe Implementations")
case OR: {
bool result = false;
for (int i = 0; i < SIZE(ingredients); ++i)
result = result || ingredients.at(i).at(0);
products.resize(1);
products.at(0).push_back(result);
break;
}
:(scenario or)
def main [
1:bool <- copy 1
2:bool <- copy 0
3:bool <- or 1:bool, 2:bool
]
+mem: storing 1 in location 3
:(scenario or_2)
def main [
1:bool <- or 0, 0
]
+mem: storing 0 in location 1
:(scenario or_multiple)
def main [
1:bool <- and 0, 0, 0
]
+mem: storing 0 in location 1
:(scenario or_multiple_2)
def main [
1:bool <- or 0, 0, 1
]
+mem: storing 1 in location 1
:(before "End Primitive Recipe Declarations")
NOT,
:(before &[colours]
bkgnd=
titlebar=
titlebar.text=
titlebar.brackets=
titlebar.unencrypted=
titlebar.encrypted=
titlebar.untrusted=
titlebar.trusted=
titlebar.online=
titlebar.offline=
titlebar.away=
titlebar.chat=
titlebar.dnd=
titlebar.xa=
statusbar=
statusbar.text=
statusbar.time=
statusbar.brackets=
statusbar.active=
statusbar.new=
main.text=
main.text.me=
main.text.them=
main.splash=
main.time=
input.text=
subscribed=
unsubscribed=
otr.started.trusted=
otr.started.untrusted=
otr.ended=
otr.trusted=
otr.untrusted=
online=
away=
chat=
dnd=
xa=
offline=
incoming=
mention=
trigger=
typing=
gone=
error=
roominfo=
roommention=
roommention.term=
roomtrigger=
roomtrigger.term=
me=
them=
roster.header=
roster.chat=
roster.online=
roster.away=
roster.xa=
roster.dnd=
roster.offline=
roster.chat.active=
roster.online.active=
roster.away.active=
roster.xa.active=
roster.dnd.active=
roster.offline.active=
roster.chat.unread=
roster.online.unread=
roster.away.unread=
roster.xa.unread=
roster.dnd.unread=
roster.offline.unread=
roster.room=
roster.room.unread=
roster.room.trigger=
roster.room.mention=
occupants.header=
receipt.sent=
untrusted=
[ui]
beep=
flash=
splash=
wrap=
time.console=
time.chat=
time.muc=
time.config=
time.private=
time.xmlconsole=
time.lastactivity=
time.statusbar=
privileges=
presence=
intype=
enc.warn=
resource.title=
resource.message=
statuses.console=
statuses.chat=
statuses.muc=
roster=
roster.offline=
roster.empty=
roster.by=
roster.order=
roster.unread=
roster.count=
roster.priority=
roster.size=
roster.wrap=
roster.header.char=
roster.contact.char=
roster.contact.indent=
roster.resource=
roster.resource.char=
roster.resource.indent=
roster.resource.join=
roster.presence=
roster.presence.indent=
roster.status=
roster.contacts=
roster.unsubscribed=
roster.rooms=
roster.rooms.order=
roster.rooms.unread=
roster.rooms.pos=
roster.rooms.by=
roster.rooms.char=
roster.rooms.private.char=
roster.private=
roster.private.char=
occupants=
occupants.size=
occupants.char=
occupants.jid=
occupants.wrap=
occupants.indent=
occupants.header.char=
wins.autotidy=
otr.char=
pgp.char=
omemo.char=
console.muc=
console.chat=
console.private=
inputwin.position=