query/include/matador/utils/constraints.hpp

25 lines
978 B
C++

#ifndef MATADOR_CONSTRAINTS_HPP
#define MATADOR_CONSTRAINTS_HPP
namespace matador::utils {
enum class constraints : unsigned char {
NONE = 0,
INDEX = 1 << 0,
UNIQUE = 1 << 1,
PRIMARY_KEY = 1 << 2,
FOREIGN_KEY = 1 << 3,
DEFAULT = 1 << 4
};
inline constraints operator|(constraints a, constraints b) { return static_cast<constraints>(static_cast<unsigned int>(a) | static_cast<unsigned int>(b)); }
inline constraints operator&(constraints a, constraints b) { return static_cast<constraints>(static_cast<unsigned int>(a) & static_cast<unsigned int>(b)); }
inline constraints& operator|= (constraints& a, constraints b) { return (constraints&)((int&)a |= (int)b); }
inline constraints& operator&= (constraints& a, constraints b) { return (constraints&)((int&)a &= (int)b); }
inline bool is_constraint_set(const constraints source, const constraints needle) { return static_cast<int>(source & needle) > 0; }
}
#endif //MATADOR_CONSTRAINTS_HPP