Please remove me from your mailing list Thanks.
On Tue, Aug 27, 2019 at 5:46 AM Arnaud Clere <arnaud.cl...@minmaxmedical.com> wrote: > Hi all, > > > > Qt handles a broad spectrum of data both in and out of RAM and Qt users > routinely need to read/write such data from/to their domain-specific C++ > types. > > But doing so can feel much more complicated than it should be: e.g. > unexpected QVariant conversions, unknown QDataStream versions, complex > QAbstractItemModel requirements, specific QCborStreamReader protocol, ... > > Moreover, writing such boilerplate code is time-consuming, error-prone, > and boring. > > > > JSON demonstrates that having a simple data model can simplify exchanging > data between software components. But it cannot meet all the technical > requirements that data must meet here and there. > > > > I am proposing to add to Qt a simple-to-use (de)serialization mechanism > that can achieve better write performance and read robustness than current > alternatives. > > It does not define a new generic data type: QVariant/List/Map, > Q*ItemModel, QJsonValue, ... are here to meet various sets of requirements. > > It just defines a generic, efficient and robust templated function to > ‘bind’ such data with any C++ type: > > QBind<T> ::bind(Value&& v, T& t) > > > > It is not unit-tested but a sample and benchmark shows it can be made to > work efficiently with: > > - Qt containers (read/write) > > - QMetaObject (read/write) > > - QVariant* (read/write) > > - QJsonValue (read/write) + ad-hoc JSON reader/writer > > - QCborValue (read/write), QCborStreamReader + ad-hoc CBOR writer > > - QSettings (read/write) > > - QXmlStreamWriter > > - QAbstractItemModel (write) > > - QDataStream (write) > > > > The simplest way to enable it for a C++ type is to use QMetaObject when > available through a macro (QBIND_*_WITH_METAOBJECT). > > Best performance can only be attained by defining simple bind(Value&& v) > methods that usually work for both read and write: > > > https://gricad-gitlab.univ-grenoble-alpes.fr/modmed/modmedLog/blob/master/tests/QBind/README.md#extending-qbind-to-c-types > > > > Finally, since a single QBind<T> function cannot fulfill all the needs, > its fluent interface allows writing custom binds akin to Python list > comprehensions… > > > > I would be happy to hear if you feel like this would be a useful > contribution to Qt, or to answer your technical questions and arguments. > > > > Arnaud > _______________________________________________ > Development mailing list > Development@qt-project.org > https://lists.qt-project.org/listinfo/development >
_______________________________________________ Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development