Warning: session_start(): open(/var/lib/php/sessions/sess_mejsd8nekf8p4ghmq9re117mo4, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
abstract sclass CtxExpr {
// assumes that ctxContext() is set
abstract bool get();
}
CtxExpr > CtxNeg {
CtxExpr e;
*() {}
*(CtxExpr *e) {}
bool get() { ret !e.get(); }
}
CtxExpr > CtxAnd {
CtxExpr a, b;
*() {}
*(CtxExpr *a, CtxExpr *b) {}
bool get() { ret a.get() && b.get(); }
}
CtxExpr > CtxOr {
CtxExpr a, b;
*() {}
*(CtxExpr *a, CtxExpr *b) {}
bool get() { ret a.get() || b.get(); }
}
CtxExpr > CtxRegexp {
S pattern;
*() {}
*(S *pattern) {}
bool get() { ret ctxEvalPattern(pattern); }
}
CtxExpr > CtxComp {
S var1, var2;
*() {}
*(S *var1, S *var2) {}
bool get() { ret eq(ctxGetVar(var1), ctxGetVar(var2)); }
}
CtxExpr > CtxUneq {
S var1, var2;
*() {}
*(S *var1, S *var2) {}
bool get() { ret neq(ctxGetVar(var1), ctxGetVar(var2)); }
}
CtxExpr > CtxMatch {
S var, pattern;
*() {}
*(S *var, S *pattern) {}
bool get() { ret ctxEvalPattern(pattern, ctxGetVar(var)); }
}