00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _SK_RT_SCOPE_
00009 #define _SK_RT_SCOPE_
00010
00011 #include <sk/util/Object.h>
00012 #include <sk/util/String.h>
00013 #include <sk/util/Boolean.h>
00014
00015 #include <sk/rt/logger/Spot.h>
00016 #include <sk/rt/scope/Controller.h>
00017 #include <sk/rt/logger/Stream.h>
00018 #include <sk/rt/logger/IScope.h>
00019 #include <sk/rt/scope/IConfig.h>
00020
00021 namespace sk {
00022 namespace rt {
00023 class Scope
00024 : public virtual logger::IScope
00025 {
00026 public:
00027 Scope(const sk::util::Object& object);
00028 Scope(const sk::util::String& name);
00029 Scope(const Scope& other);
00030 virtual ~Scope();
00031
00032 Scope& operator = (const Scope& other);
00033
00034 static scope::Controller& controller();
00035 const Scope scope(const sk::util::String& name) const;
00036
00037 const logger::Stream error(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00038 const logger::Stream warning(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00039 const logger::Stream stat(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00040 const logger::Stream info(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00041 const logger::Stream notice(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00042 const logger::Stream debug(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00043 const logger::Stream detail(const sk::util::String& label = sk::util::String::EMPTY, const sk::rt::logger::Spot& spot = sk::rt::logger::Spot::NOTSET) const;
00044
00045 const sk::util::String getProperty(const sk::util::String& name) const;
00046 bool hasProperty(const sk::util::String& name) const;
00047
00048 const sk::util::String getProperty(const sk::util::String& name, const sk::util::String& fallback) const;
00049 const sk::util::String getProperty(const sk::util::String& name, const char* fallback) const;
00050 int getProperty(const sk::util::String& name, int fallback) const;
00051 bool getProperty(const sk::util::String& name, const sk::util::Boolean& fallback) const;
00052
00053
00054 const sk::util::Class getClass() const;
00055
00056 protected:
00057
00058 void agregateScopeName(std::ostream& stream) const;
00059 const sk::util::Object& getObject() const;
00060 const scope::IConfig& getConfig() const;
00061
00062 private:
00063 Scope(const Scope& parent, const sk::util::String& name);
00064
00065 scope::Aggregator& getAggregator() const;
00066
00067 sk::util::String _name;
00068 const Scope& _parent;
00069 const sk::util::Object& _object;
00070 scope::Aggregator& _aggregator;
00071
00072 static scope::Controller _controller;
00073 };
00074 }
00075 }
00076
00077 #define SK_LOGSPOT sk::rt::logger::Spot::function(__FUNCTION__, __LINE__)
00078
00079 #endif