Squashed commit of 'sdl-hidd' branch
[cake.git] / rom / oop / oop_init.c
blob5b40e70fac3243cd140dd9abe5fd791571750710
1 /*
2 Copyright © 1995-2006, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: OOP Library
6 Lang: english
7 */
9 #define NUM_IDS 31
11 #include <utility/utility.h>
12 #include <proto/oop.h>
13 #include <oop/oop.h>
14 #include <aros/symbolsets.h>
16 #include "intern.h"
17 #include LC_LIBDEFS_FILE
19 #include "hash.h"
20 //#undef SDEBUG
21 #undef DEBUG
22 //#define SDEBUG 0
23 #define DEBUG 0
24 #include <aros/debug.h>
27 BOOL InitUtilityClasses(struct IntOOPBase *OOPBase);
30 #if 0
31 static void FreeAllClasses(struct Library *BOOPIBase)
33 OOP_Class *cl;
35 while((cl = (OOP_Class *)RemHead((struct List *)&GetOBase(OOPBase)->bb_ClassList)))
37 if(cl != &rootclass)
38 OOP_FreeClass(cl);
41 #endif
44 static int OOPInit(LIBBASETYPEPTR LIBBASE)
46 D(bug("Enter OOPInit\n"));
48 UtilityBase = OpenLibrary("utility.library", 0);
50 NEWLIST(&LIBBASE->ob_ClassList);
51 InitSemaphore(&LIBBASE->ob_ClassListLock);
53 NEWLIST(&LIBBASE->ob_ServerList);
54 InitSemaphore(&LIBBASE->ob_ServerListLock);
56 InitSemaphore(&LIBBASE->ob_IIDTableLock);
58 SDInit();
60 LIBBASE->ob_IIDTable = NewHash(NUM_IDS, HT_STRING, LIBBASE);
61 if (LIBBASE->ob_IIDTable)
63 struct IDDescr intern_ids[] =
65 /* We must make sure that Root gets ID 0 and Meta gets ID 1 */
66 { IID_Root, &__IRoot },
67 { IID_Meta, &__IMeta },
69 #if 0
70 { IID_Method, &__IMethod },
71 { IID_Server, &__IServer },
72 { IID_Proxy, &__IProxy },
73 { IID_Interface, &__IInterface },
74 #endif
75 { NULL, NULL }
78 /* Get some IDs that are used internally */
79 if (GetIDs(intern_ids, LIBBASE))
81 if (init_rootclass(LIBBASE))
83 if (init_basemeta(LIBBASE))
85 if (init_ifmetaclass(LIBBASE))
87 LIBBASE->ob_HIDDMetaClass
88 = init_hiddmetaclass(LIBBASE);
89 if (LIBBASE->ob_HIDDMetaClass)
91 if (InitUtilityClasses(LIBBASE))
93 D(bug("OOPInit all OK\n"));
94 return (TRUE);
103 D(bug("OOPInit failed\n"));
105 return (FALSE);
108 ADD2INITLIB(OOPInit, 0);
110 /**************************
111 ** InitUtilityClasses() **
112 **************************/
113 BOOL InitUtilityClasses(struct IntOOPBase *OOPBase)
115 #if 0
116 D(bug("Initializing methodclass\n"));
117 if ((GetOBase(OOPBase)->ob_MethodClass = init_methodclass(GetOBase(OOPBase) )))
119 D(bug("Initializing serverclass\n"));
120 OOPBase->ob_ServerClass = init_serverclass((struct Library *)OOPBase);
121 if (OOPBase->ob_ServerClass)
123 D(bug("Initializing proxyclass\n"));
124 OOPBase->ob_ProxyClass = init_proxyclass((struct Library *)OOPBase);
125 if (OOPBase->ob_ProxyClass)
127 D(bug("Initializing interfaceclass\n"));
128 OOPBase->ob_InterfaceClass = init_interfaceclass((struct Library *)OOPBase);
129 if (OOPBase->ob_InterfaceClass)
131 #endif
132 D(bug("Everything initialized\n"));
133 return TRUE;
134 #if 0
139 #endif
141 return FALSE;