| /******************************************************************************* |
| * Copyright (c) 2009 - 2010 Cloudsmith Inc. and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Cloudsmith Inc. - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.equinox.p2.metadata.expression; |
| |
| /** |
| * A node in the expression tree |
| * @since 2.0 |
| * @noimplement This interface is not intended to be implemented directly by clients. |
| * @noextend This interface is not intended to be extended directly by clients. |
| */ |
| public interface IExpression { |
| int TYPE_ALL = 1; |
| int TYPE_AND = 2; |
| int TYPE_AT = 3; |
| int TYPE_EQUALS = 4; |
| int TYPE_EXISTS = 5; |
| int TYPE_GREATER = 6; |
| int TYPE_GREATER_EQUAL = 7; |
| int TYPE_LAMBDA = 8; |
| int TYPE_LESS = 9; |
| int TYPE_LESS_EQUAL = 10; |
| int TYPE_LITERAL = 11; |
| int TYPE_MATCHES = 12; |
| int TYPE_MEMBER = 13; |
| int TYPE_NOT = 14; |
| int TYPE_NOT_EQUALS = 15; |
| int TYPE_OR = 16; |
| int TYPE_PARAMETER = 17; |
| int TYPE_VARIABLE = 18; |
| int TYPE_ARRAY = 20; |
| int TYPE_ASSIGNMENT = 21; |
| int TYPE_COLLECT = 22; |
| int TYPE_CONDITION = 23; |
| int TYPE_FIRST = 24; |
| int TYPE_FLATTEN = 25; |
| int TYPE_FUNCTION = 26; |
| int TYPE_INTERSECT = 27; |
| int TYPE_LATEST = 28; |
| int TYPE_LIMIT = 29; |
| int TYPE_PIPE = 30; |
| int TYPE_SELECT = 31; |
| int TYPE_TRAVERSE = 32; |
| int TYPE_UNION = 33; |
| int TYPE_UNIQUE = 34; |
| |
| /** |
| * Let the visitor visit this instance and all expressions that this |
| * instance contains. |
| * @param visitor The visiting visitor. |
| * @return <code>true</code> if the visitor should continue visiting, <code>false</code> otherwise. |
| */ |
| boolean accept(IExpressionVisitor visitor); |
| |
| /** |
| * Evaluate this expression with given context and variables. |
| * @param context The evaluation context |
| * @return The result of the evaluation. |
| */ |
| Object evaluate(IEvaluationContext context); |
| |
| /** |
| * Returns the expression type (see TYPE_xxx constants). |
| */ |
| int getExpressionType(); |
| |
| /** |
| * Appends the string representation of this expression to the collector <code>collector</code>. |
| */ |
| void toString(StringBuffer collector); |
| |
| /** |
| * Appends the an LDAP filter representation of this expression to the <code>collector</code>. |
| * @throws UnsupportedOperationException if the expression contains nodes |
| * that cannot be represented in an LDAP filter |
| */ |
| void toLDAPString(StringBuffer collector); |
| } |