Replaced global Callbacks structure by appropriate glue code
generation. Removed a few unused entries in the Callout structure.

diff --git a/loader/ne/.cvsignore b/loader/ne/.cvsignore
index f3c7a7c..9a8a172 100644
--- a/loader/ne/.cvsignore
+++ b/loader/ne/.cvsignore
@@ -1 +1,3 @@
 Makefile
+module.glue.c
+segment.glue.c
diff --git a/loader/ne/Makefile.in b/loader/ne/Makefile.in
index 6c5aefc..7eb11fc 100644
--- a/loader/ne/Makefile.in
+++ b/loader/ne/Makefile.in
@@ -11,6 +11,8 @@
 	resource.c \
 	segment.c
 
+GLUE = module.c segment.c
+
 all: $(MODULE).o
 
 @MAKE_RULES@
diff --git a/loader/ne/module.c b/loader/ne/module.c
index dcf0cb7..46e2605 100644
--- a/loader/ne/module.c
+++ b/loader/ne/module.c
@@ -17,7 +17,6 @@
 #include "toolhelp.h"
 #include "file.h"
 #include "ldt.h"
-#include "callback.h"
 #include "heap.h"
 #include "task.h"
 #include "global.h"
@@ -45,6 +44,10 @@
 
 static HMODULE16 NE_GetModuleByFilename( LPCSTR name );
 
+/* ### start build ### */
+extern WORD CALLBACK NE_CallTo16_word_w(FARPROC16,WORD);
+/* ### stop build ### */
+
 /***********************************************************************
  *           NE_GetPtr
  */
@@ -1176,7 +1179,7 @@
               SELECTOROF(pTask->teb->cur_stack),
               OFFSETOF(pTask->teb->cur_stack) );
 
-        ExitThread( Callbacks->CallRegisterShortProc( &context, 0 ) );
+        ExitThread( CallTo16RegisterShort( &context, 0 ) );
     }
 
     SYSLEVEL_LeaveWin16Lock();
@@ -1209,7 +1212,7 @@
 	WARN("module %04x doesn't have a WEP\n", hModule );
 	return FALSE;
     }
-    return Callbacks->CallWindowsExitProc( WEP, WEP_FREE_DLL );
+    return NE_CallTo16_word_w( WEP, WEP_FREE_DLL );
 }
 
 
diff --git a/loader/ne/resource.c b/loader/ne/resource.c
index baf79c8..0a8cc23 100644
--- a/loader/ne/resource.c
+++ b/loader/ne/resource.c
@@ -29,6 +29,9 @@
 
 static FARPROC16 DefResourceHandlerProc = (FARPROC16)0xffffffff;
 
+/* already defined in segment.c glue code */
+extern WORD CALLBACK NE_CallTo16_word_www(FARPROC16,WORD,WORD,WORD);
+
 /***********************************************************************
  *           NE_FindNameTableId
  *
@@ -486,7 +489,7 @@
 	{
 	    if (    pTypeInfo->resloader 
                  && pTypeInfo->resloader != DefResourceHandlerProc )
-                pNameInfo->handle = Callbacks->CallResourceHandlerProc(
+                pNameInfo->handle = NE_CallTo16_word_www(
                     pTypeInfo->resloader, pNameInfo->handle, pModule->self, hRsrc );
 	    else
                 pNameInfo->handle = NE_DefResourceHandler(
diff --git a/loader/ne/segment.c b/loader/ne/segment.c
index 6da6371..2c89b2a 100644
--- a/loader/ne/segment.c
+++ b/loader/ne/segment.c
@@ -21,7 +21,6 @@
 #include "global.h"
 #include "task.h"
 #include "selectors.h"
-#include "callback.h"
 #include "file.h"
 #include "module.h"
 #include "stackframe.h"
@@ -29,15 +28,20 @@
 #include "debugtools.h"
 #include "toolhelp.h"
 
-DECLARE_DEBUG_CHANNEL(dll)
-DECLARE_DEBUG_CHANNEL(fixup)
-DECLARE_DEBUG_CHANNEL(module)
-DECLARE_DEBUG_CHANNEL(segment)
+DECLARE_DEBUG_CHANNEL(dll);
+DECLARE_DEBUG_CHANNEL(fixup);
+DECLARE_DEBUG_CHANNEL(module);
+DECLARE_DEBUG_CHANNEL(segment);
 
 #define SEL(x) ((x)|1)
 
 static void NE_FixupSegmentPrologs(NE_MODULE *pModule, WORD segnum);
 
+/* ### start build ### */
+extern WORD CALLBACK NE_CallTo16_word_ww(FARPROC16,WORD,WORD);
+extern WORD CALLBACK NE_CallTo16_word_www(FARPROC16,WORD,WORD,WORD);
+/* ### stop build ### */
+
 /***********************************************************************
  *           NE_GetRelocAddrName
  */
@@ -121,9 +125,8 @@
         DuplicateHandle( GetCurrentProcess(), hf, GetCurrentProcess(), &hFile32,
                          0, FALSE, DUPLICATE_SAME_ACCESS );
         hFile16 = FILE_AllocDosHandle( hFile32 );
- 	pSeg->hSeg = Callbacks->CallLoadAppSegProc( selfloadheader->LoadAppSeg,
-                                                    pModule->self, hFile16,
-                                                    segnum );
+ 	pSeg->hSeg = NE_CallTo16_word_www( selfloadheader->LoadAppSeg,
+                                           pModule->self, hFile16, segnum );
 	TRACE_(dll)("Ret CallLoadAppSegProc: hSeg = 0x%04x\n", pSeg->hSeg);
         _lclose16( hFile16 );
  	NtCurrentTeb()->cur_stack = oldstack;
@@ -420,7 +423,7 @@
         hFile16 = FILE_AllocDosHandle( hf );
         TRACE_(dll)("CallBootAppProc(hModule=0x%04x,hf=0x%04x)\n",
               pModule->self,hFile16);
-        Callbacks->CallBootAppProc(selfloadheader->BootApp, pModule->self,hFile16);
+        NE_CallTo16_word_ww(selfloadheader->BootApp, pModule->self,hFile16);
 	TRACE_(dll)("Return from CallBootAppProc\n");
         _lclose16(hf);
         NtCurrentTeb()->cur_stack = oldstack;
@@ -627,7 +630,7 @@
     TRACE_(dll)("Calling LibMain, cs:ip=%04lx:%04lx ds=%04lx di=%04x cx=%04x\n", 
                  CS_reg(&context), EIP_reg(&context), DS_reg(&context),
                  DI_reg(&context), CX_reg(&context) );
-    Callbacks->CallRegisterShortProc( &context, 0 );
+    CallTo16RegisterShort( &context, 0 );
     return TRUE;
 }
 
@@ -712,7 +715,7 @@
         *(DWORD *)(stack - 14) = 0;             /* dwReserved1 */
         *(WORD *) (stack - 16) = 0;             /* wReserved2 */
 
-        Callbacks->CallRegisterShortProc( &context, 16 );
+        CallTo16RegisterShort( &context, 16 );
     }
 }