-
Notifications
You must be signed in to change notification settings - Fork 915
v2_0_cpp_variant
Takatoshi Kondo edited this page Aug 25, 2017
·
5 revisions
msgpack-c doesn't have boost::variant adaptor. But msgpack::type::variant can contain any msgpack types. It is implemented using boost::variant. There are two variant types. One is value based msgpack::type::variant, the other is reference based msgpack::type::variant_ref. When you use msgpack::type::variant, you need to define MSGPACK_USE_BOOST macro.
| msgpack::type | variant type |
|---|---|
| NIL | msgpack::type::nil_t |
| BOOLEAN | bool |
| POSITIVE_INTEGER | uint64_t |
| NEGATIVE_INTEGER | int64_t |
| FLOAT | double |
| msgpack::type | variant type |
|---|---|
| STR | std::string |
| BIN | std::vector |
| EXT | msgpack::type::ext |
| ARRAY | std::vector<msgpack::type::variant> |
| MAP | std::multimap<msgpack::type::variant, msgpack::type::variant> |
| msgpack::type | variant type |
|---|---|
| STR | boost::string_ref |
| BIN | msgpack::type::raw_ref |
| EXT | msgpack::type::ext_ref |
| ARRAY | std::vector<msgpack::type::variant_ref> |
| MAP | std::multimap<msgpack::type::variant_ref, msgpack::type::variant_ref> |
msgpack-c has a variant type msgpack::object. However, it is difficult to modify. For example, you can't insert/delete ARRAY, MAP items. You can't change STR, BIN, EXT fields. You can do that using msgpack::type::variant. So, you can use it when you want to treat unpredictable msgpack data structures and need to modify them.
-
Home
- Q&A
- v2.0.x or later
- v1.1.x - v1.4.x
- v1.0.x