//****************
//
// Name : Dispatcher.C
//
//****************


//******** Header Files

#ifndef INTUITION_GADGETCLASS_H
#include <intuition/gadgetclass.h>
#endif

#ifndef  CLIB_ALIB_PROTOS_H
#include <clib/alib_protos.h>
#endif

#include "Method.h"
#include "Dispatcher.H"

//******** Public functions

ULONG __saveds __asm MPMG_Dispatcher(register __a0 Class *cl,
				     register __a2 Object *o,
				     register __a1 Msg msg)
{
  ULONG rc;

  switch( msg->MethodID ) {
    case OM_NEW:
      rc = MPMG_NEW(cl, o, (struct opSet *)msg );
      break;
    case OM_DISPOSE:
      rc = MPMG_DISPOSE( cl, o, msg );
      break;
    case OM_SET:
      rc = MPMG_SET(cl, o, (struct opSet *)msg );
      break;
    case OM_GET:
      rc = MPMG_GET( cl, o, (struct opGet *)msg );
      break;
    case OM_UPDATE:
      rc = MPMG_UPDATE( cl, o, (struct opUpdate *)msg );
      break;
    case OM_NOTIFY:
      rc = MPMG_NOTIFY( cl, o, (struct opUpdate *)msg );
      break;
    case GM_HITTEST:
      rc = GMR_GADGETHIT;
      break;
    case GM_RENDER:
      rc = MPMG_RENDER( cl, (struct Gadget *)o, (struct gpRender *)msg );
      break;
    case GM_GOACTIVE:
      rc = MPMG_GOACTIVE( cl, o, (struct gpInput *)msg );
      break;
    case GM_HANDLEINPUT:
      rc = MPMG_HANDLEINPUT( cl, o, (struct gpInput *)msg );
      break;
    case GM_GOINACTIVE:
      rc = MPMG_GOINACTIVE( cl, o, (struct gpGoInactive *)msg );
      break;
    default:
      rc = DoSuperMethodA(cl, o, msg);
      break;
  } // switch

  return rc;
} // MPMG_Dispatcher

//******** End of file

