field.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
22 #ifndef NDN_CXX_LP_FIELD_HPP
23 #define NDN_CXX_LP_FIELD_HPP
24 
25 #include "../common.hpp"
26 #include "../encoding/encoding-buffer.hpp"
27 #include "../util/concepts.hpp"
28 
29 namespace ndn {
30 namespace lp {
31 
35 namespace field_location_tags {
36 
37 class Base
38 {
39 };
40 
44 class Header : public Base
45 {
46 };
47 
51 class Fragment : public Base
52 {
53 };
54 
55 } // namespace field_location_tags
56 
60 template<class X>
61 struct Field
62 {
63  static_assert(std::is_base_of<field_location_tags::Base, typename X::FieldLocation>::value, "");
64  static_assert(std::is_same<typename X::TlvType::value_type, uint64_t>::value, "");
65  static_assert(std::is_same<typename X::IsRepeatable::value_type, bool>::value, "");
66  NDN_CXX_ASSERT_DEFAULT_CONSTRUCTIBLE(typename X::ValueType);
67  BOOST_CONCEPT_ASSERT((boost::CopyConstructible<typename X::ValueType>));
69  {
70  Block wire;
71  X j;
72  typename X::ValueType decoded = j.decode(wire);
73  EncodingBuffer enc;
74  j.encode(enc, decoded);
75  }
76 };
77 
78 } // namespace lp
79 } // namespace ndn
80 
81 #endif // NDN_CXX_LP_FIELD_HPP
Copyright (c) 2013-2017 Regents of the University of California.
Definition: common.hpp:66
Represents a TLV element of NDN packet format.
Definition: block.hpp:42
BOOST_CONCEPT_USAGE(Field)
Definition: field.hpp:68
concept check for fields
Definition: field.hpp:61
#define NDN_CXX_ASSERT_DEFAULT_CONSTRUCTIBLE(T)
assert T is default constructible
Definition: concepts.hpp:147
EncodingImpl< EncoderTag > EncodingBuffer