forwarding build fix when MUIA_Scrollgroup_AutoBars is defined (NicJA).
[AROS-Contrib.git] / scalos / main / ScaLibrary-aros.c
blobb7dc2ff6883fca91b7be1b3d3f97acc16424cbad
1 // ScaLibrary-classic.c
2 // $Date$
3 // $Revision$
6 #include <exec/types.h>
7 #include <exec/initializers.h>
9 #include <proto/exec.h>
10 #include "debug.h"
11 #include <proto/scalos.h>
14 #include "scalos_structures.h"
15 #include "functions.h"
16 #include "Variables.h"
17 #include "ScaLibrary.h"
18 #include "Scalos_rev.h"
21 //===== Library initialization functions ======================
23 static AROS_LD1 (struct Library *, sca_LibOpen,
24 AROS_LPA (__unused ULONG, version, D0),
25 struct Library *, libBase, 1, Scalos
27 static AROS_LD0 (struct SegList *, sca_LibClose,
28 struct Library *, libBase, 2, Scalos
30 static AROS_LD1 (struct SegList *, sca_LibExpunge,
31 AROS_LPA(__unused struct Library *, __extrabase, D0),
32 struct Library *, libBase, 3, Scalos
34 static AROS_LD0 (void, sca_LibNull,
35 __unused struct Library *, libBase, 4, Scalos
39 static AROS_LH1(struct Library *, sca_LibOpen,
40 AROS_LHA(__unused ULONG, version, D0),
41 struct Library *, libBase, 1, Scalos
44 AROS_LIBFUNC_INIT
46 (void) version;
48 libBase->lib_OpenCnt++;
50 d1(KPrintF("%s/%s/%ld: OpenCnt=%ld\n", __FILE__, __FUNC__, __LINE__, libBase->lib_OpenCnt));
52 if (fInitializingPlugins)
53 ScaLibPluginOpenCount++;
55 return libBase;
57 AROS_LIBFUNC_EXIT
61 static AROS_LH0(struct SegList *, sca_LibClose,
62 struct Library *, libBase, 2, Scalos
65 AROS_LIBFUNC_INIT
67 libBase->lib_OpenCnt--;
69 d1(KPrintF("%s/%s/%ld: OpenCnt=%ld\n", __FILE__, __FUNC__, __LINE__, libBase->lib_OpenCnt));
71 if (fInitializingPlugins)
72 ScaLibPluginOpenCount--;
74 return NULL;
76 AROS_LIBFUNC_EXIT
79 static AROS_LH1(struct SegList *, sca_LibExpunge,
80 AROS_LHA(__unused struct Library *, __extrabase, D0),
81 struct Library *, libBase, 3, Scalos
84 AROS_LIBFUNC_INIT
86 d1(KPrintF("%s/%s/%ld: libBase=%08lx OpenCnt=%ld\n", __FILE__, __FUNC__, __LINE__, libBase, libBase->lib_OpenCnt));
88 if (0 == libBase->lib_OpenCnt)
90 ULONG size = libBase->lib_NegSize + libBase->lib_PosSize;
91 UBYTE *ptr = (UBYTE *) libBase - libBase->lib_NegSize;
93 // remove library from exec lib list
94 Remove(&libBase->lib_Node);
96 FreeMem(ptr, size);
99 return NULL;
101 AROS_LIBFUNC_EXIT
105 static AROS_LH0(void, sca_LibNull, __unused struct Library *, libBase, 4, Scalos)
107 AROS_LIBFUNC_INIT
109 (void) libBase;
111 AROS_LIBFUNC_EXIT
115 //===== Library function list =================================
117 APTR ScalosLibFunctions[] =
119 Scalos_1_sca_LibOpen,
120 Scalos_2_sca_LibClose,
121 Scalos_3_sca_LibExpunge,
122 Scalos_4_sca_LibNull,
124 ScalosBase_0_sca_WBStart,
125 ScalosBase_0_sca_SortNodes,
126 ScalosBase_0_sca_NewAddAppIcon,
127 ScalosBase_0_sca_RemoveAppObject,
128 ScalosBase_0_sca_NewAddAppWindow,
129 ScalosBase_0_sca_NewAddAppMenuItem,
130 ScalosBase_0_sca_AllocStdNode,
131 ScalosBase_0_sca_AllocNode,
132 ScalosBase_0_sca_FreeNode,
133 ScalosBase_0_sca_FreeAllNodes,
134 ScalosBase_0_sca_MoveNode,
135 ScalosBase_0_sca_SwapNodes,
136 ScalosBase_0_sca_OpenIconWindow,
137 ScalosBase_0_sca_LockWindowList,
138 ScalosBase_0_sca_UnLockWindowList,
139 ScalosBase_0_sca_AllocMessage,
140 ScalosBase_0_sca_FreeMessage,
141 ScalosBase_0_sca_InitDrag,
142 ScalosBase_0_sca_EndDrag,
143 ScalosBase_0_sca_AddBob,
144 ScalosBase_0_sca_DrawDrag,
145 ScalosBase_0_sca_UpdateIcon,
146 ScalosBase_0_sca_MakeWBArgs,
147 ScalosBase_0_sca_FreeWBArgs,
148 ScalosBase_0_sca_RemapBitmap,
149 ScalosBase_0_sca_ScreenTitleMsg,
150 ScalosBase_0_sca_MakeScalosClass,
151 ScalosBase_0_sca_FreeScalosClass,
152 ScalosBase_0_sca_NewScalosObject,
153 ScalosBase_0_sca_DisposeScalosObject,
154 ScalosBase_0_sca_ScalosControl,
155 ScalosBase_0_sca_GetDefIconObject,
156 ScalosBase_0_sca_OpenDrawerByName,
157 in_0_sca_CountWBArgs,
158 ScalosBase_0_sca_GetDefIconObjectA,
159 ScalosBase_0_sca_LockDrag,
160 ScalosBase_0_sca_UnlockDrag,
162 (APTR) ~0
165 struct ScalosBase *sca_MakeLibrary(void)
167 struct Library *newBase = MakeLibrary(ScalosLibFunctions,
168 NULL,
169 NULL,
170 sizeof(struct ScalosBase), NULL);
172 newBase->lib_Node.ln_Type = NT_LIBRARY;
173 newBase->lib_Node.ln_Name = (STRPTR) scalosLibName;
174 newBase->lib_Flags = LIBF_SUMUSED | LIBF_CHANGED;
175 newBase->lib_Version = VERSION;
176 newBase->lib_Revision = REVISION;
177 newBase->lib_IdString = (STRPTR) libIdString;
178 ((struct ScalosBase *)newBase)->scb_Revision = ScalosRevision;
180 return (struct ScalosBase *)newBase;