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

#ifndef ulmPersistentObjects__h
#define ulmPersistentObjects__h

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

typedef
	struct ulmPersistentObjects_ObjectRec *ulmPersistentObjects_Object;

typedef
	BOOLEAN (*ulmPersistentObjects_CreateAndReadProc)(ulmStreams_Stream, BOOLEAN, ulmPersistentObjects_Object*);

typedef
	void (*ulmPersistentObjects_CreateProc)(ulmPersistentObjects_Object*);

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

typedef
	struct ulmPersistentObjects_InterfaceRec *ulmPersistentObjects_Interface;

typedef
	BOOLEAN (*ulmPersistentObjects_ReadProc)(ulmStreams_Stream, ulmPersistentObjects_Object);

typedef
	BOOLEAN (*ulmPersistentObjects_WriteProc)(ulmStreams_Stream, ulmPersistentObjects_Object);

typedef
	struct ulmPersistentObjects_InterfaceRec { /* ulmObjects_ObjectRec */
		ulmPersistentObjects_CreateProc create;
		ulmPersistentObjects_ReadProc read;
		ulmPersistentObjects_WriteProc write;
		ulmPersistentObjects_CreateAndReadProc createAndRead;
	} ulmPersistentObjects_InterfaceRec;

typedef
	struct ulmPersistentObjects_ObjectRec { /* ulmServices_ObjectRec */
		INT64 _prvt0;
		char _prvt1[25];
	} ulmPersistentObjects_ObjectRec;


import ulmEvents_Message ulmPersistentObjects_errormsg[10];
import ulmEvents_EventType ulmPersistentObjects_error;

import ADDRESS *ulmPersistentObjects_InterfaceRec__typ;
import ADDRESS *ulmPersistentObjects_ObjectRec__typ;
import ADDRESS *ulmPersistentObjects_EventRec__typ;

import void ulmPersistentObjects_GetMode (ulmStreams_Stream s, INT8 *mode);
import BOOLEAN ulmPersistentObjects_GuardedRead (ulmStreams_Stream s, ulmServices_Type guard, ulmPersistentObjects_Object *object);
import BOOLEAN ulmPersistentObjects_GuardedReadObjectOrNIL (ulmStreams_Stream s, ulmServices_Type guard, ulmPersistentObjects_Object *object);
import void ulmPersistentObjects_Init (ulmPersistentObjects_Object object, ulmServices_Type type);
import BOOLEAN ulmPersistentObjects_IsProjected (ulmPersistentObjects_Object object);
import BOOLEAN ulmPersistentObjects_Read (ulmStreams_Stream s, ulmPersistentObjects_Object *object);
import BOOLEAN ulmPersistentObjects_ReadInto (ulmStreams_Stream s, ulmPersistentObjects_Object object);
import BOOLEAN ulmPersistentObjects_ReadObjectOrNIL (ulmStreams_Stream s, ulmPersistentObjects_Object *object);
import void ulmPersistentObjects_RegisterType (ulmServices_Type *type, CHAR *name, ADDRESS name__len, CHAR *baseName, ADDRESS baseName__len, ulmPersistentObjects_Interface if_);
import void ulmPersistentObjects_SetMode (ulmStreams_Stream s, INT8 mode);
import BOOLEAN ulmPersistentObjects_Write (ulmStreams_Stream s, ulmPersistentObjects_Object object);
import BOOLEAN ulmPersistentObjects_WriteObjectOrNIL (ulmStreams_Stream s, ulmPersistentObjects_Object object);
import void *ulmPersistentObjects__init(void);


#endif // ulmPersistentObjects
