Comments (3)
Hello,
First of all congratulations, you're the first to submit the ticket!
I believe the problem you encounter is that quickSerialization/Deserialization
doesn't work, right?
The idea behind quickSerialization/Deserialization
is that it would simplify the general case, e.g. serialize struct (object). If you look at the implementation of quickSerialization
you would see that it calls ser.object(value)
, all you need to do is to use the same code except in your case call ser.container(value, maxSize)
where maxSize
is your defined max allowable container size.
Hope that helps :)
from bitsery.
Is this library suitable for maps and nested map?
from bitsery.
yep
Lets take this example
using NestedType = std::unordered_map<int, std::vector<float>>;
using MyType = std::map<std::string, NestedType>;
There are two ways to do it. using verbose syntax (full serialization control), and flexible syntax.
In verbose syntax you need to use StdMap extensions <bitsery/ext/std_map.h>
and
define serialize
function in bitsery namespace for ADL (polluting std namespace is not recommended)
e.g.
namespace bitsery {
template <typename S>
void serialize(S& ser, MyType& data) {
ser.ext(data, ext::StdMap{10}, [&ser](std::string& key, NestedType & value) {
ser.text1b(key, 10);
ser.ext(value, ext::StdMap{10}, [&ser](int& key, std::vector<float>& value) {
ser.value4b(key);
ser.container4b(value, 10);
});
});
}
}
or create your own function anywhere you like, e.g.
template <typename S>
void serializeAndDeserializeMyType(S& ser, MyType& data) {
ser.ext(data, ext::StdMap{10}, [&ser](std::string& key, NestedType & value) {
ser.text1b(key, 10);
ser.ext(value, ext::StdMap{10}, [&ser](int& key, std::vector<float>& value) {
ser.value4b(key);
ser.container4b(value, 10);
});
});
}
In flexible syntax you don't need to define serialize function, just include other headers and you're done!
#include <bitsery/flexible.h>
#include <bitsery/flexible/map.h>
#include <bitsery/flexible/unordered_map.h>
#include <bitsery/flexible/string.h>
#include <bitsery/flexible/vector.h>
just instead of calling ser.object(data)
, call ser.archive(data)
see this example for more details.
from bitsery.
Related Issues (20)
- Custom Extension HOT 1
- bug in apple libc++ ARM hash_code function HOT 2
- Windows and boost::json - compile error HOT 1
- Need help writing separate serializer and deserializer functions for a custom vector type HOT 1
- Easy serialization for POD types HOT 12
- It can't serialize a array member HOT 4
- How to serialize a pointer of map? HOT 2
- Vector of variants with a bit-packed type HOT 2
- Example usage of uint8_t* buffer? HOT 5
- Is bitsery faster than capnp? HOT 1
- Proper way to determine required buffer size before serializing? HOT 2
- Vector<String *> HOT 1
- Vector of bit-packed structs not measuring correctly? HOT 6
- Can I parse bitsery-serialized buffer using Python struct.unpack? HOT 2
- Are there any single header version available? HOT 2
- Does this use dynamic allocation? HOT 3
- How to find the reason of InvalidData? HOT 1
- Parallel read and write? HOT 1
- Writing to pointer to uint8_t array HOT 1
- Problem with deserialization of structure - Assertion newOffset <= _endReadOffset HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bitsery.