Xc++

The Xc++ language is an extension of C++.

Most of the language extensions involve a keyword beginning with a dollar sign ($) character, to make it clear where the language constructs are not straight C++.

In some cases Xcpp generates a warning not an error. See all the warning codes.

Libraries and executables written in Xc++ must link with the cxObject library.

Xc++ preprocessor

Xc++ includes a macro preprocessor language which is similar to the normal C++ preprocessor language, but much more powerful. For example, it allows for static type checking of macro arguments, nested macros, recursive macros and loops. It also provides access to the Python interpreter during the execution of the front end.

Polymorphic Interfaces

Xc++ interfaces are based on a proposal for C++ interfaces by Christopher Diggins. The $interface directive allows for polymorphic interfaces to be defined, in a way that is more flexible and less type intrusive than the normal support for dynamic polymorphism in C++ using Abstract Base Classes.

Mixins

Xc++ mixins provides special syntax to support C++ inherited mixins.

Abstract Data Types (ADTs)

Xc++ ADTs provides a convenient syntax for defining a forward declared type which is only accessed through a C API.

Ceda Data Model (CDM)

The Ceda Data Model (CDM) refers generally to the form of data modelling used in ceda.

A CDM schema refers to a particular schema (a set of ceda type definitions).

A CDM database is a ceda database that conforms to some CDM schema. A CEDA Database Management System (CDBMS) refers to a DBMS supporting the CDM.

The CDM is motivated by the following

CDM schema

A number of basic types are supported, such as bool, int32 and float64. These are platform independent types, and therefore are appropriate for persisting in a database.

The Ceda Data Model (CDM) allows for defining:

Data types

User defined types are defined in terms of the platform independent basic data types

There are three different ways of defining string data types