#ifndef QUERY_CONSTRAINTS_HPP #define QUERY_CONSTRAINTS_HPP namespace matador::utils { enum class constraints : unsigned char { NONE = 0, NOT_NULL = 1 << 0, INDEX = 1 << 1, UNIQUE = 1 << 2, PRIMARY_KEY = 1 << 3, FOREIGN_KEY = 1 << 4, DEFAULT = 1 << 5, UNIQUE_NOT_NULL = UNIQUE | NOT_NULL }; //static std::unordered_map constraints_to_name_map(); inline constraints operator|(constraints a, constraints b) { return static_cast(static_cast(a) | static_cast(b)); } inline constraints operator&(constraints a, constraints b) { return static_cast(static_cast(a) & static_cast(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(constraints source, constraints needle) { return static_cast(source & needle) > 0; } } #endif //QUERY_CONSTRAINTS_HPP