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
  • $function and $functor
  • $var
  • $adt
  • $enum
  • $interface
  • $mixin
  • $class and $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.