#include <pragma/exec_lib.h>
#include <pragma/intuition_lib.h>
#include <dos/dos.h>

struct ClassBase
{
struct Library cb_Lib;
BPTR sb_SegList;
IClass *cb_Class;
};

#pragma libbase ClassBase

struct IClass *ObtainClass(register __a6 struct ClassBase *cb);

void abortLibInit();

extern APTR Dispatcher;

char LibNameString[]="WarpGIF.datatype";

struct Library *GIFBase;
struct Library *SuperClassBase;
struct Library *PowerPCBase;

static struct IClass *InitClass(register __a6 struct ClassBase *cb)
{
struct IClass *cl;
if(cl=MakeClass(LibNameString,"picture.datatype",0,0,0))
	{
	cl->cl_Dispatcher.h_Entry=&Dispatcher;
	cl->cl_UserData=ULONG(cb);
	AddClass(cl);
	}
return cl;
}

void INIT_7_LibInit(register __a6 struct ClassBase *cb)
{
if(SuperClassBase=OpenLibrary("datatypes/picture.datatype",39))
	{
	if(PowerPCBase=OpenLibrary("powerpc.library",15))
		{
		if(cb->cb_Class=cb->cb_Class=InitClass(cb)) return;
		}
	}
abortLibInit();
}

void EXIT_7_LibInit(register __a6 struct ClassBase *cb)
{
if(cb->cb_Class) FreeClass(cb->cb_Class);
CloseLibrary(PowerPCBase);
CloseLibrary(SuperClassBase);
}

struct IClass *ObtainClass(register __a6 struct ClassBase *cb)
{
return cb->cb_Class;
}
