00001 // Module: Log4CPLUS 00002 // File: appenderattachable.h 00003 // Created: 6/2001 00004 // Author: Tad E. Smith 00005 // 00006 // 00007 // Copyright (C) Tad E. Smith All rights reserved. 00008 // 00009 // This software is published under the terms of the Apache Software 00010 // License version 1.1, a copy of which has been included with this 00011 // distribution in the LICENSE.APL file. 00012 // 00013 00016 #ifndef _LOG4CPLUS_SPI_APPENDER_ATTACHABLE_HEADER_ 00017 #define _LOG4CPLUS_SPI_APPENDER_ATTACHABLE_HEADER_ 00018 00019 #include <log4cplus/config.h> 00020 #include <log4cplus/appender.h> 00021 #include <log4cplus/tstring.h> 00022 #include <log4cplus/helpers/pointer.h> 00023 #include <vector> 00024 00025 namespace log4cplus { 00026 // Forward Declarations 00027 typedef helpers::SharedObjectPtr<Appender> SharedAppenderPtr; 00028 typedef std::vector<log4cplus::SharedAppenderPtr> SharedAppenderPtrList; 00029 00030 namespace spi { 00031 00035 class LOG4CPLUS_EXPORT AppenderAttachable { 00036 public: 00037 // Methods 00041 virtual void addAppender(SharedAppenderPtr newAppender) = 0; 00042 00046 virtual SharedAppenderPtrList getAllAppenders() = 0; 00047 00051 virtual SharedAppenderPtr getAppender(const log4cplus::tstring& name) = 0; 00052 00056 virtual void removeAllAppenders() = 0; 00057 00061 virtual void removeAppender(SharedAppenderPtr appender) = 0; 00062 00067 virtual void removeAppender(const log4cplus::tstring& name) = 0; 00068 00069 // Dtor 00070 virtual ~AppenderAttachable(){} 00071 }; 00072 00073 } // end namespace spi 00074 } // end namespace log4cplus 00075 00076 #endif // _LOG4CPLUS_SPI_APPENDER_ATTACHABLE_HEADER_ 00077