// ////////////////////////////////////////////////////////
// Copyright (1994) Columbia University
// Department of Biochemistry and Molecular Biophysics
//
// Author: Weider Chang, Ph.D
// ///////////////////////////////////////////////////////

#ifndef _WDCSTARPARSER_H_
#define _WDCSTARPARSER_H_

#include "wobject.h"
#include "stack.h"
#include "diction.h"
#include "llistobj.h"

@interface WDCStarParser : WDCObject 
{
  WDCStarLoopStack* _nameScopeStack;
  WDCLListOfObject * _dictionaryList;
  WDCLListOfObject * _globalBlockList;
  WDCLListOfObject * _starFileList;
  BOOL _parsingDictionary;
  WDCString* _currentFileName;

}

- init;
- initScopeStack;
- parse:(const char *)fileName;
- parseDictionary:(const char *)fileName;
- parseStarFile:(const char*)fileName;
- (WDCStarLoopStack*)getStack;
- (WDCLListOfObject*)getDictionaryList;
- (WDCLListOfObject*)getStarFileList;
- (WDCLListOfObject*)getGlobalBlockList;
- (WDCLListOfObject*)getParsingFileTypeList;
- (const char*)getCurrentFileName;
- getGlobalBlockNamed:(char*)aName;
- getDictionaryNamed:(char*)aName;
- getStarFileNamed:(char*)aName;
- getCurrentParsingFile;
- getCurrentParsingGlobalBlock;
- setStack:stack;
- setDictionaryList:(WDCDictionary*)dictionary;
- setGlobalBlockList:global;
- setStarFileList:starFile;
- setCurrentScope:scope;
- setCurrentFileName:(const char *)fileName;
- setParsingDictionary:(BOOL)value;
- setParsingFileTypeList:blocks;
- addGlobalBlock:block;
- addParsingFile:block;
- newDataBlockWithName:(const char*)aName value:aValue;
- newBlocksWithName:(const char*)aName value:aValue;
- newStarItemAssocWithName:(const char*)aName value:aValue;
- newStringInitFromCString:(const char*)aString;
- newObjectListWithContent:content;
- newLineBufferInitFromCString:(char*)aString;
- pushScope:scope;
- topScopeObject;
- (BOOL)isParsingDictionary;

- printForDebugger;

@end


#endif
