]> Shamusworld >> Repos - architektonas/blob - src/base/rs_flags.h
ab32848f490b4a1017efc87f5c35de30bcda090b
[architektonas] / src / base / rs_flags.h
1 #ifndef RS_FLAGS_H
2 #define RS_FLAGS_H
3
4 #include "rs.h"
5 #include "rs_debug.h"
6
7 /**
8  * Base class for objects which have flags.
9  *
10  * @author Andrew Mustun
11  */
12 class RS_Flags
13 {
14 public:
15     /** Default constructor. Resets all flags to 0. */
16     RS_Flags() {
17         flags = 0;
18     }
19
20     /** Constructor with initialisation to the given flags. */
21     RS_Flags(unsigned int f) {
22         flags = f;
23     }
24
25     virtual ~RS_Flags() {}
26
27     unsigned int getFlags() const {
28         return flags;
29     }
30
31     void resetFlags() {
32         flags=0;
33     }
34
35     void setFlags(unsigned int f) {
36         flags=f;
37     }
38
39     void setFlag(unsigned int f) {
40         flags=flags|f;
41     }
42
43     void delFlag(unsigned int f) {
44         flags=flags&(~f);
45     }
46
47     void toggleFlag(unsigned int f) {
48         flags=flags^f;
49     }
50
51     bool getFlag(unsigned int f) const {
52         if(flags&f) {
53             return true;
54         } else {
55             return false;
56         }
57     }
58
59 private:
60     unsigned int flags;
61 };
62
63 #endif