Commit 2279f2f2 authored by EXT Arnaud Clère's avatar EXT Arnaud Clère

Update README.md

parent 3e3d0398
# QBind, a convenient and efficient (de)serialization mechanism on top of Qt
QBind was developed to demonstrate the feasibility and advantages of a novel (de)serialization mechanism on top of
existing [Qt](http://qt.io) data formats (Settings, QDataStream, Json, Cbor, Xml) and generic data types (containers, QVariant, QMetaObject, etc.).
**It would greatly simplify binding C++ data to Qt-supported [data formats](https://doc.qt.io/qt-5/topics-data-storage.html#)
or [data model](https://doc.qt.io/qt-5/model-view-programming.html) while providing more performance than existing approaches.**
existing [Qt](http://qt.io) [data formats](https://doc.qt.io/qt-5/topics-data-storage.html#) (Settings, QDataStream, Json, Cbor, Xml)
or [data model](https://doc.qt.io/qt-5/model-view-programming.html) and generic data types (containers, QVariant, QMetaObject, etc.).
It would greatly simplify writing/reading custom C++ data to/from them while providing more performance than existing approaches.
QBind requirements below are useful for most (de)serialization use cases. They would be mandatory to implement in Qt a tracing facility
allowing to analyse how software is used in the field and diagnose complex issues. Effectively:
......@@ -14,9 +13,9 @@ allowing to analyse how software is used in the field and diagnose complex issue
high-performance and structured data. But analysing unexpected uses and issues in the field requires a lot more
tracepoints than can be conveniently defined statically.
> **DISLAIMER** QBind is not currently unit-tested but provided with a [sample and benchmark](main.cpp).
> **DISLAIMER:** QBind is not currently unit-tested but provided with a [sample and benchmark](main.cpp).
> Also, the implementation is written in a concise style that supported the multiple refactorings but does not help explaining it.
> This is especially true for the various IBind implementations. The README and [design](design.md) documentation should be read
> This is especially true for the various IBind implementations. The README and [DESIGN](DESIGN.md) documentation should be read
> before trying to understand the implementation.
See:
......@@ -24,7 +23,7 @@ See:
- [Some examples](#examples)
- [The results](#results)
- [Our conclusion](#conclusion)
- [The design](design.md)
- [The design](DESIGN.md)
## The requirements
......@@ -325,7 +324,7 @@ By convention:
- `qmName` allows naming data items for, e.g. XML root element and sequence items
- ...
The latest customized binds require using ad-hoc std::function like `flatten` or lambda below (mimicking Python list comprehensions):
The latest customized binds require using ad-hoc std::function like [flatten](tests/QBind/main.cpp#L996) or lambda below (mimicking Python list comprehensions):
```cpp
QStandardItemModel custom;
QModelWriter<>(&custom).sequence().with([&](Seq<Cursor>&& s) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment