Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions | Public Attributes | Protected Attributes | Private Attributes
FilterExpr Class Reference

#include <Expr.h>

Inheritance diagram for FilterExpr:
Inheritance graph
[legend]
Collaboration diagram for FilterExpr:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 FilterExpr (nsAutoPtr< Expr > &aExpr)
 Creates a new FilterExpr using the given Expr.
nsresult add (Expr *aExpr)
 Adds the given Expr to the list.
nsresult evaluatePredicates (txNodeSet *aNodes, txIMatchContext *aContext)
MBool isEmpty ()
 returns true if this predicate list is empty
virtual nsresult evaluate (txIEvalContext *aContext, txAExprResult **aResult)=0
 Evaluates this Expr based on the given context node and processor state.

Public Attributes

 TX_DECL_EXPR
u8 op
char affinity
u8 flags
CollSeqpColl
ExprpLeft
ExprpRight
ExprListpList
Token token
Token span
int iTable
int iColumn
AggInfopAggInfo
int iAgg
int iRightJoinTable
SelectpSelect
TablepTab
SchemapSchema

Protected Attributes

List predicates

Private Attributes

nsAutoPtr< Exprexpr

Detailed Description

Definition at line 403 of file Expr.h.


Constructor & Destructor Documentation

FilterExpr::FilterExpr ( nsAutoPtr< Expr > &  aExpr) [inline]

Creates a new FilterExpr using the given Expr.

Parameters:
exprthe Expr to use for evaluation

Definition at line 411 of file Expr.h.

        : expr(aExpr)
    {
    }

Member Function Documentation

nsresult PredicateList::add ( Expr aExpr) [inherited]

Adds the given Expr to the list.

The ownership of the given Expr is passed over the PredicateList, even on failure.

Parameters:
aExprthe Expr to add to the list
Returns:
nsresult indicating out of memory

Definition at line 68 of file PredicateList.cpp.

{
    NS_ASSERTION(aExpr, "missing expression");
    nsresult rv = predicates.add(aExpr);
    if (NS_FAILED(rv)) {
        delete aExpr;
    }
    return rv;
} // add

Here is the call graph for this function:

Here is the caller graph for this function:

virtual nsresult Expr::evaluate ( txIEvalContext aContext,
txAExprResult **  aResult 
) [pure virtual, inherited]

Evaluates this Expr based on the given context node and processor state.

Parameters:
contextthe context node for evaluation of this Expr
psthe ContextState containing the stack information needed for evaluation
Returns:
the result of the evaluation

Here is the caller graph for this function:

nsresult PredicateList::evaluatePredicates ( txNodeSet aNodes,
txIMatchContext aContext 
) [inherited]

Definition at line 79 of file PredicateList.cpp.

{
    NS_ASSERTION(nodes, "called evaluatePredicates with NULL NodeSet");
    nsresult rv = NS_OK;

    txListIterator iter(&predicates);
    while (iter.hasNext() && !nodes->isEmpty()) {
        Expr* expr = (Expr*)iter.next();
        txNodeSetContext predContext(nodes, aContext);
        /*
         * add nodes to newNodes that match the expression
         * or, if the result is a number, add the node with the right
         * position
         */
        PRInt32 index = 0;
        while (predContext.hasNext()) {
            predContext.next();
            nsRefPtr<txAExprResult> exprResult;
            rv = expr->evaluate(&predContext, getter_AddRefs(exprResult));
            NS_ENSURE_SUCCESS(rv, rv);

            // handle default, [position() == numberValue()]
            if (exprResult->getResultType() == txAExprResult::NUMBER) {
                if ((double)predContext.position() == exprResult->numberValue()) {
                    nodes->mark(index);
                }
            }
            else if (exprResult->booleanValue()) {
                nodes->mark(index);
            }
            ++index;
        }
        // sweep the non-marked nodes
        nodes->sweep();
    }

    return NS_OK;
}

Here is the call graph for this function:

MBool PredicateList::isEmpty ( ) [inherited]

returns true if this predicate list is empty

Definition at line 122 of file PredicateList.cpp.

{
    return (MBool)(predicates.getLength() == 0);
} // isEmpty

Here is the call graph for this function:


Member Data Documentation

char Expr::affinity [inherited]

Definition at line 951 of file sqliteInt.h.

Definition at line 419 of file Expr.h.

u8 Expr::flags [inherited]

Definition at line 952 of file sqliteInt.h.

int Expr::iAgg [inherited]

Definition at line 962 of file sqliteInt.h.

int Expr::iColumn [inherited]

Definition at line 959 of file sqliteInt.h.

Definition at line 963 of file sqliteInt.h.

int Expr::iTable [inherited]

Definition at line 959 of file sqliteInt.h.

u8 Expr::op [inherited]

Reimplemented in MultiplicativeExpr, BooleanExpr, and AdditiveExpr.

Definition at line 950 of file sqliteInt.h.

AggInfo* Expr::pAggInfo [inherited]

Definition at line 961 of file sqliteInt.h.

CollSeq* Expr::pColl [inherited]

Definition at line 953 of file sqliteInt.h.

Expr* Expr::pLeft [inherited]

Definition at line 954 of file sqliteInt.h.

ExprList* Expr::pList [inherited]

Definition at line 955 of file sqliteInt.h.

List PredicateList::predicates [protected, inherited]

Definition at line 356 of file Expr.h.

Expr * Expr::pRight [inherited]

Definition at line 954 of file sqliteInt.h.

Schema* Expr::pSchema [inherited]

Definition at line 967 of file sqliteInt.h.

Select* Expr::pSelect [inherited]

Definition at line 964 of file sqliteInt.h.

Table* Expr::pTab [inherited]

Definition at line 966 of file sqliteInt.h.

Token Expr::span [inherited]

Definition at line 958 of file sqliteInt.h.

Token Expr::token [inherited]

Definition at line 957 of file sqliteInt.h.

Definition at line 416 of file Expr.h.


The documentation for this class was generated from the following file: