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

#ifndef ulmClocks__h
#define ulmClocks__h

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

typedef
	struct ulmClocks_ClockRec *ulmClocks_Clock;

typedef
	struct ulmClocks_ClockRec { /* ulmServices_ObjectRec */
		INT64 _prvt0;
		char _prvt1[28];
	} ulmClocks_ClockRec;

typedef
	struct ulmClocks_ErrorEventRec *ulmClocks_ErrorEvent;

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

typedef
	void (*ulmClocks_GetPriorityProc)(ulmClocks_Clock, INT32*);

typedef
	void (*ulmClocks_GetTimeProc)(ulmClocks_Clock, ulmTimes_Time*);

typedef
	struct ulmClocks_InterfaceRec *ulmClocks_Interface;

typedef
	void (*ulmClocks_SetTimeProc)(ulmClocks_Clock, ulmTimes_Time);

typedef
	BOOLEAN (*ulmClocks_PassedProc)(ulmClocks_Clock, ulmTimes_Time);

typedef
	void (*ulmClocks_TimerOnProc)(ulmClocks_Clock, ulmTimes_Time, ulmEvents_Event);

typedef
	void (*ulmClocks_TimerOffProc)(ulmClocks_Clock);

typedef
	struct ulmClocks_InterfaceRec { /* ulmObjects_ObjectRec */
		ulmClocks_GetTimeProc gettime;
		ulmClocks_SetTimeProc settime;
		ulmClocks_PassedProc passed;
		ulmClocks_TimerOnProc timeron;
		ulmClocks_TimerOffProc timeroff;
		ulmClocks_GetPriorityProc getpriority;
	} ulmClocks_InterfaceRec;


import ulmClocks_Clock ulmClocks_system;
import ulmEvents_Message ulmClocks_errormsg[2];
import ulmEvents_EventType ulmClocks_error;

import ADDRESS *ulmClocks_InterfaceRec__typ;
import ADDRESS *ulmClocks_ClockRec__typ;
import ADDRESS *ulmClocks_ErrorEventRec__typ;

import UINT32 ulmClocks_Capabilities (ulmClocks_Clock clock);
import void ulmClocks_CreateStaticClock (ulmClocks_Clock *clock);
import void ulmClocks_GetPriority (ulmClocks_Clock clock, INT32 *priority);
import void ulmClocks_GetTime (ulmClocks_Clock clock, ulmTimes_Time *time);
import void ulmClocks_Init (ulmClocks_Clock clock, ulmClocks_Interface if_, UINT32 caps);
import BOOLEAN ulmClocks_Passed (ulmClocks_Clock clock, ulmTimes_Time time);
import void ulmClocks_SetTime (ulmClocks_Clock clock, ulmTimes_Time time);
import void ulmClocks_TimerOff (ulmClocks_Clock clock);
import void ulmClocks_TimerOn (ulmClocks_Clock clock, ulmTimes_Time time, ulmEvents_Event event);
import void *ulmClocks__init(void);


#endif // ulmClocks
