/* Generated by CMunge 0.76 (10 May 2006) [with GCCSDK 4 changes r7662 at
 * /trunk/gcc4/riscos/cmunge]
 * CMunge Copyright (c) 1999-2006 Robin Watts/Justin Fletcher
 * Copyright (c) 2007-2014 GCCSDK Developers and contributors */

#ifndef _CMUNGE_MyChoices_H_
#define _CMUNGE_MyChoices_H_

#include "kernel.h"

#define CMUNGE_VERSION (76)
#define CMHG_VERSION   (531) /* Nearest equivalent version */

#define Module_Title		"MyChoices"
#define Module_Help		"MyChoices"
#define Module_VersionString	"0.01"
#define Module_VersionNumber	1
#ifndef Module_Date
#define Module_Date		"22 Jul 2026"
#endif

#ifdef __cplusplus
extern "C" {
#endif

extern const int Image__RO_Base;


/***************************************************************************
 * Function:     module_init
 * Description:  Initialise the module, setting up vectors, callbacks and
 *               any other parts of the system necessary for the module to
 *               function.
 * Parameters:   tail        = pointer to command line (control terminated)
 *               podule_base = address of podule module was started from, or
 *                             NULL if none
 *               pw          = private word for module
 * On exit:      Return NULL for successful initialisation, or a pointer to
 *               an error block if the module could not start properly.
 **************************************************************************/
_kernel_oserror *module_init(const char *tail, int podule_base, void *pw);


/***************************************************************************
 * Function:     module_final
 * Description:  Finalise the module, shutting down any systems necessary,
 *               freeing vectors and releasing workspace
 * Parameters:   fatal       = fatality indicator; 1 if fatal, 0 if
 *                             reinitialising
 *               podule_base = address of podule module was started from, or
 *                             NULL if none
 *               pw          = private word for module
 * On exit:      Return NULL for successful finalisation, or a pointer to an
 *               error block if module was not shutdown properly.
 **************************************************************************/
_kernel_oserror *module_final(int fatal, int podule_base, void *pw);


/***************************************************************************
 * Function:     module_service
 * Description:  Service call handler routine. All services which are being
 *               received by the module will be passed to this routine.
 * Parameters:   service = service call number
 *               r       = pointer to register block on entry
 *               pw      = private word for module
 * On exit:      Update register values on return by updating r.
 **************************************************************************/
void module_service(int service, _kernel_swi_regs *r, void *pw);


/***************************************************************************
 * Description:  SWI handler routine. All SWIs for this module will be
 *               passed to these routines.
 * Parameters:   number = SWI number within SWI chunk (i.e. 0 to 63)
 *               r      = pointer to register block on entry
 *               pw     = private word for module
 * On exit:      Return NULL if SWI handled sucessfully, setting return
 *               register values (r0-r9) in r.
 *               Return error_BAD_SWI for out of range SWIs.
 *               Return an error block for a custom error.
 **************************************************************************/
/* Function called to handle SWI calls */
_kernel_oserror *swi_undefined(int number, _kernel_swi_regs *r, void *pw);
/* Functions called to handle particular SWI calls */
_kernel_oserror *swi_fileopen(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_fileclose(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setint(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setstring(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_readint(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_readstring(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_exist(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_delete(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_print(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_filesafe(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setf32(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setv32(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setf64(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setv64(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setb40(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getf32(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getv32(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getf64(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getv64(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getb40(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_getmem(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_setmem(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_size(int number, _kernel_swi_regs *r, void *pw);
_kernel_oserror *swi_enumerate(int number, _kernel_swi_regs *r, void *pw);
/* SWI number definitions */
#define MyChoices_00 (0x0005ab80)
#undef MyChoices_Open
#undef XMyChoices_Open
#define MyChoices_Open            (0x0005ab80)
#define XMyChoices_Open           (0x0007ab80)
#undef MyChoices_Close
#undef XMyChoices_Close
#define MyChoices_Close           (0x0005ab81)
#define XMyChoices_Close          (0x0007ab81)
#undef MyChoices_SetInt
#undef XMyChoices_SetInt
#define MyChoices_SetInt          (0x0005ab82)
#define XMyChoices_SetInt         (0x0007ab82)
#undef MyChoices_SetString
#undef XMyChoices_SetString
#define MyChoices_SetString       (0x0005ab83)
#define XMyChoices_SetString      (0x0007ab83)
#undef MyChoices_GetInt
#undef XMyChoices_GetInt
#define MyChoices_GetInt          (0x0005ab84)
#define XMyChoices_GetInt         (0x0007ab84)
#undef MyChoices_GetString
#undef XMyChoices_GetString
#define MyChoices_GetString       (0x0005ab85)
#define XMyChoices_GetString      (0x0007ab85)
#undef MyChoices_Exist
#undef XMyChoices_Exist
#define MyChoices_Exist           (0x0005ab86)
#define XMyChoices_Exist          (0x0007ab86)
#undef MyChoices_Delete
#undef XMyChoices_Delete
#define MyChoices_Delete          (0x0005ab87)
#define XMyChoices_Delete         (0x0007ab87)
#undef MyChoices_Print
#undef XMyChoices_Print
#define MyChoices_Print           (0x0005ab88)
#define XMyChoices_Print          (0x0007ab88)
#undef MyChoices_Safe
#undef XMyChoices_Safe
#define MyChoices_Safe            (0x0005ab89)
#define XMyChoices_Safe           (0x0007ab89)
#undef MyChoices_SetF32
#undef XMyChoices_SetF32
#define MyChoices_SetF32          (0x0005ab8a)
#define XMyChoices_SetF32         (0x0007ab8a)
#undef MyChoices_SetV32
#undef XMyChoices_SetV32
#define MyChoices_SetV32          (0x0005ab8b)
#define XMyChoices_SetV32         (0x0007ab8b)
#undef MyChoices_SetF64
#undef XMyChoices_SetF64
#define MyChoices_SetF64          (0x0005ab8c)
#define XMyChoices_SetF64         (0x0007ab8c)
#undef MyChoices_SetV64
#undef XMyChoices_SetV64
#define MyChoices_SetV64          (0x0005ab8d)
#define XMyChoices_SetV64         (0x0007ab8d)
#undef MyChoices_SetBBC
#undef XMyChoices_SetBBC
#define MyChoices_SetBBC          (0x0005ab8e)
#define XMyChoices_SetBBC         (0x0007ab8e)
#undef MyChoices_GetF32
#undef XMyChoices_GetF32
#define MyChoices_GetF32          (0x0005ab8f)
#define XMyChoices_GetF32         (0x0007ab8f)
#undef MyChoices_GetV32
#undef XMyChoices_GetV32
#define MyChoices_GetV32          (0x0005ab90)
#define XMyChoices_GetV32         (0x0007ab90)
#undef MyChoices_GetF64
#undef XMyChoices_GetF64
#define MyChoices_GetF64          (0x0005ab91)
#define XMyChoices_GetF64         (0x0007ab91)
#undef MyChoices_GetV64
#undef XMyChoices_GetV64
#define MyChoices_GetV64          (0x0005ab92)
#define XMyChoices_GetV64         (0x0007ab92)
#undef MyChoices_GetBBC
#undef XMyChoices_GetBBC
#define MyChoices_GetBBC          (0x0005ab93)
#define XMyChoices_GetBBC         (0x0007ab93)
#undef MyChoices_GetMem
#undef XMyChoices_GetMem
#define MyChoices_GetMem          (0x0005ab94)
#define XMyChoices_GetMem         (0x0007ab94)
#undef MyChoices_SetMem
#undef XMyChoices_SetMem
#define MyChoices_SetMem          (0x0005ab95)
#define XMyChoices_SetMem         (0x0007ab95)
#undef MyChoices_EstimatedSize
#undef XMyChoices_EstimatedSize
#define MyChoices_EstimatedSize   (0x0005ab96)
#define XMyChoices_EstimatedSize  (0x0007ab96)
#undef MyChoices_Enumerate
#undef XMyChoices_Enumerate
#define MyChoices_Enumerate       (0x0005ab97)
#define XMyChoices_Enumerate      (0x0007ab97)

/* Special error for 'SWI values out of range for this module' */
#define error_BAD_SWI ((_kernel_oserror *) -1)

#ifdef __cplusplus
}
#endif

#endif
