2 #include "ypc/core_t/analyzer/var/model_var.h"
3 #include "ypc/core_t/analyzer/var/parser_var.h"
4 #include "ypc/stbox/ebyte.h"
11 static constexpr
bool value =
false;
14 template <
typename C,
typename Ret,
typename... Args>
18 static constexpr
auto check(T *) ->
typename std::is_same<
19 decltype(std::declval<T>().set_context(std::declval<Args>()...)),
22 template <
typename>
static constexpr std::false_type check(...);
24 typedef decltype(check<C>(0)) type;
27 static constexpr
bool value = type::value;
31 static constexpr
bool value =
false;
43 template <
typename C,
typename Ret,
typename... Args>
47 static constexpr
auto check(T *) ->
typename std::is_same<
48 decltype(std::declval<T>().do_parse(std::declval<Args>()...)), Ret>::type;
50 template <
typename>
static constexpr std::false_type check(...);
52 typedef decltype(check<C>(0)) type;
55 static constexpr
bool value = type::value;
59 typedef stbox::bytes type(
const ModelT &,
const uint8_t *, uint32_t);
62 typedef stbox::bytes type(
const uint8_t *, uint32_t);
64 template <
typename ParserT,
65 bool has_set_context_func =
69 parser->set_context(context);
76 template <
typename ParserT,
typename ModelT,
77 bool hash_model = !std::is_same<ModelT, void>::value,
83 template <
typename ParserT>
88 stbox::bytes do_parse(
const uint8_t *input_param, uint32_t len) {
91 return parser_var_t::m_parser->do_parse(input_param, len);
95 template <
typename ParserT>
101 stbox::bytes do_parse(
const uint8_t *input_param, uint32_t len) {
104 return parser_var_t::m_parser->do_parse(stbox::bytes(input_param, len));
108 template <
typename ParserT,
typename ModelT>
117 stbox::bytes do_parse(
const uint8_t *input_param, uint32_t len) {
120 return parser_var_t::m_parser->do_parse(model_var_t::m_model, input_param,
125 template <
typename ParserT,
typename ModelT>
134 stbox::bytes do_parse(
const uint8_t *input_param, uint32_t len) {
137 return parser_var_t::m_parser->do_parse(model_var_t::m_model,
138 stbox::bytes(input_param, len));