def-enum
Prev | Aggregate Types | Next

## Name

def-enum — Defines a `C` enumeration. Macro

## Syntax

    	  def-enum name fields &key separator-string

## Arguments and Values

`name`

  A symbol that names the enumeration.

`fields`

  A list of field defintions. Each definition can be a symbol or a list of two elements. Symbols get assigned a value of the current counter which starts at `0` and increments by `1` for each subsequent symbol. It the field definition is a list, the first position is the symbol and the second position is the value to assign the the symbol. The current counter gets set to `1+` this value.

`separator-string`

  A string that governs the creation of constants. The default is `"#"`.

## Description

Declares a `C` enumeration. It generates constants with integer values for the elements of the enumeration. The symbols for the these constant values are created by the `concatenation` of the enumeration name, separator-string, and field symbol. Also creates a foreign type with the name `name` of type `:int`.

## Examples

    (def-enum abc (:a :b :c))
    ;; Creates constants abc#a (1), abc#b (2), abc#c (3) and defines
    ;; the foreign type "abc" to be :int

    (def-enum efoo (:e1 (:e2 10) :e3) :separator-string "-")
    ;; Creates constants efoo-e1 (1), efoo-e2 (10), efoo-e3 (11) and defines
    ;; the foreign type efoo to be :int

## Side Effects

Creates a :int foreign type, defines constants.

## Affected by

None.

## Exceptional Situations

None.

Prev | Up | Next
Aggregate Types | Home | def-struct