mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-17 01:33:16 +03:00
Use inlines and OS3ify amigaguide.class
This commit is contained in:
parent
2140f056dd
commit
3630d7348d
@ -4,8 +4,7 @@
|
|||||||
* by Daniel "Trixie" Jedlicka
|
* by Daniel "Trixie" Jedlicka
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef __USE_INLINE__
|
#include "amiga/os3support.h"
|
||||||
|
|
||||||
#include "amigaguide_class.h"
|
#include "amigaguide_class.h"
|
||||||
|
|
||||||
|
|
||||||
@ -46,18 +45,22 @@ Class *initAGClass(void)
|
|||||||
|
|
||||||
|
|
||||||
// Open amigaguide.library and its interface.
|
// Open amigaguide.library and its interface.
|
||||||
if ( (AmigaGuideBase = IExec->OpenLibrary("amigaguide.library", 52)) )
|
if ( (AmigaGuideBase = OpenLibrary("amigaguide.library", 52)) )
|
||||||
{
|
{
|
||||||
if ( (IAmigaGuide = (struct AmigaGuideIFace *)IExec->GetInterface(AmigaGuideBase, "main", 1L, NULL)) )
|
#ifdef __amigaos4__
|
||||||
|
if ( (IAmigaGuide = (struct AmigaGuideIFace *)GetInterface(AmigaGuideBase, "main", 1L, NULL)) )
|
||||||
{
|
{
|
||||||
if ( (cl = IIntuition->MakeClass(NULL, "rootclass", NULL, sizeof(struct localObjectData), 0)) )
|
#endif
|
||||||
|
if ( (cl = MakeClass(NULL, "rootclass", NULL, sizeof(struct localObjectData), 0)) )
|
||||||
{
|
{
|
||||||
cl->cl_Dispatcher.h_Entry = (HOOKFUNC)dispatchAGClass;
|
cl->cl_Dispatcher.h_Entry = (HOOKFUNC)dispatchAGClass;
|
||||||
IIntuition->AddClass(cl);
|
AddClass(cl);
|
||||||
}
|
}
|
||||||
else freeAGClass(NULL);
|
else freeAGClass(NULL);
|
||||||
|
#ifdef __amigaos4__
|
||||||
}
|
}
|
||||||
else freeAGClass(NULL);
|
else freeAGClass(NULL);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return cl;
|
return cl;
|
||||||
@ -72,9 +75,11 @@ BOOL freeAGClass(Class *cl)
|
|||||||
|
|
||||||
|
|
||||||
// Close amigaguide.library and free the class.
|
// Close amigaguide.library and free the class.
|
||||||
if (IAmigaGuide) IExec->DropInterface((struct Interface *)IAmigaGuide);
|
#ifdef __amigaos4__
|
||||||
if (AmigaGuideBase) IExec->CloseLibrary(AmigaGuideBase);
|
if (IAmigaGuide) DropInterface((struct Interface *)IAmigaGuide);
|
||||||
if (cl) retVal = IIntuition->FreeClass(cl);
|
#endif
|
||||||
|
if (AmigaGuideBase) CloseLibrary(AmigaGuideBase);
|
||||||
|
if (cl) retVal = FreeClass(cl);
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
@ -112,7 +117,7 @@ static uint32 dispatchAGClass(Class *cl, Object *o, Msg msg)
|
|||||||
return agm_process(cl, o, msg);
|
return agm_process(cl, o, msg);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return IIntuition->IDoSuperMethodA(cl, o, msg);
|
return IDoSuperMethodA(cl, o, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -126,7 +131,7 @@ uint32 om_new(Class *cl, Object *o, struct opSet *msg)
|
|||||||
uint32 retVal = 0L;
|
uint32 retVal = 0L;
|
||||||
|
|
||||||
|
|
||||||
if ( (retVal = IIntuition->IDoSuperMethodA(cl, o, (Msg)msg)) )
|
if ( (retVal = IDoSuperMethodA(cl, o, (Msg)msg)) )
|
||||||
{
|
{
|
||||||
// Obtain pointer to our object's local instance data.
|
// Obtain pointer to our object's local instance data.
|
||||||
if ( (lod = (struct localObjectData *)INST_DATA(cl, retVal)) )
|
if ( (lod = (struct localObjectData *)INST_DATA(cl, retVal)) )
|
||||||
@ -161,7 +166,7 @@ uint32 om_dispose(Class *cl, Object *o, Msg msg)
|
|||||||
agm_close(cl, o, msg);
|
agm_close(cl, o, msg);
|
||||||
|
|
||||||
// Let superclass dispose of the object.
|
// Let superclass dispose of the object.
|
||||||
return IIntuition->IDoSuperMethodA(cl, o, msg);
|
return IDoSuperMethodA(cl, o, msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,7 +181,7 @@ uint32 om_set(Class *cl, Object *o, struct opSet *msg)
|
|||||||
uint32 retVal = 0L;
|
uint32 retVal = 0L;
|
||||||
|
|
||||||
|
|
||||||
while ((ti = IUtility->NextTagItem (&tags)))
|
while ((ti = NextTagItem (&tags)))
|
||||||
{
|
{
|
||||||
switch (ti->ti_Tag)
|
switch (ti->ti_Tag)
|
||||||
{
|
{
|
||||||
@ -267,7 +272,7 @@ uint32 om_get(Class *cl, Object *o, struct opGet *msg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
retVal = IIntuition->IDoSuperMethodA(cl, o, (Msg)msg);
|
retVal = IDoSuperMethodA(cl, o, (Msg)msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return retVal;
|
return retVal;
|
||||||
@ -289,15 +294,15 @@ uint32 agm_open(Class *cl, Object *o, Msg msg)
|
|||||||
if ( lod->agHandle ) agm_close(cl, o, msg);
|
if ( lod->agHandle ) agm_close(cl, o, msg);
|
||||||
|
|
||||||
// (Re)establish the AmigaGuide context and open the database asynchronously.
|
// (Re)establish the AmigaGuide context and open the database asynchronously.
|
||||||
if ( (lod->agHandle = IAmigaGuide->OpenAmigaGuideAsync(&(lod->nag), NULL)) )
|
if ( (lod->agHandle = OpenAmigaGuideAsync(&(lod->nag), NULL)) )
|
||||||
{
|
{
|
||||||
if ( (lod->agSignal = IAmigaGuide->AmigaGuideSignal(lod->agHandle)) )
|
if ( (lod->agSignal = AmigaGuideSignal(lod->agHandle)) )
|
||||||
{
|
{
|
||||||
// Wait until the database is displayed and ready.
|
// Wait until the database is displayed and ready.
|
||||||
IExec->Wait(lod->agSignal);
|
Wait(lod->agSignal);
|
||||||
while ( agActive == FALSE )
|
while ( agActive == FALSE )
|
||||||
{
|
{
|
||||||
while ( (lod->agm = IAmigaGuide->GetAmigaGuideMsg(lod->agHandle)) )
|
while ( (lod->agm = GetAmigaGuideMsg(lod->agHandle)) )
|
||||||
{
|
{
|
||||||
// The AmigaGuide process started OK.
|
// The AmigaGuide process started OK.
|
||||||
if ( lod->agm->agm_Type == ActiveToolID ) agActive = TRUE;
|
if ( lod->agm->agm_Type == ActiveToolID ) agActive = TRUE;
|
||||||
@ -305,19 +310,19 @@ uint32 agm_open(Class *cl, Object *o, Msg msg)
|
|||||||
// Opening the guide file failed for some reason, continue as usual.
|
// Opening the guide file failed for some reason, continue as usual.
|
||||||
if ( lod->agm->agm_Type == ToolStatusID && lod->agm->agm_Pri_Ret ) agActive = TRUE;
|
if ( lod->agm->agm_Type == ToolStatusID && lod->agm->agm_Pri_Ret ) agActive = TRUE;
|
||||||
|
|
||||||
IAmigaGuide->ReplyAmigaGuideMsg(lod->agm);
|
ReplyAmigaGuideMsg(lod->agm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( lod->nag.nag_Context )
|
if ( lod->nag.nag_Context )
|
||||||
{
|
{
|
||||||
// A context node array is provided = open the current context node.
|
// A context node array is provided = open the current context node.
|
||||||
IAmigaGuide->SetAmigaGuideContext(lod->agHandle, lod->agContextID, NULL);
|
SetAmigaGuideContext(lod->agHandle, lod->agContextID, NULL);
|
||||||
retVal = IAmigaGuide->SendAmigaGuideContext(lod->agHandle, NULL);
|
retVal = SendAmigaGuideContext(lod->agHandle, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// No context array is provided = open the main node.
|
// No context array is provided = open the main node.
|
||||||
retVal = IAmigaGuide->SendAmigaGuideCmd(lod->agHandle, "LINK MAIN", TAG_DONE);
|
retVal = SendAmigaGuideCmd(lod->agHandle, "LINK MAIN", TAG_DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -338,7 +343,7 @@ uint32 agm_close(Class *cl, Object *o, Msg msg)
|
|||||||
|
|
||||||
if ( lod->agHandle )
|
if ( lod->agHandle )
|
||||||
{
|
{
|
||||||
IAmigaGuide->CloseAmigaGuide(lod->agHandle);
|
CloseAmigaGuide(lod->agHandle);
|
||||||
lod->agHandle = NULL;
|
lod->agHandle = NULL;
|
||||||
lod->agSignal = 0;
|
lod->agSignal = 0;
|
||||||
retVal = 1L;
|
retVal = 1L;
|
||||||
@ -361,7 +366,7 @@ uint32 agm_process(Class *cl, Object *o, Msg msg)
|
|||||||
|
|
||||||
if (lod->agHandle)
|
if (lod->agHandle)
|
||||||
{
|
{
|
||||||
while ( (lod->agm = IAmigaGuide->GetAmigaGuideMsg(lod->agHandle)) )
|
while ( (lod->agm = GetAmigaGuideMsg(lod->agHandle)) )
|
||||||
{
|
{
|
||||||
switch (lod->agm->agm_Type)
|
switch (lod->agm->agm_Type)
|
||||||
{
|
{
|
||||||
@ -374,7 +379,7 @@ uint32 agm_process(Class *cl, Object *o, Msg msg)
|
|||||||
//printf("%d\n", lod->agm->agm_Type);
|
//printf("%d\n", lod->agm->agm_Type);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
IAmigaGuide->ReplyAmigaGuideMsg(lod->agm);
|
ReplyAmigaGuideMsg(lod->agm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@
|
|||||||
|
|
||||||
/* Intuition */
|
/* Intuition */
|
||||||
#define IDoMethod DoMethod
|
#define IDoMethod DoMethod
|
||||||
|
#define IDoSuperMethodA DoSuperMethodA
|
||||||
|
|
||||||
/* Integral type definitions */
|
/* Integral type definitions */
|
||||||
typedef int8_t int8;
|
typedef int8_t int8;
|
||||||
|
Loading…
Reference in New Issue
Block a user