//
//  EXPSymbolTable.h
//  SimpleCalc
//
//  Created by Ashley on 03/04/2006.
//  Copyright 2006 __MyCompanyName__. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface EXPSymbolTable : NSObject {
	NSMutableDictionary *_symbolTable;
	int _nextParamAddress;
	int _nextVariableAddress;
	EXPSymbolTable *_parentTable;
	double *_constants;
	double *_state;
	double *_gradients;
}

- (void) resetSymbolTable;

- (NSMutableDictionary *) table;

- (void) setParentTable:(id)parentTable;
- (id) parentTable;

- (id) symbolForName:(NSString *) symbolName;
- (void) setSymbolForName:(NSString *) symbolName withEntry:(id) entry;
- (BOOL) declareSymbol:(id) entry;

- (int) nextParamAddress;
- (void) setNextParamAddress:(int)nextParamAddress;
- (void) incParamAddress;
- (int) nextVariableAddress;
- (void) setNextVariableAddress:(int)nextVariableAddress;
- (void) incVariableAddress;

- (double *) constants;
- (void) setConstants:(double *)constants;
- (double *) state;
- (void) setState:(double *)state;
- (double *) gradients;
- (void) setGradients:(double *)gradients;

/*- (void) loadConstant:(NSString *)name withValue:(double)value;
- (void) loadConstants; */

- (void) dump;

@end