11 Xc++
CEDA is implemented in C++ and provides a front-end compiler for Xc++, an extension of C++. Most Xc++ language extensions use keywords beginning with a dollar sign, making it clear which declarations are extensions rather than standard C++.
The language provides directives for declaring:
$typedef$functionand$functor$var$adt$enum$interface$mixin$classand$struct$model$variant$type
These declarations support CEDA's reflected type system and data model. The Ceda Data Model is a pure data model with a direct mapping to C++ data structures, static typing, efficient binary encoding, and compatibility with persistence and Operational Transformation. Xc++ generates the reflection information used by serialisation, persistent objects, operations, interfaces, language bindings, and generic tools.
Xc++ also includes a macro preprocessor. It supports statically checked macro arguments, nested and recursive macros, loops, and access to Python while the front end is running. The Xcpp tooling translates Xc++ sources, describes projects and workspaces, and invokes the native C++ toolchain.
The Xc++ specification describes the language, macro preprocessor, Xcpp executable, project and workspace formats, build system, CMake integration, and platform tooling.