/*
 * prot_trait.h
 *
 * Version 1.0 : Frederick Roeber : 14 May 1993
 *
 * I have derived this header file to replace the unreleased one.
 */

#ifndef PROT_TRAIT_H
#define PROT_TRAIT_H

#include "prot.h"
#include "trait.h"

typedef struct prot_$epv
{
    void 
    (*set_rights)   /* set read/write/execute/search/owner/set-id rights */
    (
        void *&handle,                          /* the object handle */
        prot_$rights_vec_t rights_vector,       /* the rights for person, project, organization, world. */
        prot_$user_class_set_t &valid_entries,  /* set only *these* rights */
        status_$t *status
    );

    void
    (*inq_rights)
    (
        void *&handle,
        prot_$rights_vec_t rights_vector,       /* store rights here */
        prot_$user_class_set_t *valid_entries,  /* only *these* rights are significant */
        status_$t *status
    );

    void
    (*set_user_class_ids)   /* set owner/project/organization IDs */
    (
        void *&handle,
        prot_$user_class_set_t &valid_entries,  /* set only *these* IDs */
        prot_$user_class_id_vec_t uids,         /* the IDs */
        status_$t *status
    );

    void
    (*inq_user_class_ids)
    (
        void *&handle,
        prot_$user_class_set_t *valid_entries,  /* only *these* IDs are recognized */
        prot_$user_class_id_vec_t uids,         /* store IDs here */
        status_$t *status
    );
} prot_$epv;

extern trait_$t prot_$trait;

#endif /* PROT_TRAIT_H */
