25.1.6 Defining an extern type
New Bigloo types can be defined using extern
<type-clause>. These newly introduced types can be used in any
declaration (that is in any extern or Scheme module clause
and in any Scheme variable or function definition). The syntax of
<type-clause> is:
| | <type-clause> → (type <ident> <type-def> <string>)
<type-def> → <atomic-type>
| <ident>
| <struct-type>
| <union-type>
| <function-type>
| <array-type>
| <pointer-type>
| <enum-type>
| <opaque-type>
|
The symbol <ident> is the Scheme name of the introduced type and
<string> is the C name of the type. When Bigloo produces the definition
of a variable v of type s, it produces the following C code: s v;.
This rules applies unless s is a pointer or an array and then, to
produce a C definition, the name of the elements of the array or the elements
pointed by the pointer type are used. Hence, if v is for instance foo
and s is (array int) the produced C code will be: int *foo.