//
//  EXPElement.h
//  XMLTest
//
//  Created by Ashley on 11/04/2007.
//  Copyright 2007 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "EXPExpression.h"

@class EXPExpression;
@class EXPParser;
@class EXPSymbolTable;
@class EXPError;

@interface EXPElement : NSObject {
	int _identifier;
	id _model;
	id _sheet;
	unsigned int _address;
	BOOL _isPrivate;
	BOOL _isLocal;
	int _initLineNumber;
	int _executionAddress;
	int _initialisationAddress;
}

+ (void) reportElementCount;

+ (int) storageSize;

- (void) setModel:(id)model;
- (id) model;
- (void) setSheet:(id)sheet;
- (id) sheet;

- (void) setAddress:(unsigned int)address;
- (unsigned int) address;
- (void) setGradientAddress:(int)address;
- (int) gradientAddress;

- (void) setInitLineNumber:(int)initLineNumber;
- (int) initLineNumber;

- (void) setExecutionAddress:(int)executionAddress;
- (int) executionAddress;
- (void) setInitialisationAddress:(int)initialisationAddress;
- (int) initialisationAddress;

- (unsigned int) length;
- (NSString *) name;

- (void) setIsLocal:(BOOL)isLocal;
- (BOOL) isLocal;
- (void) setIsPrivate:(BOOL)isPrivate;
- (BOOL) isPrivate;
- (int) maxPrimes;
- (BOOL) isArray;

- (void) handleError:(NSError *)err;

- (NSString *) elementType;
- (EXPExpressionType) expressionType;

- (void) dump;
- (void) clear;

/* - (BOOL) compile:(EXPVirtualMachine *)machine withArguments:(NSArray *)arguments dimensions:(NSArray *)dimensions error:(EXPError *)err 
		 opcode:(unsigned int)opcode mode:(unsigned int)mode 
		 address:(unsigned int)address; */

@end