CBOR C++ serialization library
Just a simple SAX-like Concise Binary Object Representation (CBOR).
http://tools.ietf.org/html/rfc7049
Writing:
CborDynamicOutput output;
CborWriter writer(output);
writer.writeTag(123);
writer.writeArray(3);
writer.writeString("hello");
writer.writeString("world");
writer.writeInt(321);
unsignedchar *data = output.getData();
int size = output.getSize();Reading:
classCborExampleListener : publicCborListener {
public:virtualvoidOnInteger(int32_t value);
virtualvoidOnBytes(unsignedchar *data, unsignedint size);
virtualvoidOnString(std::string &str);
virtualvoidOnArray(unsignedint size);
virtualvoidOnMap(unsignedint size);
virtualvoidOnTag(uint32_t tag);
virtualvoidOnSpecial(uint32_t code);
virtualvoidOnError(constchar *error);
};
...
voidCborExampleListener::OnInteger(int32_t value) {
printf("integer: %d\n", value);
}
voidCborExampleListener::OnBytes(unsignedchar *data, unsignedint size) {
printf("bytes with size: %d", size);
}
voidCborExampleListener::OnString(string &str) {
printf("string: '%.*s'\n", (int)str.size(), str.c_str());
}
voidCborExampleListener::OnArray(unsignedint size) {
printf("array: %d\n", size);
}
voidCborExampleListener::OnMap(unsignedint size) {
printf("map: %d\n", size);
}
voidCborExampleListener::OnTag(unsignedint tag) {
printf("tag: %d\n", tag);
}
voidCborExampleListener::OnSpecial(unsignedint code) {
printf("special: %d\n", code);
}
voidCborExampleListener::OnError(constchar *error) {
printf("error: %s\n", error);
}
...
CborInput input(data, size);
CborReader reader(input);
CborExampleListener listener;
reader.SetListener(listener);
reader.Run();