26#include "valueconverter.h"
42void RegisterLogicFunctions()
44 FunctionRepository* repo = FunctionRepository::self();
47 f = new Function ( "FALSE", func_false);
50 f = new Function ( "TRUE", func_true);
53 f = new Function ( "NOT", func_not);
56 f = new Function ( "AND", func_and);
57 f->setParamCount (1, -1);
60 f = new Function ( "NAND", func_nand);
61 f->setParamCount (1, -1);
64 f = new Function ( "NOR", func_nor);
65 f->setParamCount (1, -1);
68 f = new Function ( "OR", func_or);
69 f->setParamCount (1, -1);
72 f = new Function ( "XOR", func_xor);
73 f->setParamCount (1, -1);
76 f = new Function ( "IF", func_if);
96 return calc->conv()->asBoolean (val). asBoolean ();
102 bool val = asBool (args[0], calc) ? false : true;
110 res = Value ( asBool (value, calc) );
115 int cnt = args.count();
116 for ( int i = 0; i < cnt; ++i) {
117 calc-> arrayWalk (args[i], result, awOr, 0);
118 if (result.asBoolean())
130 return Value(! func_or(args, calc, extra).asBoolean());
137 res = Value ( asBool (value, calc) );
142 int cnt = args.count();
143 for ( int i = 0; i < cnt; ++i) {
144 calc-> arrayWalk (args[i], result, awAnd, 0);
145 if (! result.asBoolean())
154Value func_nand (valVector args, ValueCalc *calc, FuncExtra *extra)
157 return Value(! func_and(args, calc, extra).asBoolean());
163 if (asBool (value, calc))
169 int cnt = args.count();
171 for ( int i = 0; i < cnt; ++i)
172 calc-> arrayWalk (args[i], count, awXor, 0);
179 if (asBool (args[0], calc))
The ValueCalc class is used to perform all sorts of calculations.
void arrayWalk(const Value &range, Value &res, arrayWalkFunc func, Value param) array/range walking
Provides a wrapper for cell value.
long asInteger() const Returns the integer value of this value.
bool asBoolean() const Returns the boolean value of this value.
|