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

#ifndef oocMsg__h
#define oocMsg__h

#include "SYSTEM.h"

typedef
	struct oocMsg_AttributeDesc *oocMsg_Attribute;

typedef
	CHAR *oocMsg_String;

typedef
	struct {
		ADDRESS len[1];
		CHAR data[1];
	} *oocMsg_StringPtr;

typedef
	struct oocMsg_AttributeDesc {
		oocMsg_Attribute nextAttrib;
		oocMsg_StringPtr name;
	} oocMsg_AttributeDesc;

typedef
	CHAR *oocMsg_LString;

import void oocMsg_Attribute_ReplacementText (oocMsg_Attribute attr, CHAR *text, ADDRESS text__len);
#define __oocMsg_Attribute_ReplacementText(attr, text, text__len) __SEND(__TYPEOF(attr), 0, void(*)(oocMsg_Attribute, CHAR*, ADDRESS ), (attr, text, text__len))

typedef
	struct oocMsg_ContextDesc *oocMsg_Context;

typedef
	struct oocMsg_ContextDesc {
		oocMsg_StringPtr id;
	} oocMsg_ContextDesc;

typedef
	struct oocMsg_MsgDesc *oocMsg_Msg;

import void oocMsg_Context_GetTemplate (oocMsg_Context context, oocMsg_Msg msg, CHAR *templ, ADDRESS templ__len);
#define __oocMsg_Context_GetTemplate(context, msg, templ, templ__len) __SEND(__TYPEOF(context), 0, void(*)(oocMsg_Context, oocMsg_Msg, CHAR*, ADDRESS ), (context, msg, templ, templ__len))

typedef
	struct oocMsg_IntAttributeDesc *oocMsg_IntAttribute;

typedef
	struct oocMsg_IntAttributeDesc { /* oocMsg_AttributeDesc */
		oocMsg_Attribute nextAttrib;
		oocMsg_StringPtr name;
		INT32 int_;
	} oocMsg_IntAttributeDesc;

import void oocMsg_IntAttribute_ReplacementText (oocMsg_IntAttribute attr, CHAR *text, ADDRESS text__len);

typedef
	struct oocMsg_LStringAttributeDesc *oocMsg_LStringAttribute;

typedef
	struct {
		ADDRESS len[1];
		CHAR data[1];
	} *oocMsg_LStringPtr;

typedef
	struct oocMsg_LStringAttributeDesc { /* oocMsg_AttributeDesc */
		oocMsg_Attribute nextAttrib;
		oocMsg_StringPtr name;
		oocMsg_LStringPtr string;
	} oocMsg_LStringAttributeDesc;

import void oocMsg_LStringAttribute_ReplacementText (oocMsg_LStringAttribute attr, CHAR *text, ADDRESS text__len);

typedef
	struct oocMsg_MsgAttributeDesc *oocMsg_MsgAttribute;

typedef
	struct oocMsg_MsgAttributeDesc { /* oocMsg_AttributeDesc */
		oocMsg_Attribute nextAttrib;
		oocMsg_StringPtr name;
		oocMsg_Msg msg;
	} oocMsg_MsgAttributeDesc;

import void oocMsg_MsgAttribute_ReplacementText (oocMsg_MsgAttribute attr, CHAR *text, ADDRESS text__len);

typedef
	struct oocMsg_MsgDesc {
		oocMsg_Msg nextMsg, prevMsg;
		INT32 code;
		oocMsg_Context context;
		oocMsg_Attribute attribList;
	} oocMsg_MsgDesc;

