Author: Kevin M. Rosenberg

# Hyperobject Documentation

## Overview

Hyperobject is an Common Lisp object representation library based on the Metaobject Protocol.

## Reference

### Class options

sql-name | Overrides default name of SQL table.
version | Sets the version number of the class. Can be used to convert previous version of the class.
instanciable | If NIL, the class can not be instanciated by the user.
description | The class description.

### Slot options

sql-name | Override name of the SQL column
unique | The values in the slot must be unique
stored | The values in the slot are stored in the database.
indexed | The values of the slot are indexed in the database.
nil-text | The text to print if the slot is NIL
value-type | Sets the data type for the field. See the next section for complete details
inverse | Sets the name of an automatically generated lookup function based on a key value for this slot

### Type field

Valid types for a hyperobjectslot along with their coresponding SQL types are listed in the below table.

string | TEXT
(string n) (varchar n) | VARCHAR(n)
(char n) | CHAR(n)
character | CHAR(1)
float single-float | float
double-float | double
blob | BLOB

## Subobject field

This field sets up the storage of a slot of hold a cached object or list of objects. A lookup function and the keys to the function are also specified.

The format for the subobject field is:

( keys*)