//#########################
//AUTHOR OF DLL: Utermiko #
//#########################

#define EXPORT extern "C" __declspec(dllexport)

EXPORT int LoadDll(char* path);
EXPORT int CreateObject(int assemblyId, char* namespaceAndClass);
EXPORT int RemoveObject(int objectId);

EXPORT int ClearArguments();
EXPORT int AddStringArgument(char* value);//System.String
EXPORT int AddCharArgument(char value);//System.SByte
EXPORT int AddUCharArgument(unsigned char value);//System.Byte
EXPORT int AddDoubleArgument(double value);//System.Double
EXPORT int AddFloatArgument(float value);//System.Float
EXPORT int AddIntArgument(int value);//System.Int32
EXPORT int AddUIntArgument(unsigned int value);//System.UInt32
EXPORT int AddShortArgument(short value);//System.Int16
EXPORT int AddUShortArgument(unsigned short value);//System.UInt16
EXPORT int AddLongArgument(long value);//System.Int64
EXPORT int AddULongArgument(unsigned long value);//System.UInt64
EXPORT int AddLPVOIDArgument(LPVOID value);//System.IntPtr

EXPORT char* InvokeStringMethod(int objectId, char* methodName);//System.String
EXPORT char InvokeCharMethod(int objectId, char* methodName);//System.SByte
EXPORT unsigned char InvokeUCharMethod(int objectId, char* methodName);//System.Byte
EXPORT double InvokeDoubleMethod(int objectId, char* methodName);//System.Double
EXPORT float InvokeFloatMethod(int objectId, char* methodName);//System.Float
EXPORT int InvokeIntMethod(int objectId, char* methodName);//System.Int32
EXPORT unsigned int InvokeUIntMethod(int objectId, char* methodName);//System.UInt32
EXPORT short InvokeShortMethod(int objectId, char* methodName);//System.Int16
EXPORT unsigned short InvokeUShortMethod(int objectId, char* methodName);//System.UInt16
EXPORT long InvokeLongMethod(int objectId, char* methodName);//System.Int64
EXPORT unsigned long InvokeULongMethod(int objectId, char* methodName);//System.UInt64
EXPORT LPVOID InvokeLPVOIDMethod(int objectId, char* methodName);//System.IntPtr