package flare.query { /** * Expression operator that returns the logical "not" of a sub-expression. */ public class Not extends Expression { private var _clause:Expression; /** The sub-expression clause to negate. */ public function get clause():Expression { return _clause; } public function set clause(e:*):void { _clause = Expression.expr(e); } /** * @inheritDoc */ public override function get numChildren():int { return 1; } /** * Creates a new Not operator. * @param clause the sub-expression clause to negate */ public function Not(clause:*) { _clause = Expression.expr(clause); } /** * @inheritDoc */ public override function clone():Expression { return new Not(_clause.clone()); } /** * @inheritDoc */ public override function eval(o:Object=null):* { return predicate(o); } /** * @inheritDoc */ public override function predicate(o:Object):Boolean { return !_clause.eval(o); } /** * @inheritDoc */ public override function getChildAt(idx:int):Expression { return (idx==0 ? _clause : null); } /** * @inheritDoc */ public override function setChildAt(idx:int, expr:Expression):Boolean { if (idx == 0) { _clause = expr; return true; } return false; } /** * @inheritDoc */ public override function toString():String { return "NOT " + _clause.toString(); } } // end of class Not }