/*
 * trait.h
 *
 * Version 1.0.0 : Frederick Roeber : 14 May 1993
 *
 * This is a replacement for the unreleased (and hypothetical) version.
 */

#ifndef TRAIT_H
#define TRAIT_H

#include <apollo/base.h>

#define SOME_LIMIT  64      /* to be honest, I have no idea what the limit, if any, is */

typedef struct trait_$t
{
    unsigned short number_of_calls;
    uid_$t trait_uid;

    struct      /* one per call */
    {
        uid_$t call_uid;    /* by which the call is identified */
        void (*unimp)();    /* what to do if a type doesn't implement a call */
    } calls[ SOME_LIMIT ];
} trait_$t __attribute((aligned(1)));

#undef SOME_LIMIT

#endif /* TRAIT_H */
