Tag.h

00001 /* 00002 * ALMA - Atacama Large Millimeter Array 00003 * (c) European Southern Observatory, 2002 00004 * (c) Associated Universities Inc., 2002 00005 * Copyright by ESO (in the framework of the ALMA collaboration), 00006 * Copyright by AUI (in the framework of the ALMA collaboration), 00007 * All rights reserved. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public 00011 * License as published by the Free software Foundation; either 00012 * version 2.1 of the License, or (at your option) any later version. 00013 * 00014 * This library is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY, without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 * Lesser General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU Lesser General Public 00020 * License along with this library; if not, write to the Free Software 00021 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00022 * MA 02111-1307 USA 00023 * 00024 * File Tag.h 00025 */ 00026 00027 #ifndef Tag_CLASS 00028 #define Tag_CLASS 00029 00030 #include <vector> 00031 #include <iostream> 00032 #include <string> 00033 #include <sstream> 00034 #include <vector> 00035 using namespace std; 00036 00037 #ifndef WITHOUT_ACS 00038 #include <asdmIDLTypesC.h> 00039 using asdmIDLTypes::IDLTag; 00040 #endif 00041 00042 #include <StringTokenizer.h> 00043 #include <InvalidArgumentException.h> 00044 #include <TagFormatException.h> 00045 #include "TagType.h" 00046 #include "Integer.h" 00047 00048 00049 using asdm::StringTokenizer; 00050 using asdm::InvalidArgumentException; 00051 00052 #include "EndianStream.h" 00053 using asdm::EndianOSStream; 00054 using asdm::EndianISStream; 00055 00056 namespace asdm { 00057 00058 class Tag; 00075 class Tag { 00076 00077 public: 00081 Tag(); 00082 00089 Tag(unsigned int i); 00090 00098 Tag(unsigned int i, const TagType* t) ; 00099 00103 Tag(const Tag &t); 00104 00105 00106 //Tag(const string &id); 00107 #ifndef WITHOUT_ACS 00108 00114 Tag(IDLTag &t); 00115 #endif 00116 00122 static Tag parseTag (string s); 00123 00130 string toString() const; 00131 00135 void toBin(EndianOSStream& eoss); 00136 00142 static void toBin(const vector<Tag>& tag, EndianOSStream& eoss) ; 00143 00151 static Tag fromBin(EndianISStream& eiss); 00152 00160 static vector<Tag> from1DBin(EndianISStream & eiss); 00161 00165 virtual ~Tag(); 00166 00174 TagType* getTagType(); 00175 00183 unsigned int getTagValue(); 00184 00185 #ifndef WITHOUT_ACS 00186 00191 IDLTag toIDLTag() const; 00192 #endif 00193 00199 string getTag() const; 00200 00204 Tag& operator = (const Tag &); 00205 00209 bool equals(const Tag & t) const; 00210 00217 bool operator == (const Tag& t) const; 00218 00222 bool operator != (const Tag& t) const; 00223 00229 bool operator < (const Tag& t) const; 00230 00235 bool isNull() const; 00236 00237 protected: 00238 string tag; 00239 TagType* type; 00240 }; 00241 00242 // End namespace asdm 00243 } 00244 #endif /* Tag_CLASS */

Generated on Tue Nov 18 17:43:41 2008 for ASDM C++ Implementation by doxygen 1.3.8