//
//  EXPLoader.h
//  dde
//
//  Created by ashley on 20/10/2007.
//  Copyright 2007 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>

@class EXPParser;
@class EXPModel;
@class EXPElement;
@class EXPBlockElement;
@class EXPSymbolReference;
@class EXPSymbolTable;
@class EXPError;

@interface EXPLoader : NSObject {
	EXPParser *_parser;
	EXPError *_error;
	BOOL _echo;

}

- (id) initWithString:(NSString *)string withEcho:(BOOL)echo error:(EXPError *)error;

- (void) registerDefaultFunctions:(EXPBlockElement *)model;
- (void) declareBuiltinParameter:(NSString *)name forModel:(EXPBlockElement *)model;
- (void) declareBuiltinAuxiliary:(NSString *)name forModel:(EXPBlockElement *)model;

- (id) error;

- (id) parser;
- (void) setParser:(id)parser;

- (BOOL) echo;
- (void) setEcho:(BOOL)newEcho;

- (BOOL) loadModel:(EXPBlockElement *)model;

- (BOOL) setSymbolReference:(EXPSymbolReference *)element forModel:(EXPBlockElement *)model  forAssignment:(id)assignment 
		isLeft:(BOOL)left error:(EXPError *)error;

- (id) expression8:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression6:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression5:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression4:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression3:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression2:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression1:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;
- (id) expression:(EXPBlockElement *)model indices:(NSArray *)indices isLeft:(BOOL)isLeft error:(EXPError *)error;

@end