Sometimes you need to store lots of diffrent state about a type. Usualy that it has something or not. It would be wastefull to use for each feature a single value. The more effitient way is to store it using flags.

To do that, you can use enums. You just have to assigne the values, such that only one bit is ever set and no member shares a bit. You can then set multiple flags by or-ing them together using |-operator. To check, if a flag is set, use the &-operator.

Implement a Set and isSet function to make these operations more readable.