Register a new data type with the interpreter
int SLclass_register_class (cl, type, sizeof_type, class_type)
SLang_Class_Type *cl
unsigned char type
unsigned int sizeof_type
unsigned char class_type
The SLclass_register_class function is used to register a new
class or data type with the interpreter. If successful, the
function returns 0, or upon failure, it returns -1.
The first parameter, cl, must have been previously obtained
via the SLclass_allocate_class function.
The second parameter, type specifies the data type of the new
class. It must be an unsigned character with value greater that
127. The values in the range 0-127 are reserved for
internal use by the library.
The size that the data type represents in bytes is specified by the
third parameter, sizeof_type. This value should not be
confused with the sizeof the structure that represents the data
type, unless the data type is of class SLANG_CLASS_TYPE_VECTOR
or SLANG_CLASS_TYPE_SCALAR. For pointer objects, the value
of this parameter is just sizeof(void *).
The final parameter specifies the class type of the data type. It must be one of the values:
SLANG_CLASS_TYPE_SCALAR
SLANG_CLASS_TYPE_VECTOR
SLANG_CLASS_TYPE_PTR
SLANG_CLASS_TYPE_MMT
The SLANG_CLASS_TYPE_SCALAR indicates that the new data type
is a scalar. Examples of scalars in SLANG_INT_TYPE and
SLANG_DOUBLE_TYPE.
Setting class_type to SLANG_CLASS_TYPE_VECTOR implies that the
new data type is a vector, or a 1-d array of scalar types. An
example of a data type of this class is the
SLANG_COMPLEX_TYPE, which represents complex numbers.
SLANG_CLASS_TYPE_PTR specifies the data type is of a pointer
type. Examples of data types of this class include
SLANG_STRING_TYPE and SLANG_ARRAY_TYPE. Such types must
provide for their own memory management.
Data types of class SLANG_CLASS_TYPE_MMT are pointer types
except that the memory management, i.e., creation and destruction of
the type, is handled by the interpreter. Such a type is called a
memory managed type. An example of this data type is the
SLANG_FILEPTR_TYPE.
See the S-Lang Library C Programmer's Guide for more information.
SLclass_allocate_class