/*
 * libOpts.h
 *
 * [Generated from libOpts, 25 September 1996]
 */

#if !defined(__CC_NORCROFT) || !defined(__arm)
  #error You must use the Norcroft ARM Compiler for Sapphire programs
#endif

#pragma include_only_once
#pragma force_top_level

#ifndef __libOpts_h
#define __libOpts_h

#ifndef __sapphire_h
  #include "sapphire.h"
#endif

/*----- Overview ----------------------------------------------------------*
 *
 * Functions provided:
 *
 *  libOpts_register
 *  libOpts_find
 *
 * Macros provided:
 *
 *  LIBOPT
 *  LOEND
 */

/* --- libOpts_register --- *
 *
 * On entry:	R0 == address of an options block
 *
 * On exit:	--
 *
 * Use:		Adds the block given to the library options.
 */

extern routine libOpts_register;

/* --- libOpts_find --- *
 *
 * On entry:	R0 == magic marker word
 *
 * On exit:	CS if found, and
 *		  R0 == address of options block
 *		else CC, and
 *		  R0 corrupted
 *
 * Use:		Tries to find an option with the given marker, which will
 *		normally be a four-character text string.  The first match
 *		found will be returned.  The options blocks are searched in
 *		reverse order of registration (i.e. blocks registered later
 *		will override blocks registered reviously).
 */

extern routine libOpts_find;

/*----- Macros ------------------------------------------------------------*/

/* --- Macro: LIBOPT --- *
 *
 * Arguments:	name == name of this options subblock (4 characters)
 *
 * Use:		Sets up an options subblock with the given name.
 */

/* --- Macro: LOEND --- *
 *
 * Arguments:	--
 *
 * Use:		Terminates a library options block.
 */

/*----- That's all, folks -------------------------------------------------*/

#endif
