// mirc_dllhell.h
// Mirc Dll Support Code
// ATTN: i need to add information here about orgincal author of
//   mirc_dllshell, which i have only slightly modified.
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// To avoid multiple header instantiations
#ifndef _mirc_dllshellh

#define _mirc_dllshellh

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// Compiler directive for dlls
#define WIN32_LEAN_AND_MEAN

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
#include <windows.h>

//---------------------------------------------------------------------------




//---------------------------------------------------------------------------
// structure passed by mirc on startup
typedef struct {
	DWORD mVersion;
	HWND mHwnd;
	BOOL mKeep;
} LOADINFO;
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Global variables
extern HINSTANCE DllWindow_hinstance;
extern LPVOID mircdllheap;
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// Forward declarations for functions you must define
const char *get_mircDllInfo();
const char *get_mircDllVersion();
int do_mircDllUnLoad(int mode);
bool do_mircDllLoad(LOADINFO* loadinfo);
void do_DllStart();
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
// Forward declarations for helper functions provided by mirc_sllshell.cpp
int _atolp(char* p);
char* _getword(char*& p);
char* _getlcword(char*& p);
char *_mystrchr(char *p,char c);
#ifndef lopen

 #define lopen _lopen

#endif

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// replacement new and delete, so avoid having to call c lang default lib
LPVOID __cdecl operator new(size_t n);
void __cdecl operator delete(LPVOID p);
int __cdecl _purecall();
//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// typedefs
#define FUNCPARMS    HWND mWnd, HWND aWnd, char* data, char* parms, BOOL show, BOOL nopause

#define DllExport    extern "C" __declspec(dllexport)

#define MircFunc     extern "C" __declspec(dllexport) int __stdcall

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------
// simple inline functions
#define dllret(parms) { wsprintf(data,"%s",parms); return 3; }

#define dllret2(params1,params2) { wsprintf(data,"%s %s",params1,params2); return 3; }

#define mylowercase(p); { if (*p>='A' && *p<='Z') *p=*p+32; }

//---------------------------------------------------------------------------







//---------------------------------------------------------------------------
#endif

//---------------------------------------------------------------------------


syntax highlighted by Code2HTML, v. 0.9.1