DoxyPress  1.6.0
What is CopperSpice

CopperSpice is a C++ library derived from the Qt framework. Our motivation for developing CopperSpice was to change the core design of the libraries leveraging modern C++ functionality.

The redesign allowed us to completely remove the Meta-Object Compiler (moc) system. Moc is a code generator and did not support many aspects of modern C++ including templates, complex data types, static type checking, and relied heavily on string comparisons. Removing moc improves run time performance, reduces the complexity of the build process, and allows more issues to be detected at compile time.

CopperSpice library key features:

  • The Meta-Object Compiler is no longer required for generating meta data
  • CopperSpice automatically generates meta data for processing Signals/ Slots and Introspection
  • A template class can inherit from QObject
  • Complex data types can be used without restrictions, for example the following is valid in CopperSpice: QMap<QString, int>
  • CopperSpice includes many of the Qt 5 classes
  • CopperSpice makes extensive use of modern C++ features like variadic templates, constexpr, SFINAE, lambda expressions, atomics, tuple, etc
  • Reimplement container classes (QVector, QList, QLinkedList, QMap, QHash, etc) in CsCore leveraging the C++ standard library containers, iterators, and algorithms
  • CopperSpice libraries are built using CMake

Converting to CopperSpice

Our PepperMill utility is a translator and is run one time on your C++ header files. It will convert your application header files to standard C++ header files and change the syntax of Signal and Slot Declarations. The conversion will update your existing code to work with CopperSpice.

We have made the process of converting to CopperSpice simple and straight forward. Convert your application header files one time, using our PepperMill utility. You can use the Makefiles from our sample KitchenSink application or the Diamond project as a guide to create your project Makefiles. Then just compile and link.