out << " encode encode in-memory object\n";
out << " dump_json dump in-memory object as json (to stdout)\n";
out << " hexdump print encoded data in hex\n";
+ out << " get_struct_v print version of the encoded object\n";
+ out << " get_struct_compat print the oldest version of decoder that can decode the encoded object\n";
out << "\n";
out << " copy copy object (via operator=)\n";
out << " copy_ctor copy object (via copy ctor)\n";
} else if (*i == string("hexdump")) {
encbl.hexdump(cout);
+ } else if (*i == string("get_struct_v")) {
+ std::cout << den->get_struct_v(encbl, 0) << std::endl;
+ } else if (*i == string("get_struct_compat")) {
+ std::cout << den->get_struct_v(encbl, sizeof(uint8_t)) << std::endl;
} else if (*i == string("import")) {
++i;
if (i == args.end()) {
virtual int num_generated() = 0;
virtual std::string select_generated(unsigned n) = 0;
virtual bool is_deterministic() = 0;
+ unsigned get_struct_v(bufferlist bl, uint64_t seek) const {
+ auto p = bl.cbegin(seek);
+ uint8_t struct_v = 0;
+ ceph::decode(struct_v, p);
+ return struct_v;
+ }
//virtual void print(ostream& out) = 0;
};