00001 #ifndef REBECCA_FRAMEWORK_PATTERN_H
00002 #define REBECCA_FRAMEWORK_PATTERN_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 #ifdef _WIN32
00030 # pragma warning ( push )
00031 # pragma warning( disable : 4251 )
00032 # pragma warning( disable : 4290 )
00033 #endif
00034
00035
00036 #include <rebecca/framework/InnerCategory.h>
00037
00038
00039 #include <boost/enable_shared_from_this.hpp>
00040
00041 namespace rebecca
00042 {
00043 namespace framework
00044 {
00045 namespace impl
00046 {
00047
00048
00049
00050
00051
00062 class PatternImpl;
00063
00064 using boost::enable_shared_from_this;
00065
00077 class REBECCA_EXPORT Pattern : public InnerCategory, public enable_shared_from_this<Pattern>
00078 {
00079 public:
00080
00090 Pattern()
00091 throw(InternalProgrammerErrorException &);
00092
00107 virtual void addCharacters(const StringPimpl &characters)
00108 throw(InternalProgrammerErrorException &);
00109
00119 virtual StringPimpl getString() const
00120 throw(InternalProgrammerErrorException &);
00121
00136 virtual const StringPimpl &getStringConstRef() const
00137 throw(InternalProgrammerErrorException &);
00138
00143 virtual ~Pattern();
00144
00145 private:
00146
00157 shared_ptr<PatternImpl> m_pimpl;
00158 };
00159
00160 }
00161
00162
00163 using rebecca::framework::impl::Pattern;
00164
00165 }
00166 }
00167
00168 #ifdef _WIN32
00169 # pragma warning ( pop )
00170 #endif
00171
00172 #endif
00173