#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(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(const constraints source, const constraints needle) { return static_cast(source & needle) > 0; } } #endif //MATADOR_CONSTRAINTS_HPP