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

#ifndef ulmOperations__h
#define ulmOperations__h

#include "SYSTEM.h"
#include "ulmObjects.h"
#include "ulmPersistentDisciplines.h"

typedef
	struct ulmOperations_OperandRec *ulmOperations_Operand;

typedef
	void (*ulmOperations_AssignProc)(ulmOperations_Operand*, ulmOperations_Operand);

typedef
	INT32 (*ulmOperations_CompareProc)(ulmOperations_Operand, ulmOperations_Operand);

typedef
	void (*ulmOperations_CreateProc)(ulmOperations_Operand*);

typedef
	struct ulmOperations_InterfaceRec *ulmOperations_Interface;

typedef
	void (*ulmOperations_OperatorProc)(INT8, ulmOperations_Operand, ulmOperations_Operand, ulmOperations_Operand*);

typedef
	struct ulmOperations_InterfaceRec { /* ulmObjects_ObjectRec */
		ulmOperations_CreateProc create;
		ulmOperations_AssignProc assign;
		ulmOperations_OperatorProc op;
		ulmOperations_CompareProc compare;
	} ulmOperations_InterfaceRec;

typedef
	struct ulmOperations_OperandRec { /* ulmPersistentDisciplines_ObjectRec */
		INT64 _prvt0;
		char _prvt1[76];
	} ulmOperations_OperandRec;



import ADDRESS *ulmOperations_InterfaceRec__typ;
import ADDRESS *ulmOperations_OperandRec__typ;

import ulmOperations_Operand ulmOperations_Add (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Add2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmOperations_Add3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Assign (ulmOperations_Operand *target, ulmOperations_Operand source);
import UINT32 ulmOperations_Capabilities (ulmOperations_Operand op);
import INT32 ulmOperations_Compare (ulmOperations_Operand op1, ulmOperations_Operand op2);
import BOOLEAN ulmOperations_Compatible (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Copy (ulmOperations_Operand source, ulmOperations_Operand target);
import ulmOperations_Operand ulmOperations_Div (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Div2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmOperations_Div3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Init (ulmOperations_Operand op, ulmOperations_Interface if_, UINT32 caps);
import ulmOperations_Operand ulmOperations_Mul (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Mul2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmOperations_Mul3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import ulmOperations_Operand ulmOperations_Sub (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmOperations_Sub2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmOperations_Sub3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import void *ulmOperations__init(void);


#endif // ulmOperations
