//****************
//
// Name : Promise.c
//
//****************


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

//** OS3.1 Definitions
#include <intuition/gadgetclass.h>

//** OS3.1 function Prototypes
#include <clib/alib_protos.h>
#include <clib/intuition_protos.h>
#include <clib/exec_protos.h>
#include <clib/utility_protos.h>

//**OS3.1 Inline code
#include <pragmas/intuition_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <pragmas/utility_pragmas.h>

//** Allication header files
#include "librarian.h"
#include "MPMG.h"
#include "Promise.h"

typedef long BPTR;
#include "Tree.h"


//********

void CallPromise(Object *o, struct GadgetInfo *gi, MPMGData *inst, MPMMItem *mi) {
  struct TagItem tags[2];

  Forbid();
  if (ITEM_IS_PROM(mi)) {
    mi->Type=MIT_PROMR;
    mi->SubMenu=NULL;
    MPMG_SetTagArg(tags[0], MPMG_PromiseRequest, mi->UserData);
    MPMG_SetTagArg(tags[1], TAG_END, NULL);
    (void)DoMethod( o, OM_NOTIFY, tags, gi, 0);
  }
  Permit();
} // CallPromise


void CancelPromise(Object *o, struct GadgetInfo *gi, MPMMItem *mi) {
  struct TagItem tags[2];

  Forbid();
  if ( ITEM_IS_PROMR(mi) || ITEM_IS_PROMH(mi) ) {
    mi->Type=MIT_PROM;
    mi->SubMenu=NULL;
    MPMG_SetTagArg(tags[0], MPMG_PromiseCancel, mi->UserData );
    MPMG_SetTagArg(tags[1], TAG_END, NULL);
    (void)DoMethod( o, OM_NOTIFY, &tags, gi, 0);
  }
  Permit();
} // CancelPromise


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

