38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#ifndef QUERY_CONSTRAINTS_HPP
|
|
#define QUERY_CONSTRAINTS_HPP
|
|
|
|
namespace matador::utils {
|
|
|
|
enum class constraints : unsigned char {
|
|
NONE = 0,
|
|
INDEX = 1 << 1,
|
|
UNIQUE = 1 << 2,
|
|
PRIMARY_KEY = 1 << 3,
|
|
FOREIGN_KEY = 1 << 4,
|
|
DEFAULT = 1 << 5,
|
|
AUTO_INCREMENT = 1 << 6
|
|
};
|
|
|
|
//static std::unordered_map<constraints, std::string> constraints_to_name_map();
|
|
|
|
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(constraints source, constraints needle)
|
|
{
|
|
return static_cast<int>(source & needle) > 0;
|
|
}
|
|
|
|
}
|
|
#endif //QUERY_CONSTRAINTS_HPP
|