grub2: bring back build of aros-side grub2 tools
[AROS.git] / workbench / libs / muimaster / mui_createcustomclass.c
blobac1713d4448bb1b31d40500f8036b457296019b7
1 /*
2 Copyright © 2002-2007, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <proto/exec.h>
7 #include <proto/intuition.h>
8 #include <proto/graphics.h>
9 #include <proto/dos.h>
10 #include <proto/muimaster.h>
11 #include <proto/utility.h>
13 #include "mui.h"
14 #include "muimaster_intern.h"
15 #include "support.h"
16 #include "support_classes.h"
18 /*****************************************************************************
20 NAME */
21 AROS_LH5(struct MUI_CustomClass *, MUI_CreateCustomClass,
23 /* SYNOPSIS */
24 AROS_LHA(struct Library *, base, A0),
25 AROS_LHA(ClassID, supername, A1),
26 AROS_LHA(struct MUI_CustomClass *, supermcc, A2),
27 AROS_LHA(ULONG, datasize, D0),
28 AROS_LHA(APTR, dispatcher, A3),
30 /* LOCATION */
31 struct Library *, MUIMasterBase, 18, MUIMaster)
33 /* FUNCTION
35 INPUTS
37 RESULT
39 NOTES
41 EXAMPLE
43 BUGS
45 SEE ALSO
47 INTERNALS
49 *****************************************************************************/
51 AROS_LIBFUNC_INIT
53 struct MUI_CustomClass *mcc;
54 struct IClass *cl, *super;
55 ClassID id = NULL;
57 if ((supername == NULL) && (supermcc == NULL))
58 return NULL;
60 if (!supermcc)
62 super = MUI_GetClass(supername);
63 if (!super) return NULL;
65 else super = supermcc->mcc_Class;
67 if (!(mcc = mui_alloc_struct(struct MUI_CustomClass)))
68 return NULL;
70 if (base)
71 id = FilePart(((struct Node *)base)->ln_Name);
73 if (!(cl = MakeClass(id, NULL, super, datasize, 0)))
75 mui_free(mcc);
76 return NULL;
79 mcc->mcc_UtilityBase = (struct Library *)UtilityBase;
80 mcc->mcc_DOSBase = (struct Library *)DOSBase;
81 mcc->mcc_GfxBase = (struct Library *)GfxBase;
82 mcc->mcc_IntuitionBase = (struct Library *)IntuitionBase;
84 mcc->mcc_Class = cl;
85 mcc->mcc_Super = super;
86 mcc->mcc_Module = NULL; /* _zune_class_load() will set this */
88 #if defined(__MAXON__) || defined(__amigaos4__)
89 cl->cl_Dispatcher.h_Entry = (HOOKFUNC)dispatcher;
90 #else
91 cl->cl_Dispatcher.h_Entry = (HOOKFUNC)metaDispatcher;
92 cl->cl_Dispatcher.h_SubEntry = (HOOKFUNC)dispatcher;
93 #endif
94 cl->cl_Dispatcher.h_Data = base;
96 return mcc;
98 AROS_LIBFUNC_EXIT
99 } /* MUIA_CreateCustomClass */