Pointer Clauses#

“Pointer clauses” modify the definitions of pointer declarations such as int * or struct foo ***, or vector declarations such as char [256]. Like all such clauses, they may be used to specify renamings for the classes. This is particularly useful for pointer types since they are not automatically assigned user-meaningful names. It also allows specification of the superclasses: option described in Specifying class inheritance. A typical use might be:

define interface
   #include "vec.h";
   pointer "int *" => <int-vector>,
      superclasses: {<c-vector>};
   pointer "struct person **" => <people>,
      superclasses: {<c-vector>};
   pointer "char [256]" => <fixed-string>;
end interface;

This clause is particularly useful for declaring pointer types to be subclasses of <c-vector> so that they can be indexed via element. (Note that this is not necessary for vector declarations, since they are automatically declared to be <c-vectors>.)