Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxSyntaxNode.h

00001 /*
00002  *  Copyright (c) 1998, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *
00006  *  Author(s):
00007  *  Dennis Koelma (koelma@wins.uva.nl)
00008  *  Edo Poll (poll@wins.uva.nl)
00009  */
00010 
00011 #ifndef HxSyntaxNode_h
00012 #define HxSyntaxNode_h
00013 
00014 #include "HxIoFwd.h"
00015 
00016 typedef enum {
00017     HxSnTerminal,
00018     HxSnBranch
00019 } HxSyntaxNodeTags;
00020 
00021 class HxSyntaxNode
00022 {
00023 public:
00024                             HxSyntaxNode();
00025     virtual                 ~HxSyntaxNode() {}
00026 
00027     virtual int             type() const = 0;
00028     int                     getLineNr() const;
00029     void                    setLineNr(int n);
00030 
00031     virtual void            destroy() = 0;
00032 
00033     virtual STD_OSTREAM&    put(STD_OSTREAM&, int indent = 0) const = 0;
00034 
00035 private:
00036     void                    operator delete(void*) {};
00037     int                     _lineNr;
00038 };
00039 
00040 typedef HxSyntaxNode* HxSyntaxNodePtr;
00041 
00042 inline
00043 HxSyntaxNode::HxSyntaxNode() : _lineNr(-1) {}
00044 
00045 inline int
00046 HxSyntaxNode::getLineNr() const { return _lineNr; }
00047 
00048 inline void
00049 HxSyntaxNode::setLineNr(int n) { _lineNr = n; }
00050 
00051 inline STD_OSTREAM&
00052 operator<<(STD_OSTREAM& os, const HxSyntaxNode& sn) { return sn.put(os); }
00053 
00054 inline STD_OSTREAM&
00055 operator<<(STD_OSTREAM& os, const HxSyntaxNode* sn) { return sn->put(os); }
00056 
00057 #endif

Generated on Tue Feb 3 14:18:42 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001