Other File Options

There are a few other options that may be specified within an #include clause, but which do not fit into any of the above categories. These options are define:, undefine:, seal-functions: and read-only:.

The define: and undefine: options control the C preprocessor definitions which will be implicitly defined during parsing of the header files. If you specify neither of these options, Melange will use a default set of definitions which correspond to those used by a typical C compiler for the machine you are running on. The define options takes a string containing a single C token and an optional string or integer literal, which will be used as the expansion. (If no literal is specified, the token will be expanded to 1.) The undefine: removes one or more of the default definitions. You might, for example, use:

define interface
   #include "gc.h",
      define: {"PMAX", "BSD_VERSION" => "4.3"},
      undefine: {"HPUX"};
end interface;

The seal-functions: option controls whether the various imported functions and slot accessors will be sealed or open. By default, functions are sealed, but you may explicitly specify this by using seal-functions: sealed or reverse it by using seal-functions: open. Melange does not support the Creole’s inline sealing option as this is handled with the inline-functions: option instead.

The inline-functions: option specifies how functions should be inlined. It may have values of inline, inline-only, may-inline or not-inline.

The read-only: option specifies whether setter functions should be defined for slot and object accessors. They will be defined by default, but if you specify read-only: #t, no setters will be defined.

The effects of the seal-functions:, inline-functions: and read-only: options can be modified for particular container types. We will explain how to do this in a later section.