00001 #ifndef REBECCA_STRINGPIMPL_H
00002 #define REBECCA_STRINGPIMPL_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 #include <rebecca/exports.h>
00028
00029 #include <rebecca/Exceptions.h>
00030
00031
00032
00033
00034 #ifdef _WIN32
00035 # pragma warning ( push )
00036 # pragma warning( disable : 4290 )
00037 #endif
00038
00039
00040
00041 namespace rebecca
00042 {
00043
00044 namespace impl
00045 {
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 class StringPrivate;
00057
00079 class REBECCA_EXPORT StringPimpl
00080 {
00081 public:
00082
00094 StringPimpl() throw(Exception &);
00095
00110 StringPimpl(const char * const stringPimpl) throw(Exception &);
00111
00124 const char *c_str() const throw(Exception &);
00125
00137 bool empty() const throw(Exception &);
00138
00149 StringPimpl(const StringPimpl& stringPimpl);
00150
00161 StringPimpl &operator=(const StringPimpl &stringPimpl);
00162
00171 virtual ~StringPimpl();
00172
00195 void operator delete(void* p);
00196
00221 void *operator new(unsigned int size);
00222
00223 private:
00224
00235 void init(const char * const stringPimpl);
00236
00244 StringPrivate *m_pimpl;
00245 };
00246
00247 }
00248
00249
00250 using rebecca::impl::StringPimpl;
00251
00252 }
00253
00254 #ifdef _WIN32
00255 # pragma warning ( pop )
00256 #endif
00257
00258
00259
00260
00261
00262 #endif