//
//  EXPExpression.h
//  Expression
//
//  Created by Ashley on 06/03/2006.
//  Copyright 2006 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
@class EXPSymbolTable;
@class EXPVirtualMachine;
@class EXPParser;
@class EXPSymbolReference;
@class EXPError;

enum EXPExpressionType_t {
	integerType, doubleType, dimensionType, dimensionItemType, indexType, invalidType
};
typedef enum EXPExpressionType_t EXPExpressionType;

@interface EXPExpression : NSObject {
	int _expressionId;
	EXPExpressionType _expressionType;
	NSMutableArray *_indices;
}

+ (int) numEXPExpressionsInited;
+ (int) numEXPExpressionsDealloced;
+ (void) reportElementCount;

- (id) indices;
- (void) setIndices:(id)indices;
- (void) storeIndices;
- (BOOL) isSimple;
- (BOOL) isConstant;
- (NSString *)elementType;
- (void) setExpressionType:(EXPExpressionType) expressionType;
- (EXPExpressionType) expressionType;
- (BOOL) isTypeCompatible;

- (void) setValue:(double) value;
- (double) result;
- (void) dump;

@end