In addition to qmjson, we plan to open source three additional libraries. The other libraries that we’ll be open sourcing are qmpointer, qmplugin and qmthread. These libraries will be released as soon as we are happy with them.
Keep checking back here as you wait for them.
We are big fans of Qt. It’s an incredibly powerful library that makes it much easier to write quality cross platform applications. The QtMark libraries are designed to enhance Qt and make it even easier to write these applications. By releasing these libraries we hope to help others avoid the same issues that we frequently ran into.
Design
Qt 5.2
The QtMark libraries require Qt 5.2 or later. They subclass and rely on many of the standard Qt classes, such as QString, QList, QHash and QMap.
C++11
The C++11 specification adds a lot of functionality to the C++ language. The QtMark libraries take advantage of some of that functionality.
Object Oriented
The QtMark libraries use modern OOP methodologies like encapsulation and polymorphism just like the Qt libraries that they enhance.
C++ Templates
C++ templates are a powerful mechanism that lets the compiler auto-generate a large amount of code based on type. This allows the JSON and smart pointer classes to support any arbitrary types.
Libraries
JSON (JavaScript Object Notation)
qmjson embraces the ideas behind the JSON specification by providing support for automatic marshalling/demarshalling of custom types. In addition, qmjson provides a number of signals that allow the developer to be notified when a node changes. Our use of smart pointers allows you to hold a pointer to a node without fear of it becoming invalidated.
Smart Pointers
The qmpointer library is a common building block for all the QtMark libraries, providing a powerful smart pointer class to help protect against common programmer mistakes that often lead to memory leaks and segmentation faults.
Threads and Thread Pools
qmthread provides a simple method of adding threads and thread pools to your application.
Plugins
qmplugin is a powerful approach to building modular applications by combining plugin modules. Each of these plugin modules can be easily replaced allowing faster refactoring to support new protocols or add new functionality.
Work Flow
Enforced coding style
The use of Artistic Style allows us to enforce a specific coding style, making the code more consistent, easier to read and easier to maintain. It’s as simple as ‘make astyle’ before every commit.
Unit tests
Every QtMark library undergoes rigorous unit tests with every pull request by utilizing Travis CI. This helps ensure a better quality product by helping to minimize regressions.
Assured Information Security, Inc. is proud to have had this opportunity to give back to the open source community by releasing this software as open source.