#ifndef TRI_STRUCTS_H
#define TRI_STRUCTS_H

#include "BinaryString.h"
#include "QualifiedName.h"

typedef struct BinaryString TriAddress;

typedef struct TriAddressList
{
	TriAddress ** addrList;
	long int length;
} TriAddressList;

typedef struct TriAddressList32
{
	TriAddress ** addrList;
	int32_t length;
} TriAddressList32;

typedef struct TriComponentId
{
	BinaryString compInst;
	char * compName;
	QualifiedName compType;
} TriComponentId;

typedef struct TriComponentId32
{
	BinaryString32 compInst;
	char * compName;
	QualifiedName compType;
} TriComponentId32;

typedef struct TriComponentIdList
{
	TriComponentId ** compIdList;
	long int length;
} TriComponentIdList;

typedef struct TriComponentIdList32
{
	TriComponentId ** compIdList;
	int32_t length;
} TriComponentIdList32;

typedef struct BinaryString TriException;

typedef struct QualifiedName TriFunctionId;

typedef struct BinaryString TriMessage;

typedef enum
{
	TRI_IN = 0,
	TRI_INOUT = 1,
	TRI_OUT = 2
}TriParameterPassingMode;

typedef struct TriParameter
{
	BinaryString par;
	TriParameterPassingMode mode;
} TriParameter;

typedef struct TriParameter32
{
	BinaryString32 par;
	TriParameterPassingMode mode;
} TriParameter32;

typedef struct TriParameterList
{
	TriParameter ** parList;
	long int length;
} TriParameterList;

typedef struct TriParameterList32
{
	TriParameter ** parList;
	int32_t length;
} TriParameterList32;

typedef struct TriPortId
{
	TriComponentId compInst;
	char * portName;
	long int portIndex;
	QualifiedName portType;
	void * aux;
} TriPortId;

typedef struct TriPortId32
{
	TriComponentId32 compInst;
	char * portName;
	int32_t portIndex;
	QualifiedName portType;
	void * aux;
} TriPortId32;

typedef struct TriPortIdList
{
	TriPortId ** portIdList;
	long int length;
} TriPortIdList;

typedef struct TriPortIdList32
{
	TriPortId ** portIdList;
	int32_t length;
} TriPortIdList32;

typedef struct QualifiedName TriSignatureId;

typedef struct QualifiedName TriTestCaseId;

typedef double TriTimerDuration;

typedef struct BinaryString TriTimerId;
typedef long int TriStatus;

#endif
