#ifndef MATADOR_CONSTRAINTS_HPP #define MATADOR_CONSTRAINTS_HPP namespace matador::utils { enum class constraints : unsigned char { None = 0, Index = 1 << 0, Unique = 1 << 1, PrimaryKey = 1 << 2, ForeignKey = 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 reinterpret_cast(reinterpret_cast(a) |= static_cast(b)); } inline constraints& operator&= (constraints& a, constraints b) { return reinterpret_cast(reinterpret_cast(a) &= static_cast(b)); } inline bool is_constraint_set(const constraints source, const constraints needle) { return static_cast(source & needle) > 0; } } #endif //MATADOR_CONSTRAINTS_HPP