IMP logo
IMP Reference Guide  2.22.0
The Integrative Modeling Platform
SetCheckState.h
Go to the documentation of this file.
1 /**
2  * \file IMP/SetCheckState.h
3  * \brief Checking and error reporting support.
4  *
5  * Copyright 2007-2022 IMP Inventors. All rights reserved.
6  *
7  */
8 
9 #ifndef IMPKERNEL_SET_CHECK_STATE_H
10 #define IMPKERNEL_SET_CHECK_STATE_H
11 
12 #include <IMP/kernel_config.h>
13 #include "enums.h"
14 #include "raii_macros.h"
15 #include "value_macros.h"
16 
17 IMPKERNEL_BEGIN_NAMESPACE
18 class Object;
19 
20 //! A class to change and restore check state
21 /**
22  To use, create an instance of this class with the check level you
23  want. When it goes out of scope, it will restore the old level.
24 
25  \note This will not keep objects alive; make sure there is also some
26  other ref-counted pointer to them.
27 
28  \ingroup checking
29  */
30 class IMPKERNELEXPORT SetCheckState : public RAII {
31  CheckLevel level_;
32  Object *obj_;
33  void do_set(Object *o, CheckLevel l);
34  void do_reset();
35  void do_show(std::ostream &out) const;
36 
37  public:
39  level_ = DEFAULT_CHECK;
40  obj_ = nullptr;
41  },
42  { do_set(o, l); }, { do_reset(); }, do_show(out););
43 
44  //! Construct it with the desired level and target
46  obj_ = nullptr;
47  level_ = DEFAULT_CHECK;
48  set(l);
49  }
50  void set(CheckLevel l);
51 };
52 
54 
55 IMPKERNEL_END_NAMESPACE
56 
57 #endif /* IMPKERNEL_SET_CHECK_STATE_H */
Temporarily change something; undo the change when this object is destroyed.
Definition: RAII.h:28
#define IMP_RAII(Name, args, Initialize, Set, Reset, Show)
Declares RAII-style methods in a class.
Definition: raii_macros.h:34
SetCheckState(CheckLevel l)
Construct it with the desired level and target.
Definition: SetCheckState.h:45
A more IMP-like version of the std::vector.
Definition: Vector.h:50
#define IMP_VALUES(Name, PluralName)
Define the type for storing sets of values.
Definition: value_macros.h:23
Common base class for heavy weight IMP objects.
Definition: Object.h:111
A class to change and restore check state.
Definition: SetCheckState.h:30
Basic enumeration types used by IMP.
CheckLevel
Specify the level of runtime checks performed.
Definition: enums.h:51
Macros to help in implementing Value objects.
Macros to aid in writing RAII-style classes.