import oocMsg_Attribute oocMsg_Msg_GetAttribute (oocMsg_Msg msg, CHAR *name, ADDRESS name__len);
import void oocMsg_Msg_GetLText (oocMsg_Msg msg, CHAR *text, ADDRESS text__len);
import void oocMsg_Msg_GetText (oocMsg_Msg msg, CHAR *text, ADDRESS text__len);
import void oocMsg_Msg_SetAttribute (oocMsg_Msg msg, oocMsg_Attribute attr);
import void oocMsg_Msg_SetIntAttrib (oocMsg_Msg msg, CHAR *name, ADDRESS name__len, INT32 value);
import void oocMsg_Msg_SetLStringAttrib (oocMsg_Msg msg, CHAR *name, ADDRESS name__len, oocMsg_LStringPtr value);
import void oocMsg_Msg_SetMsgAttrib (oocMsg_Msg msg, CHAR *name, ADDRESS name__len, oocMsg_Msg value);
import void oocMsg_Msg_SetStringAttrib (oocMsg_Msg msg, CHAR *name, ADDRESS name__len, oocMsg_StringPtr value);
#define __oocMsg_Msg_GetAttribute(msg, name, name__len) __SEND(__TYPEOF(msg), 0, oocMsg_Attribute(*)(oocMsg_Msg, CHAR*, ADDRESS ), (msg, name, name__len))
#define __oocMsg_Msg_GetLText(msg, text, text__len) __SEND(__TYPEOF(msg), 1, void(*)(oocMsg_Msg, CHAR*, ADDRESS ), (msg, text, text__len))
#define __oocMsg_Msg_GetText(msg, text, text__len) __SEND(__TYPEOF(msg), 2, void(*)(oocMsg_Msg, CHAR*, ADDRESS ), (msg, text, text__len))
#define __oocMsg_Msg_SetAttribute(msg, attr) __SEND(__TYPEOF(msg), 3, void(*)(oocMsg_Msg, oocMsg_Attribute), (msg, attr))
#define __oocMsg_Msg_SetIntAttrib(msg, name, name__len, value) __SEND(__TYPEOF(msg), 4, void(*)(oocMsg_Msg, CHAR*, ADDRESS , INT32), (msg, name, name__len, value))
#define __oocMsg_Msg_SetLStringAttrib(msg, name, name__len, value) __SEND(__TYPEOF(msg), 5, void(*)(oocMsg_Msg, CHAR*, ADDRESS , oocMsg_LStringPtr), (msg, name, name__len, value))
#define __oocMsg_Msg_SetMsgAttrib(msg, name, name__len, value) __SEND(__TYPEOF(msg), 6, void(*)(oocMsg_Msg, CHAR*, ADDRESS , oocMsg_Msg), (msg, name, name__len, value))
#define __oocMsg_Msg_SetStringAttrib(msg, name, name__len, value) __SEND(__TYPEOF(msg), 7, void(*)(oocMsg_Msg, CHAR*, ADDRESS , oocMsg_StringPtr), (msg, name, name__len, value))

typedef
	struct oocMsg_MsgListDesc *oocMsg_MsgList;

typedef
	struct oocMsg_MsgListDesc {
		INT32 msgCount;
		oocMsg_Msg msgList;
		char _prvt0[8];
	} oocMsg_MsgListDesc;

import void oocMsg_MsgList_Append (oocMsg_MsgList l, oocMsg_Msg msg);
import void oocMsg_MsgList_AppendList (oocMsg_MsgList l, oocMsg_MsgList source);
#define __oocMsg_MsgList_Append(l, msg) __SEND(__TYPEOF(l), 0, void(*)(oocMsg_MsgList, oocMsg_Msg), (l, msg))
#define __oocMsg_MsgList_AppendList(l, source) __SEND(__TYPEOF(l), 1, void(*)(oocMsg_MsgList, oocMsg_MsgList), (l, source))

typedef
	struct oocMsg_StringAttributeDesc *oocMsg_StringAttribute;

typedef
	struct oocMsg_StringAttributeDesc { /* oocMsg_AttributeDesc */
		oocMsg_Attribute nextAttrib;
		oocMsg_StringPtr name;
		oocMsg_StringPtr string;
	} oocMsg_StringAttributeDesc;

import void oocMsg_StringAttribute_ReplacementText (oocMsg_StringAttribute attr, CHAR *text, ADDRESS text__len);



import ADDRESS *oocMsg_AttributeDesc__typ;
import ADDRESS *oocMsg_ContextDesc__typ;
import ADDRESS *oocMsg_MsgDesc__typ;
import ADDRESS *oocMsg_MsgListDesc__typ;
import ADDRESS *oocMsg_IntAttributeDesc__typ;
import ADDRESS *oocMsg_StringAttributeDesc__typ;
import ADDRESS *oocMsg_LStringAttributeDesc__typ;
import ADDRESS *oocMsg_MsgAttributeDesc__typ;

import oocMsg_LStringPtr oocMsg_GetLStringPtr (CHAR *str, ADDRESS str__len);
import oocMsg_StringPtr oocMsg_GetStringPtr (CHAR *str, ADDRESS str__len);
import void oocMsg_InitAttribute (oocMsg_Attribute attr, CHAR *name, ADDRESS name__len);
import void oocMsg_InitContext (oocMsg_Context context, CHAR *id, ADDRESS id__len);
import void oocMsg_InitMsgList (oocMsg_MsgList l);
import oocMsg_Msg oocMsg_New (oocMsg_Context context, INT32 code);
import oocMsg_IntAttribute oocMsg_NewIntAttrib (CHAR *name, ADDRESS name__len, INT32 value);
import oocMsg_LStringAttribute oocMsg_NewLStringAttrib (CHAR *name, ADDRESS name__len, oocMsg_LStringPtr value);
import oocMsg_MsgAttribute oocMsg_NewMsgAttrib (CHAR *name, ADDRESS name__len, oocMsg_Msg value);
import oocMsg_MsgList oocMsg_NewMsgList (void);
import oocMsg_StringAttribute oocMsg_NewStringAttrib (CHAR *name, ADDRESS name__len, oocMsg_StringPtr value);
import void *oocMsg__init(void);


#endif // oocMsg
