/* "hide" the original class and template, they are keywords in C++ */
#define class _class
#define template _template

extern "C" {
void volatile exit (int);

#include <exec/types.h>

/* if you want to use the functions of <clib/alib_stdio_protos.h>, do this: */
#include <clib/alib_stdio_defines.h>

#include <intuition/classusr.h>
#include <intuition/intuitionbase.h>
#ifdef __OPTIMIZE__		/* need lot of time & memory, is selected by -O2 */
#include <inline/exec.h>
#include <inline/dos.h>
#include <inline/intuition.h>
#else
#include <clib/exec_protos.h>    /* faster and easier to debug */
#include <clib/dos_protos.h>     /* but code is worse */
#include <clib/intuition_protos.h>
#include <clib/dos_protos.h>     /* but code is worse */
#endif
}

#undef template
#undef class

extern "C" {
IntuitionBase *IntuitionBase;
}

#ifdef DOESNT_WORK

/* standard C++-Programm */
int main(void)
{
	if(IntuitionBase=(IntuitionBase *)OpenLibrary((UBYTE *)"intuition.library",37))
	{
		// do someting useful here

		CloseLibrary((struct Library *)IntuitionBase);
	}
	return 0;
}

#else
/* standard C++-Programm */
int main(void)
{
	if(IntuitionBase = (struct IntuitionBase *)OpenLibrary((UBYTE *)"intuition.library",37))
	{
		// do someting useful here

		struct Library *dummy=(struct Library *)IntuitionBase;
		CloseLibrary(dummy);
	}
	return 0;
}
#endif
