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

#ifndef ulmIntOperations__h
#define ulmIntOperations__h

#include "SYSTEM.h"
#include "ulmOperations.h"

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

typedef
	void (*ulmIntOperations_IntToOpProc)(INT32, ulmOperations_Operand*);

typedef
	struct ulmIntOperations_InterfaceRec *ulmIntOperations_Interface;

typedef
	BOOLEAN (*ulmIntOperations_IsLargeEnoughForProc)(ulmOperations_Operand, INT32);

typedef
	BOOLEAN (*ulmIntOperations_UnsignedProc)(ulmOperations_Operand);

typedef
	void (*ulmIntOperations_OpToIntProc)(ulmOperations_Operand, INT32*);

typedef
	INT32 (*ulmIntOperations_Log2Proc)(ulmOperations_Operand);

typedef
	BOOLEAN (*ulmIntOperations_OddProc)(ulmOperations_Operand);

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

typedef
	struct ulmIntOperations_InterfaceRec { /* ulmOperations_InterfaceRec */
		ulmOperations_CreateProc create;
		ulmOperations_AssignProc assign;
		ulmOperations_OperatorProc op;
		ulmOperations_CompareProc compare;
		ulmIntOperations_IsLargeEnoughForProc isLargeEnoughFor;
		ulmIntOperations_UnsignedProc unsigned_;
		ulmIntOperations_IntToOpProc intToOp;
		ulmIntOperations_OpToIntProc opToInt;
		ulmIntOperations_Log2Proc log2;
		ulmIntOperations_OddProc odd;
		ulmIntOperations_ShiftProc shift;
		ulmIntOperations_IntOperatorProc intOp;
	} ulmIntOperations_InterfaceRec;

typedef
	struct ulmIntOperations_OperandRec *ulmIntOperations_Operand;

typedef
	struct ulmIntOperations_OperandRec { /* ulmOperations_OperandRec */
		INT64 _prvt0;
		char _prvt1[92];
	} ulmIntOperations_OperandRec;



import ADDRESS *ulmIntOperations_InterfaceRec__typ;
import ADDRESS *ulmIntOperations_OperandRec__typ;

import UINT32 ulmIntOperations_Capabilities (ulmIntOperations_Operand op);
import ulmOperations_Operand ulmIntOperations_Dec (ulmOperations_Operand op1);
import void ulmIntOperations_Dec2 (ulmOperations_Operand *op1);
import void ulmIntOperations_Dec3 (ulmOperations_Operand *result, ulmOperations_Operand op1);
import ulmOperations_Operand ulmIntOperations_Inc (ulmOperations_Operand op1);
import void ulmIntOperations_Inc2 (ulmOperations_Operand *op1);
import void ulmIntOperations_Inc3 (ulmOperations_Operand *result, ulmOperations_Operand op1);
import void ulmIntOperations_Init (ulmIntOperations_Operand op, ulmIntOperations_Interface if_, UINT32 caps);
import void ulmIntOperations_IntToOp (INT32 int32, ulmOperations_Operand *op);
import BOOLEAN ulmIntOperations_IsLargeEnoughFor (ulmOperations_Operand op, INT32 n);
import INT32 ulmIntOperations_Log2 (ulmOperations_Operand op);
import ulmOperations_Operand ulmIntOperations_MMul (ulmOperations_Operand op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import void ulmIntOperations_MMul2 (ulmOperations_Operand *op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import void ulmIntOperations_MMul3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import ulmOperations_Operand ulmIntOperations_MPow (ulmOperations_Operand op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import void ulmIntOperations_MPow2 (ulmOperations_Operand *op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import void ulmIntOperations_MPow3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2, ulmOperations_Operand op3);
import ulmOperations_Operand ulmIntOperations_Mod (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmIntOperations_Mod2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmIntOperations_Mod3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import BOOLEAN ulmIntOperations_Odd (ulmOperations_Operand op);
import void ulmIntOperations_OpToInt (ulmOperations_Operand op, INT32 *int32);
import ulmOperations_Operand ulmIntOperations_Pow (ulmOperations_Operand op1, ulmOperations_Operand op2);
import void ulmIntOperations_Pow2 (ulmOperations_Operand *op1, ulmOperations_Operand op2);
import void ulmIntOperations_Pow3 (ulmOperations_Operand *result, ulmOperations_Operand op1, ulmOperations_Operand op2);
import ulmOperations_Operand ulmIntOperations_Shift (ulmOperations_Operand op1, INT32 n);
import void ulmIntOperations_Shift2 (ulmOperations_Operand *op1, INT32 n);
import void ulmIntOperations_Shift3 (ulmOperations_Operand *result, ulmOperations_Operand op1, INT32 n);
import BOOLEAN ulmIntOperations_Unsigned (ulmOperations_Operand op);
import void *ulmIntOperations__init(void);


#endif // ulmIntOperations
