00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMP_SET_LOG_STATE_H
00009 #define IMP_SET_LOG_STATE_H
00010
00011 #include "log.h"
00012 #include "Object.h"
00013
00014 IMP_BEGIN_NAMESPACE
00015
00016
00017
00018
00019
00020
00021
00022
00023 class IMPEXPORT SetLogState: public RAII
00024 {
00025 LogLevel level_;
00026 Object* obj_;
00027 public:
00028 IMP_RAII(SetLogState, (Object *o, LogLevel l),
00029 {level_= DEFAULT; obj_=NULL;},
00030 {
00031 if (l != DEFAULT) {
00032 obj_=o;
00033 level_= obj_->get_log_level();
00034 obj_->set_log_level(l);
00035 } else {
00036 obj_=NULL;
00037 level_=DEFAULT;
00038 }
00039 },
00040 {
00041 if (level_ != DEFAULT) {
00042 if (obj_) {
00043 obj_->set_log_level(level_);
00044 } else {
00045 set_log_level(level_);
00046 }
00047 obj_=NULL;
00048 level_=DEFAULT;
00049 }
00050 });
00051
00052
00053 SetLogState(LogLevel l){
00054 obj_=NULL;
00055 level_= DEFAULT;
00056 set(l);
00057 }
00058 void set(LogLevel l) {
00059 reset();
00060 if (l != DEFAULT) {
00061 level_= get_log_level();
00062 set_log_level(l);
00063 } else {
00064 level_=DEFAULT;
00065 }
00066 }
00067 };
00068
00069
00070 IMP_END_NAMESPACE
00071
00072 #endif