home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 3 / MacMania 3.toast / Tools&Utilities / Workshop v1.0 / Externals / •Code for Externals / WorkshopModule.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-13  |  1.9 KB  |  75 lines  |  [TEXT/MMCC]

  1. /******************************************************************************
  2.     File:        WorkshopModule.c
  3.  
  4.     Contains:    This file contains the traps for calling functions 
  5.                 within Image Workshop.
  6.  
  7.     Written by:    Brian Powell
  8.  
  9.     Copyright:    © 1994 by Brian Powell, all rights reserved.
  10.  
  11.     WARNING: DO NOT ALTER THIS FILE, IT WILL CERTAINLY GAURANTEE THAT YOUR 
  12.              MODULE WILL NOT WORK WITH IMAGE WORKSHOP.
  13.  
  14.  ******************************************************************************/
  15. // Include Files
  16. #include "WorkshopModule.h"
  17.  
  18. /******************************************************************************
  19.  * main
  20.  *
  21.  * This is the entry point of the external code.  Here, we figure out where
  22.  * our code will go.
  23.  ******************************************************************************/
  24.  
  25. pascal short main(short command, ExternalProcPtrs functions, Ptr data1, Ptr data2, 
  26.             Handle *myData)
  27. {
  28.     short error=0;
  29.     
  30.     // Set up the registers
  31. #ifdef __MWERKS__
  32.     long oldA4=SetCurrentA4();    
  33. #else
  34.     RememberA0();
  35.     SetUpA4();
  36. #endif 
  37.     
  38.     // Figure out what we're supposed to do
  39.     switch(command) {
  40.         case kInitCode:
  41.             error = ModuleInit(functions, data1, data2, myData);
  42.             break;
  43.         case kReadFile:
  44.             error = ModuleRead(functions, data1, data2, myData);
  45.             break;
  46.         case kSaveFile:
  47.             error = ModuleSave(functions, data1, data2, myData);
  48.             break;
  49.         case kExecuteCode:
  50.             error = ModuleExecute(functions, data1, data2, myData);
  51.             break;
  52.         case kDispose:
  53.             error = ModuleDispose(functions, data1, data2, myData);
  54.             break;
  55.         case kProcessTask:
  56.             error = ModuleProcessTask(functions, data1, data2, myData);
  57.             break;
  58.         case kCancelTask:
  59.             error = ModuleCancelTask(functions, data1, data2, myData);
  60.             break;
  61.         default:
  62.             error = kCommandNotImplemented;
  63.             break;
  64.     }
  65.     
  66.     // Restore the registers
  67. #ifdef __MWERKS__
  68.     SetA4(oldA4);                //    restore A4 to saved value before returning    
  69. #else
  70.     RestoreA4();
  71. #endif 
  72.     
  73.     // Return any errors
  74.     return (error);
  75. }