home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 4
/
FreshFish_May-June1994.bin
/
bbs
/
cbm
/
nduk-v37.lha
/
V37
/
include
/
libraries
/
commodities.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-11-27
|
7KB
|
201 lines
#ifndef LIBRARIES_COMMODITIES_H
#define LIBRARIES_COMMODITIES_H
/*
** $Filename: libraries/commodities.h $
** $Release: 2.04 Includes, V37.4 $
** $Revision: 37.1 $
** $Date: 91/04/15 $
**
** Commodities definitions.
**
** (C) Copyright 1988-1991 Commodore-Amiga Inc.
** All Rights Reserved
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
/*************************
* object creation macros
*************************/
#define CxFilter(d) CreateCxObj((LONG)CX_FILTER, (LONG) d, 0)
#define CxTypeFilter(type) CreateCxObj((LONG)CX_TYPEFILTER, (LONG) type, 0)
#define CxSender(port,id) CreateCxObj((LONG)CX_SEND, (LONG) port, (LONG) id)
#define CxSignal(task,sig) CreateCxObj((LONG)CX_SIGNAL,(LONG) task, (LONG) sig)
#define CxTranslate(ie) CreateCxObj((LONG)CX_TRANSLATE, (LONG) ie, 0)
#define CxDebug(id) CreateCxObj((LONG)CX_DEBUG, (LONG) id, 0)
#define CxCustom(action,id) CreateCxObj((LONG)CX_CUSTOM,(LONG)action,(LONG)id)
/***************
* Broker stuff
***************/
/* buffer sizes */
#define CBD_NAMELEN 24
#define CBD_TITLELEN 40
#define CBD_DESCRLEN 40
/* CxBroker errors */
#define CBERR_OK 0 /* No error */
#define CBERR_SYSERR 1 /* System error , no memory, etc */
#define CBERR_DUP 2 /* uniqueness violation */
#define CBERR_VERSION 3 /* didn't understand nb_VERSION */
#define NB_VERSION 5 /* Version of NewBroker structure */
struct NewBroker {
BYTE nb_Version; /* set to NB_VERSION */
BYTE *nb_Name;
BYTE *nb_Title;
BYTE *nb_Descr;
SHORT nb_Unique;
SHORT nb_Flags;
BYTE nb_Pri;
struct MsgPort *nb_Port;
WORD nb_ReservedChannel; /* plans for later port sharing */
};
/* Flags for nb_Unique */
#define NBU_DUPLICATE 0
#define NBU_UNIQUE 1 /* will not allow duplicates */
#define NBU_NOTIFY 2 /* sends CXM_UNIQUE to existing broker */
/* Flags for nb_Flags */
#define COF_SHOW_HIDE 4
/********
* cxusr
********/
/** Fake data types for system private objects */
#ifndef CX_H
typedef LONG CxObj;
typedef LONG CxMsg;
#endif
/* Pointer to Function returning Long */
typedef LONG (*PFL)();
/********************************/
/** Commodities Object Types **/
/********************************/
#define CX_INVALID 0 /* not a valid object (probably null) */
#define CX_FILTER 1 /* input event messages only */
#define CX_TYPEFILTER 2 /* filter on message type */
#define CX_SEND 3 /* sends a message */
#define CX_SIGNAL 4 /* sends a signal */
#define CX_TRANSLATE 5 /* translates IE into chain */
#define CX_BROKER 6 /* application representative */
#define CX_DEBUG 7 /* dumps kprintf to serial port */
#define CX_CUSTOM 8 /* application provids function */
#define CX_ZERO 9 /* system terminator node */
/*****************/
/** CxMsg types **/
/*****************/
#define CXM_UNIQUE (1 << 4) /* sent down broker by CxBroker() */
/* Obsolete: subsumed by CXM_COMMAND (below) */
/* Messages of this type rattle around the Commodities input network.
* They will be sent to you by a Sender object, and passed to you
* as a synchronous function call by a Custom object.
*
* The message port or function entry point is stored in the object,
* and the ID field of the message will be set to what you arrange
* issuing object.
*
* The Data field will point to the input event triggering the
* message.
*/
#define CXM_IEVENT (1 << 5)
/* These messages are sent to a port attached to your Broker.
* They are sent to you when the controller program wants your
* program to do something. The ID field identifies the command.
*
* The Data field will be used later.
*/
#define CXM_COMMAND (1 << 6)
/* ID values */
#define CXCMD_DISABLE (15) /* please disable yourself */
#define CXCMD_ENABLE (17) /* please enable yourself */
#define CXCMD_APPEAR (19) /* open your window, if you can */
#define CXCMD_DISAPPEAR (21) /* go dormant */
#define CXCMD_KILL (23) /* go away for good */
#define CXCMD_UNIQUE (25) /* someone tried to create a broker
* with your name. Suggest you Appear.
*/
#define CXCMD_LIST_CHG (27) /* Used by Exchange program. Someone */
/* has changed the broker list */
/* return values for BrokerCommand(): */
#define CMDE_OK (0)
#define CMDE_NOBROKER (-1)
#define CMDE_NOPORT (-2)
#define CMDE_NOMEM (-3)
/* IMPORTANT NOTE:
* Only CXM_IEVENT messages are passed through the input network.
*
* Other types of messages are sent to an optional port in your broker.
*
* This means that you must test the message type in your message handling,
* if input messages and command messages come to the same port.
*
* Older programs have no broker port, so processing loops which
* make assumptions about type won't encounter the new message types.
*
* The TypeFilter CxObject is hereby obsolete.
*
* It is less convenient for the application, but eliminates testing
* for type of input messages.
*/
/**********************************************************/
/** CxObj Error Flags (return values from CxObjError()) **/
/**********************************************************/
#define COERR_ISNULL 1 /* you called CxError(NULL) */
#define COERR_NULLATTACH 2 /* someone attached NULL to my list */
#define COERR_BADFILTER 4 /* a bad filter description was given */
#define COERR_BADTYPE 8 /* unmatched type-specific operation */
/*****
* ix
*****/
#define IX_VERSION 2
struct InputXpression {
UBYTE ix_Version; /* must be set to IX_VERSION */
UBYTE ix_Class; /* class must match exactly */
UWORD ix_Code;
UWORD ix_CodeMask; /* normally used for UPCODE */
UWORD ix_Qualifier;
UWORD ix_QualMask;
UWORD ix_QualSame; /* synonyms in qualifier */
};
typedef struct InputXpression IX;
/* QualSame identifiers */
#define IXSYM_SHIFT 1 /* left- and right- shift are equivalent */
#define IXSYM_CAPS 2 /* either shift or caps lock are equivalent */
#define IXSYM_ALT 4 /* left- and right- alt are equivalent */
/* corresponding QualSame masks */
#define IXSYM_SHIFTMASK (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)
#define IXSYM_CAPSMASK (IXSYM_SHIFTMASK | IEQUALIFIER_CAPSLOCK)
#define IXSYM_ALTMASK (IEQUALIFIER_LALT | IEQUALIFIER_RALT)
#define IX_NORMALQUALS 0x7FFF;/* for QualMask field: avoid RELATIVEMOUSE */
/* matches nothing */
#define NULL_IX(I) ((I)->ix_Class == IECLASS_NULL)
#endif