Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

skTreeNodp.h

00001 /*
00002   Copyright 1996-2001
00003   Simon Whiteside
00004 
00005   $Id: skTreeNodp_h-source.html,v 1.2 2001/11/05 19:22:33 sdw Exp $
00006 */
00007 #include "skAlist.h"
00008 
00009 const int       MAXBUFFER=20000;
00010 
00011 
00012 EXTERN_TEMPLATE template class CLASSEXPORT skTAList<skTreeNode>;
00013 
00017 class  CLASSEXPORT skTreeNodeList :  public skTAList<skTreeNode>
00018 {           
00019  public:
00020   skTreeNodeList();
00021   skTreeNodeList(const skTreeNodeList&);
00022   virtual ~skTreeNodeList();
00023   skTreeNode *      findItem(const skString& label) const;
00024   skTreeNode *      findItem(const skString& label,const skString& data) const;
00025   skTreeNode *      nthElt(USize  i) const;
00026   skTreeNodeList&   operator=(const skTreeNodeList& );
00027 };
00028 
00029 #define USECLASSBUFFER
00030 
00031 class P_TreeNodeReader 
00032 {
00033  public:
00034 #ifdef STREAMS_ENABLED
00035   P_TreeNodeReader(istream& in);
00036 #endif
00037   enum Lexeme           { L_IDENT, L_TEXT, L_LBRACE, L_RBRACE, L_EOF, L_ERROR };
00038 
00039   void grabBuffer();
00040   void error(const skString& msg);
00041   bool eof();
00042   int get();
00043   int peek();
00044   Lexeme lex();
00045   void  unLex();
00046   skTreeNode *  parseTreeNode(skTreeNode * pparent);
00047   void parseTreeNodeList(skTreeNode *);
00048   void addToLexText(Char c);
00049 
00050   skString m_FileName;
00051   int m_UnLex;
00052   Lexeme m_LastLexeme;
00053   Char  * m_LexText;
00054   unsigned short m_Pos;
00055   unsigned short m_LineNum;
00056 #ifdef STREAMS_ENABLED
00057   istream& m_In;
00058 #endif
00059   bool  m_Error;
00060   bool  m_UsingClassLexText;
00061     
00062 #ifdef USECLASSBUFFER
00063   static Char g_ClassLexText[MAXBUFFER];
00064   static bool g_LexTextUsed;
00065 #endif
00066 };
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 

Generated at Mon Nov 5 19:22:25 2001 for Simkin by doxygen1.2.1 written by Dimitri van Heesch, © 1997-2000