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

#ifndef ulmConditions__h
#define ulmConditions__h

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

typedef
	struct ulmConditions_ConditionRec *ulmConditions_Condition;

typedef
	struct ulmConditions_ConditionRec { /* ulmDisciplines_ObjectRec */
		INT64 _prvt0;
		char _prvt1[14];
	} ulmConditions_ConditionRec;

typedef
	struct ulmConditions_ConditionSetRec *ulmConditions_ConditionSet;

typedef
	struct ulmConditions_ConditionSetRec { /* ulmObjects_ObjectRec */
		INT64 _prvt0;
		char _prvt1[524];
	} ulmConditions_ConditionSetRec;

typedef
	struct ulmConditions_DescriptionRec *ulmConditions_Description;

typedef
	struct ulmConditions_DescriptionRec { /* ulmObjects_ObjectRec */
		UINT32 caps;
		BOOLEAN internal;
	} ulmConditions_DescriptionRec;

typedef
	struct ulmConditions_DomainRec *ulmConditions_Domain;

typedef
	struct ulmConditions_DomainRec { /* ulmDisciplines_ObjectRec */
		INT64 _prvt0;
		char _prvt1[16];
	} ulmConditions_DomainRec;

typedef
	void (*ulmConditions_GetTimeOfNextTryProc)(INT32, ulmTimes_Time*);

typedef
	void (*ulmConditions_GetTimeProc)(ulmConditions_Domain, ulmConditions_ConditionSet, ulmTimes_Time*, ulmConditions_Condition*, ulmDisciplines_Object);

typedef
	struct ulmConditions_InterfaceRec *ulmConditions_Interface;

typedef
	BOOLEAN (*ulmConditions_TestProc)(ulmConditions_Domain, ulmConditions_Condition, ulmDisciplines_Object);

typedef
	BOOLEAN (*ulmConditions_SelectProc)(ulmConditions_Domain, ulmConditions_ConditionSet, ulmTimes_Time, ulmConditions_ConditionSet*, ulmDisciplines_Object, BOOLEAN, BOOLEAN*);

typedef
	BOOLEAN (*ulmConditions_SendEventProc)(ulmConditions_Domain, ulmConditions_Condition, ulmEvents_Event, ulmDisciplines_Object);

typedef
	BOOLEAN (*ulmConditions_PreConditionsProc)(ulmConditions_Domain, ulmConditions_Condition, ulmConditions_ConditionSet*, ulmDisciplines_Object);

typedef
	struct ulmConditions_InterfaceRec { /* ulmObjects_ObjectRec */
		ulmConditions_TestProc test;
		ulmConditions_SelectProc select;
		ulmConditions_SendEventProc sendevent;
		ulmConditions_GetTimeProc gettime;
		ulmConditions_PreConditionsProc preconditions;
	} ulmConditions_InterfaceRec;



import ADDRESS *ulmConditions_ConditionRec__typ;
import ADDRESS *ulmConditions_ConditionSetRec__typ;
import ADDRESS *ulmConditions_InterfaceRec__typ;
import ADDRESS *ulmConditions_DescriptionRec__typ;
import ADDRESS *ulmConditions_DomainRec__typ;

import INT32 ulmConditions_Card (ulmConditions_ConditionSet conditionSet);
import void ulmConditions_CreateSet (ulmConditions_ConditionSet *conditionSet);
import void ulmConditions_ExamineConditions (ulmConditions_ConditionSet conditionSet);
import void ulmConditions_Excl (ulmConditions_ConditionSet conditionSet, ulmConditions_Condition condition);
import BOOLEAN ulmConditions_GetNextCondition (ulmConditions_ConditionSet conditionSet, ulmConditions_Condition *condition);
import BOOLEAN ulmConditions_In (ulmConditions_ConditionSet conditionSet, ulmConditions_Condition condition);
import void ulmConditions_Incl (ulmConditions_ConditionSet conditionSet, ulmConditions_Condition condition);
import void ulmConditions_Init (ulmConditions_Condition condition, ulmConditions_Domain domain);
import void ulmConditions_InitDomain (ulmConditions_Domain domain, ulmConditions_Interface if_, ulmConditions_Description desc);
import void ulmConditions_SetGetTimeOfNextTryProc (ulmConditions_GetTimeOfNextTryProc p);
import BOOLEAN ulmConditions_Test (ulmConditions_Condition condition, ulmDisciplines_Object errors);
import void ulmConditions_Union (ulmConditions_ConditionSet result, ulmConditions_ConditionSet set);
import void ulmConditions_Union3 (ulmConditions_ConditionSet *result, ulmConditions_ConditionSet set1, ulmConditions_ConditionSet set2);
import void ulmConditions_WaitFor (ulmConditions_ConditionSet conditionSet, ulmConditions_ConditionSet *setOfTrueConditions, ulmDisciplines_Object errors);
import void *ulmConditions__init(void);


#endif // ulmConditions
