00001 #ifndef REBECCA_FRAMEWORK_TEMPLATE_H
00002 #define REBECCA_FRAMEWORK_TEMPLATE_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 : 4290 )
00032 #    pragma warning( disable : 4251 )
00033 #endif
00034 
00035 
00036 #include <rebecca/framework/InnerCategory.h>
00037 
00038 
00039 #include <boost/enable_shared_from_this.hpp>
00040 #include <boost/shared_ptr.hpp>
00041 
00042 namespace rebecca
00043 {
00044 namespace framework
00045 {
00046 namespace impl
00047 {
00048 
00049 using namespace boost;
00050 
00051 
00052 
00053 
00054 
00065 class TemplateImpl;
00066 class InnerTemplate;
00067 
00079 class REBECCA_EXPORT Template : public InnerCategory, public enable_shared_from_this<Template>
00080 {
00081     public:
00082 
00092         Template() 
00093             throw(InternalProgrammerErrorException &);
00094 
00113         virtual void add(const shared_ptr<InnerTemplate> &tag) 
00114             throw(InternalProgrammerErrorException &);
00115         
00134         virtual StringPimpl getString() const
00135             throw(InternalProgrammerErrorException &);
00136         
00162         virtual void addCharacters(const StringPimpl &characters) 
00163             throw(InternalProgrammerErrorException &);
00164     
00185         virtual void handleInnerTag(const shared_ptr<Tag> &tag) 
00186             throw(InternalProgrammerErrorException &);
00187 
00192         virtual ~Template();
00193 
00194 
00195     private:
00196 
00207         shared_ptr<TemplateImpl> m_pimpl;
00208 
00209 };
00210 
00211 } 
00212 
00213 
00214 using rebecca::framework::impl::Template;
00215 
00216 } 
00217 } 
00218 
00219 
00220 #ifdef _WIN32
00221 #    pragma warning ( pop )
00222 #endif
00223 
00224 #endif
00225