grub2: bring back build of aros-side grub2 tools
[AROS.git] / rom / intuition / findclass.c
blob6d2c5e8753763a2a361e5396b46d4dc4025349c1
1 /*
2 Copyright © 1995-2013, The AROS Development Team. All rights reserved.
3 Copyright © 2001-2003, The MorphOS Development Team. All Rights Reserved.
4 $Id$
6 Find a BOOPSI Class in the class list.
7 */
9 #include <string.h>
10 #include <exec/lists.h>
11 #include <proto/exec.h>
13 #include "intuition_intern.h"
15 #undef SDEBUG
16 #define SDEBUG 0
17 #undef DEBUG
18 #define DEBUG 0
19 #include <aros/debug.h>
21 /*****i************************************************************************
23 NAME */
24 #include <intuition/classes.h>
25 #include <proto/intuition.h>
27 AROS_LH1(struct IClass *, FindClass,
29 /* SYNOPSIS */
30 AROS_LHA(ClassID, classID, A0),
32 /* LOCATION */
33 struct IntuitionBase *, IntuitionBase, 112, Intuition)
35 /* FUNCTION
37 INPUTS
39 RESULT
41 NOTES
42 This function is binary-compatible with AmigaOS v3, however it is
43 considered private.
45 EXAMPLE
47 BUGS
49 SEE ALSO
51 INTERNALS
53 ******************************************************************************/
55 AROS_LIBFUNC_INIT
57 struct IntIntuitionBase *intuitionBase = GetPrivIBase(IntuitionBase);
58 Class * classPtr = NULL;
60 DEBUG_FINDCLASS(dprintf("FindClass: ClassID <%s>\n",
61 classID ? classID : (UBYTE*)"NULL"));
63 EnterFunc(bug("intuition_boopsi::FindClass()\n"));
65 if (!classID)
66 return NULL;
68 D(bug("class to find: \"%s\"\n", classID));
70 /* Lock the list */
71 ObtainSemaphoreShared (&intuitionBase->ClassListLock);
73 /* Search for the class */
74 ForeachNode (&intuitionBase->ClassList, classPtr)
76 D(bug("+\"%s\"\n", classPtr->cl_ID));
77 if (!strcmp (classPtr->cl_ID, classID))
78 goto found;
81 classPtr = NULL; /* Nothing found */
82 D(bug("class not found!\n"));
84 found:
85 /* Unlock list */
86 ReleaseSemaphore (&intuitionBase->ClassListLock);
88 DEBUG_FINDCLASS(dprintf("FindClass: return 0x%lx\n", classPtr));
90 ReturnPtr("intuition_boopsi::FindClass()", struct IClass *, classPtr);
92 AROS_LIBFUNC_EXIT