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

#define EXPORT extern "C" __declspec(dllexport)
#define CALLING_CONVENTION __stdcall

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

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

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