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

Stacks Image 952

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.
Placeholder

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.
Placeholder

Object Oriented

The QtMark libraries use modern OOP methodologies like encapsulation and polymorphism just like the Qt libraries that they enhance.
Placeholder

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

Placeholder

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.
Placeholder

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.
Placeholder

Threads and Thread Pools

qmthread provides a simple method of adding threads and thread pools to your application.
Placeholder

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

Placeholder

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.
Placeholder

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.