1 // ScaLibrary-classic.c
6 #include <exec/types.h>
7 #include <exec/initializers.h>
9 #include <proto/exec.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
48 libBase
->lib_OpenCnt
++;
50 d1(KPrintF("%s/%s/%ld: OpenCnt=%ld\n", __FILE__
, __FUNC__
, __LINE__
, libBase
->lib_OpenCnt
));
52 if (fInitializingPlugins
)
53 ScaLibPluginOpenCount
++;
61 static AROS_LH0(struct SegList
*, sca_LibClose
,
62 struct Library
*, libBase
, 2, Scalos
67 libBase
->lib_OpenCnt
--;
69 d1(KPrintF("%s/%s/%ld: OpenCnt=%ld\n", __FILE__
, __FUNC__
, __LINE__
, libBase
->lib_OpenCnt
));
71 if (fInitializingPlugins
)
72 ScaLibPluginOpenCount
--;
79 static AROS_LH1(struct SegList
*, sca_LibExpunge
,
80 AROS_LHA(__unused
struct Library
*, __extrabase
, D0
),
81 struct Library
*, libBase
, 3, Scalos
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
);
105 static AROS_LH0(void, sca_LibNull
, __unused
struct Library
*, libBase
, 4, Scalos
)
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
,
165 struct ScalosBase
*sca_MakeLibrary(void)
167 struct Library
*newBase
= MakeLibrary(ScalosLibFunctions
,
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
;