/*************
Copyright © 1996 Norlinvest Ltd. All rights reserved.
Visual Code Model Generator, EDSpice, EDWin, EE Designer, CompCAD,
CAD 1000, CAD ABC and Visionics are trade marks of Norlinvest Ltd.
Copyright © 1983 - 1996.
*
*
Copyright 1991
Georgia Tech Research Corporation
Atlanta, Georgia 30332
All Rights Reserved
**************/

#ifndef EVTUDN_HEADER
#define EVTUDN_HEADER x

#include "MIFtypes.h"

#define MALLOCED_PTR                 (*evt_struct_ptr)
#define STRUCT_PTR                   evt_struct_ptr
#define STRUCT_PTR_1                 evt_struct_ptr_1
#define STRUCT_PTR_2                 evt_struct_ptr_2
#define EQUAL                        (*evt_equal)
#define INPUT_STRUCT_PTR             evt_input_struct_ptr
#define OUTPUT_STRUCT_PTR            evt_output_struct_ptr
#define INPUT_STRUCT_PTR_ARRAY       evt_input_struct_ptr_array
#define INPUT_STRUCT_PTR_ARRAY_SIZE  evt_input_struct_ptr_array_size
#define STRUCT_MEMBER_ID             evt_struct_member_id
#define PLOT_VAL                     (*evt_plot_val)
#define PRINT_VAL                    (*evt_print_val)
#define IPC_VAL                      (*evt_ipc_val)
#define IPC_VAL_SIZE                 (*evt_ipc_val_size)

#define CREATE_ARGS      void **evt_struct_ptr
#define INITIALIZE_ARGS  void *evt_struct_ptr
#define COMPARE_ARGS     void *evt_struct_ptr_1, \
                         void *evt_struct_ptr_2, \
                         Mif_Boolean_t *evt_equal
#define COPY_ARGS        void *evt_input_struct_ptr, \
                         void *evt_output_struct_ptr
#define DISMANTLE_ARGS   void *evt_struct_ptr
#define INVERT_ARGS      void *evt_struct_ptr
#define RESOLVE_ARGS     int evt_input_struct_ptr_array_size, \
                         void **evt_input_struct_ptr_array, \
                         void *evt_output_struct_ptr
#define PLOT_VAL_ARGS    void *evt_struct_ptr, \
                         char *evt_struct_member_id, \
                         double *evt_plot_val
#define PRINT_VAL_ARGS   void *evt_struct_ptr, \
                         char *evt_struct_member_id, \
                         char **evt_print_val
#define IPC_VAL_ARGS     void *evt_struct_ptr, \
                         void **evt_ipc_val, \
                         int  *evt_ipc_val_size


typedef struct {
    char          *name;
    char          *description;
    void          ((*create)(CREATE_ARGS));
    void          ((*dismantle)(DISMANTLE_ARGS));
    void          ((*initialize)(INITIALIZE_ARGS));
    void          ((*invert)(INVERT_ARGS));
    void          ((*copy)(COPY_ARGS));
    void          ((*resolve)(RESOLVE_ARGS));
    void          ((*compare)(COMPARE_ARGS));
    void          ((*plot_val)(PLOT_VAL_ARGS));
    void          ((*print_val)(PRINT_VAL_ARGS));
    void          ((*ipc_val)(IPC_VAL_ARGS));
} Evt_Udn_Info_t;


extern int             g_evt_num_udn_types;
extern Evt_Udn_Info_t  **g_evt_udn_info;


#endif /* EVTUDN_HEADER */
