IMP  2.4.0
The Integrative Modeling Platform
SetLogState.h
Go to the documentation of this file.
1 /**
2  * \file IMP/base/SetLogState.h \brief Logging and error reporting support.
3  *
4  * Copyright 2007-2015 IMP Inventors. All rights reserved.
5  *
6  */
7 
8 #ifndef IMPBASE_SET_LOG_STATE_H
9 #define IMPBASE_SET_LOG_STATE_H
10 
11 #include <IMP/base/base_config.h>
12 #include "enums.h"
13 #include "raii_macros.h"
14 #include "value_macros.h"
15 #include <IMP/base/nullptr.h>
16 
17 IMPBASE_BEGIN_NAMESPACE
18 class Object;
19 
20 //! A class to change and restore log state
21 /**
22  To use, create an instance of this class with the log level you
23  want. When it goes out of scope, it will restore the old level.
24 
25 
26  \note This will not keep objects alive, make sure there is also some
27  other ref-counted pointer to them.
28 
29  \ingroup logging
30  */
31 class IMPBASEEXPORT SetLogState : public base::RAII {
32  LogLevel level_;
33  Object *obj_;
34  void do_set(Object *o, LogLevel l);
35  void do_reset();
36  void do_show(std::ostream &out) const;
37 
38  public:
40  level_ = DEFAULT;
41  obj_ = nullptr;
42  },
43  { do_set(o, l); }, { do_reset(); }, do_show(out););
44 
45  //! Construct it with the desired level and target
46  SetLogState(LogLevel l);
47  void set(LogLevel l);
48 };
49 
51 
52 IMPBASE_END_NAMESPACE
53 
54 #endif /* IMPBASE_SET_LOG_STATE_H */
LogLevel
The log levels supported by IMP.
Definition: enums.h:20
#define IMP_RAII(Name, args, Initialize, Set, Reset, Show)
Declares RAII-style methods in a class.
Definition: raii_macros.h:34
A class to change and restore log state.
Definition: SetLogState.h:31
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
Provide a nullptr keyword analog.
Common base class for heavy weight IMP objects.
Definition: Object.h:106
Basic types used by IMP.
Various general useful macros for IMP.
Various general useful macros for IMP.