00001 #ifndef REBECCA_FRAMEWORK_TAG_H
00002 #define REBECCA_FRAMEWORK_TAG_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifdef _WIN32
00031 # pragma warning ( push )
00032 # pragma warning( disable : 4251 )
00033 # pragma warning( disable : 4290 )
00034 #endif
00035
00036
00037 #include <rebecca/StringPimpl.h>
00038 #include <rebecca/exports.h>
00039 #include <rebecca/Exceptions.h>
00040 #include <rebecca/framework/GraphBuilderFramework.h>
00041
00042
00043 #include <cstddef>
00044
00045 namespace rebecca
00046 {
00047 namespace framework
00048 {
00049 namespace impl
00050 {
00051
00052
00053
00054
00055
00066 class TagImpl;
00067
00076 class REBECCA_EXPORT Tag
00077 {
00078
00079 public:
00080
00090 Tag()
00091 throw(InternalProgrammerErrorException &);
00092
00117 virtual void addCharacters(const StringPimpl &characters)
00118 throw(InternalProgrammerErrorException &);
00119
00141 virtual void handleInnerTag(Tag *tag)
00142 throw(InternalProgrammerErrorException &);
00143
00160 virtual void setAttribute(const StringPimpl &name, const StringPimpl &value)
00161 throw(InternalProgrammerErrorException &);
00162
00198 bool instanceOf(const char * const instance) const
00199 throw(InternalProgrammerErrorException &);
00200
00223 void operator delete(void* p);
00224
00225
00250 void *operator new(size_t size);
00251
00256 virtual ~Tag();
00257
00258 protected:
00259
00278 void addInstanceOf(const char * const instance)
00279 throw(InternalProgrammerErrorException &);
00280
00281 private:
00282
00293 TagImpl *m_pimpl;
00294
00303 Tag &operator=(const Tag &tag);
00304
00314 Tag(const Tag& tag);
00315 };
00316
00317 }
00318
00319
00320 using rebecca::framework::impl::Tag;
00321
00322
00323
00324
00325
00326
00327 using namespace rebecca;
00328
00329 }
00330 }
00331
00332 #ifdef _WIN32
00333 # pragma warning ( pop )
00334 #endif
00335
00336 #endif