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

HxToken.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 HxToken_h
00012 #define HxToken_h
00013 
00014 #pragma warning (disable : 4786)
00015 
00016 #include "HxStd.h"
00017 #include "HxIoFwd.h"
00018 #include "HxString.h"
00019 
00020 #include "HxTokenDef.h"
00021 
00022 
00023 typedef enum {
00024     HXTEOF = HX_EOFILE,
00025     HXTNONE = HX_NONE,
00026     HXTINT = HX_INT,
00027     HXTREAL = HX_REAL,
00028     HXTIDENT = HX_IDENT,
00029     HXTSTRING = HX_STRING,
00030     HXTMINUS = HX_MINUS,
00031     HXTREGKEY = HX_REGKEY
00032 } HxTokNum;
00033 
00034 class HxToken
00035 {
00036 public:
00037                     HxToken();
00038                     HxToken(int num);
00039                     HxToken(int num, uLong l);
00040                     HxToken(int num, double d);
00041                     HxToken(int num, HxString lex);
00042 
00043     int             getNum() const;
00044     void            setNum(int);
00045 
00046     uLong           getLong() const;
00047     void            setLong(uLong);
00048 
00049     double          getDouble() const;
00050     void            setDouble(double);
00051 
00052     STD_OSTREAM&    put(STD_OSTREAM&) const;
00053 
00054     HxString        lexeme() const;
00055     void            setLexeme(HxString);
00056 
00057     static HxString name(int num);
00058 
00059 private:
00060     int             _num;
00061     union {
00062         uLong       l;
00063         double      d;
00064     }               _attr;
00065     HxString        _lex;
00066 };
00067 
00068 inline STD_OSTREAM&
00069 operator<<(STD_OSTREAM& os, const HxToken& t)
00070 {
00071     return t.put(os);
00072 }
00073 
00074 inline
00075 HxToken::HxToken() : _num(HXTNONE), _lex("") { _attr.l = 0; }
00076 
00077 inline
00078 HxToken::HxToken(int n) : _num(n), _lex("") { _attr.l = 0; }
00079 
00080 inline
00081 HxToken::HxToken(int n, uLong l) : _num(n), _lex("") { _attr.l = l; }
00082 
00083 inline
00084 HxToken::HxToken(int n, double d) : _num(n), _lex("") { _attr.d = d; }
00085 
00086 inline
00087 HxToken::HxToken(int n, HxString l) : _num(n), _lex(l) {}
00088 
00089 inline int
00090 HxToken::getNum() const { return _num; }
00091 
00092 inline void
00093 HxToken::setNum(int num) { _num = num; }
00094 
00095 inline uLong
00096 HxToken::getLong() const { return _attr.l; }
00097 
00098 inline void
00099 HxToken::setLong(uLong l) { _attr.l = l; }
00100 
00101 inline double
00102 HxToken::getDouble() const { return _attr.d; }
00103 
00104 inline void
00105 HxToken::setDouble(double d) { _attr.d = d; }
00106 
00107 inline HxString
00108 HxToken::lexeme() const { return _lex; }
00109 
00110 inline void
00111 HxToken::setLexeme(HxString s) { _lex = s; }
00112 
00113 #endif

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