eis/mix_cc/sql/statement.h

45 lines
915 B
C++

/**
* @file mix_cc/sql/statement.h
* @brief 语句类基类
* @author Cat (null.null.null@qq.com)
* @version 0.1
* @date 2021-09-17
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#pragma once
#include <mix_cc/sql/public.h>
namespace mix_cc {
namespace sql {
struct statement_t {};
template <typename PrevStatement>
struct prev_statement_t {
explicit constexpr prev_statement_t(PrevStatement prev_st)
: prev_st_(prev_st) {}
constexpr auto parse_prev() {
return hana::flatten(
hana::make_tuple(prev_st_.parse_prev(), hana::make_tuple(prev_st_)));
}
protected:
PrevStatement prev_st_;
};
template <>
struct prev_statement_t<void> {
constexpr prev_statement_t() {}
constexpr auto parse_prev() { return hana::make_tuple(); }
};
template <typename Tp>
constexpr auto get_value(Tp val) {
return val;
}
} // namespace sql
} // namespace mix_cc