X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FArea.hh;h=648bd8c94e6700d407fdaec5265cb8865818232d;hb=54eed72c506b09ef5b4be0b62fecedfbc0e3f261;hp=20ff5dbf92cd2f921d905dd49ed613e8bd9639e9;hpb=b52002fa2001e6472d6aa3dde263b85f654c6e8e;p=senf.git diff --git a/Utils/Logger/Area.hh b/Utils/Logger/Area.hh index 20ff5db..648bd8c 100644 --- a/Utils/Logger/Area.hh +++ b/Utils/Logger/Area.hh @@ -27,9 +27,12 @@ #define HH_Area_ 1 // Custom includes +#include +#include +#include +#include "../singleton.hh" //#include "Area.mpp" -#include "Area.ih" ///////////////////////////////hh.p//////////////////////////////////////// /** \brief Define log area @@ -38,13 +41,48 @@ \hideinitializer */ -#define SENF_LOG_DEF_AREA(area) \ - struct area \ - : public senf::log::detail::AreaBase \ - {} +#define SENF_LOG_DEF_AREA(area) SENF_LOG_DEF_AREA_I(area, ; ) + +namespace senf { +namespace log { + + namespace detail { struct AreaBase; } + + class AreaRegistry + : public senf::singleton + { + typedef std::map Registry; + + struct SelectName + { + typedef std::string result_type; + std::string const & operator()(Registry::value_type const & v) const; + }; + + public: + typedef boost::transform_iterator iterator; + + using senf::singleton::instance; + + iterator begin(); + iterator end(); + + private: + AreaRegistry(); + + void registerArea(detail::AreaBase const & area); + + Registry registry_; + + friend class senf::singleton; + friend class detail::AreaBase; + friend class Target; + }; + +}} ///////////////////////////////hh.e//////////////////////////////////////// -//#include "Area.cci" +#include "Area.cci" //#include "Area.ct" //#include "Area.cti" #endif