Electroneum
get_token.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <boost/variant/static_visitor.hpp>
4 
5 #include "mstch/mstch.hpp"
6 #include "has_token.hpp"
7 
8 namespace mstch {
9 
10 class get_token: public boost::static_visitor<const mstch::node&> {
11  public:
12  get_token(const std::string& token, const mstch::node& node):
14  {
15  }
16 
17  template<class T>
18  const mstch::node& operator()(const T&) const {
19  return m_node;
20  }
21 
22  const mstch::node& operator()(const map& map) const {
23  return map.at(m_token);
24  }
25 
26  const mstch::node& operator()(const std::shared_ptr<object>& object) const {
27  return object->at(m_token);
28  }
29 
30  private:
31  const std::string& m_token;
33 };
34 
35 }
get_token(const std::string &token, const mstch::node &node)
Definition: get_token.hpp:12
const uint32_t T[512]
Definition: groestl_tables.h:34
const mstch::node & operator()(const map &map) const
Definition: get_token.hpp:22
const std::string & m_token
Definition: get_token.hpp:31
const mstch::node & operator()(const std::shared_ptr< object > &object) const
Definition: get_token.hpp:26
boost::make_recursive_variant< std::nullptr_t, std::string, int, double, bool, uint64_t, int64_t, uint32_t, internal::lambda_t< boost::recursive_variant_ >, std::shared_ptr< internal::object_t< boost::recursive_variant_ > >, internal::map< const std::string, boost::recursive_variant_ >, std::vector< boost::recursive_variant_ > >::type node
Definition: mstch.hpp:116
const mstch::node & operator()(const T &) const
Definition: get_token.hpp:18
Definition: get_token.hpp:10
Definition: mstch.hpp:95
Definition: mstch.hpp:11
Definition: token.hpp:9
const mstch::node & m_node
Definition: get_token.hpp:32