/* voc 2.1.0 [2025/05/18] for gcc LP64 on slackware xtspaF */

#ifndef ulmEvents__h
#define ulmEvents__h

#include "SYSTEM.h"
#include "ulmObjects.h"
#include "ulmServices.h"

typedef
	struct ulmEvents_ErrorEventRec *ulmEvents_ErrorEvent;

typedef
	struct ulmEvents_EventTypeRec *ulmEvents_EventType;

typedef
	CHAR ulmEvents_Message[80];

typedef
	struct ulmEvents_EventRec { /* ulmObjects_ObjectRec */
		ulmEvents_EventType type;
		ulmEvents_Message message;
		char _prvt0[8];
	} ulmEvents_EventRec;

typedef
	struct ulmEvents_ErrorEventRec { /* ulmEvents_EventRec */
		ulmEvents_EventType type;
		ulmEvents_Message message;
		char _prvt0[8];
		INT8 errorcode;
	} ulmEvents_ErrorEventRec;

typedef
	ulmEvents_EventRec *ulmEvents_Event;

typedef
	void (*ulmEvents_EventHandler)(ulmEvents_Event);

typedef
	void (*ulmEvents_EventManager)(ulmEvents_EventType, INT32);

typedef
	struct ulmEvents_EventTypeRec { /* ulmServices_ObjectRec */
		INT64 _prvt0;
		char _prvt1[48];
	} ulmEvents_EventTypeRec;

typedef
	struct ulmEvents_HandlerRec *ulmEvents_HandlerList;

typedef
	struct ulmEvents_HandlerRec { /* ulmObjects_ObjectRec */
		ulmEvents_EventHandler handler;
		ulmEvents_HandlerList next;
	} ulmEvents_HandlerRec;

typedef
	struct ulmEvents_PrioritySystemRec *ulmEvents_PrioritySystem;

typedef
	struct ulmEvents_PrioritySystemRec { /* ulmObjects_ObjectRec */
		INT32 _prvt0;
		char _prvt1[1032];
	} ulmEvents_PrioritySystemRec;


import ulmEvents_Message ulmEvents_errormsg[4];
import ulmEvents_EventType ulmEvents_error;

import ADDRESS *ulmEvents_EventRec__typ;
import ADDRESS *ulmEvents_HandlerRec__typ;
import ADDRESS *ulmEvents_EventTypeRec__typ;
import ADDRESS *ulmEvents_PrioritySystemRec__typ;
import ADDRESS *ulmEvents_ErrorEventRec__typ;

import void ulmEvents_AbortHandler (ulmEvents_EventHandler handler);
import void ulmEvents_AssertPriority (INT32 priority);
import void ulmEvents_CreatePrioritySystem (ulmEvents_PrioritySystem *prioritySystem);
import ulmEvents_PrioritySystem ulmEvents_CurrentPrioritySystem (void);
import void ulmEvents_Define (ulmEvents_EventType *type);
import void ulmEvents_EnterPriority (INT32 priority);
import void ulmEvents_ExitPriority (void);
import void ulmEvents_GetAbortHandler (ulmEvents_EventHandler *handler);
import INT32 ulmEvents_GetEventPriority (ulmEvents_EventType type);
import void ulmEvents_GetHandlers (ulmEvents_EventType type, ulmEvents_HandlerList handlers);
import void ulmEvents_GetLog (ulmEvents_EventHandler *loghandler);
import INT32 ulmEvents_GetPriority (void);
import INT32 ulmEvents_GetReaction (ulmEvents_EventType type);
import void ulmEvents_Handler (ulmEvents_EventType type, ulmEvents_EventHandler handler);
import void ulmEvents_Ignore (ulmEvents_EventType type);
import void ulmEvents_Init (ulmEvents_EventType type);
import void ulmEvents_Log (ulmEvents_EventHandler loghandler);
import void ulmEvents_Manager (ulmEvents_EventType type, ulmEvents_EventManager manager);
import void ulmEvents_NilHandler (ulmEvents_Event event);
import void ulmEvents_QueueHandler (ulmEvents_EventHandler handler);
import void ulmEvents_Raise (ulmEvents_Event event);
import void ulmEvents_RemoveHandlers (ulmEvents_EventType type);
import void ulmEvents_RestoreReaction (ulmEvents_EventType type);
import void ulmEvents_SaveReaction (ulmEvents_EventType type);
import void ulmEvents_SetPriority (ulmEvents_EventType type, INT32 priority);
import void ulmEvents_SwitchPrioritySystem (ulmEvents_PrioritySystem prioritySystem);
import void *ulmEvents__init(void);


#endif // ulmEvents
