[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

	IFND LIBRARIES_COMMODITIES_I
LIBRARIES_COMMODITIES_I	SET 1
**   $Filename: libraries/commodities.i $
**   $Release: 2.04 Includes, V37.4 $
**   $Revision: 37.0 $
**   $Date: 91/04/15 $
**
**   Commodities definitions
**
**   (C) Copyright 1988-1999 Amiga, Inc.
**	All Rights Reserved
*-----------------------------------------------------------*

	IFND EXEC_TYPES_I
	INCLUDE "exec/types.i"

	ENDC
	IFND DEVICES_INPUTEVENT_I
	INCLUDE "devices/inputevent.i"
	ENDC


***************
* Broker stuff
***************

* buffer sizes
CBD_NAMELEN	EQU	24
CBD_TITLELEN	EQU	40
CBD_DESCRLEN	EQU	40

* CxBroker errors
CBERR_OK	EQU	0	 ; No error
CBERR_SYSERR	EQU	1	 ; System error , no memory, etc
CBERR_DUP	EQU	2	 ; uniqueness violation
CBERR_VERSION	EQU	3	 ; didn't understand nb_VERSION
NB_VERSION 	EQU	5        ; Version of NewBroker structure

	STRUCTURE NewBroker,0
	   BYTE     	nb_Version         ; set to NB_VERSION
	   BYTE		nb_Reserve1	; for alignment
	   APTR     	nb_Name
	   APTR     	nb_Title
	   APTR     	nb_Descr
	   WORD    	nb_Unique
	   WORD		nb_Flags
	   BYTE 	nb_Pri
	   BYTE		nb_Reserve2	; for alignment
	   APTR		nb_Port
	   WORD     	nb_ReservedChannel 	;plans for later port sharing

***********************
* Flags for nb_Unique
***********************

NBU_DUPLICATE 	EQU	   0
NBU_UNIQUE 	EQU	   1        ; will not allow duplicates
NBU_NOTIFY 	EQU	   2        ; sends CXM_UNIQUE to existing broker

* Flags for nb_Flags
COF_SHOW_HIDE 	EQU	   4

********
* cxusr
********

********************************
** Commodities Object Types   **
********************************
CX_INVALID 	EQU	0     ; not a valid object (probably null)
CX_FILTER 	EQU	1     ; input event messages only
CX_TYPEFILTER 	EQU	2     ; filter on message type
CX_SEND 	EQU	3     ; sends a message
CX_SIGNAL 	EQU	4     ; sends a signal
CX_TRANSLATE 	EQU	5     ; translates IE into chain
CX_BROKER 	EQU	6     ; application representative
CX_DEBUG 	EQU	7     ; dumps kprintf to serial port
CX_CUSTOM 	EQU	8     ; application provids function
CX_ZERO 	EQU	9     ; system terminator node

*****************
** CxMsg types **
*****************
CXM_UNIQUE 	EQU	   $10 ; (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.

CXM_IEVENT 	EQU	   $20 ;(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.
*

CXM_COMMAND 	EQU	   $40 ;(1 << 6)

* ID values

CXCMD_DISABLE 	EQU	15  ; please disable yourself
CXCMD_ENABLE 	EQU	17  ; please enable yourself
CXCMD_APPEAR 	EQU	19  ; open your window, if you can
CXCMD_DISAPPEAR EQU	21  ; go dormant
CXCMD_KILL 	EQU	23  ; go away for good
CXCMD_UNIQUE 	EQU	25  ; someone tried to create a brok
                            ; with your name.  Suggest you Appear.
CXCMD_LIST_CHG 	EQU	27  ; Used by Exchange program. Someone
                            ; has changed the broker list

* return values for BrokerCommand()
CMDE_OK 	EQU        0
CMDE_NOBROKER 	EQU	  -1
CMDE_NOPORT 	EQU	  -2
CMDE_NOMEM 	EQU	  -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())	**
**********************************************************

COERR_ISNULL		EQU	1  ; you called CxError(NULL)
COERR_NULLATTACH	EQU	2  ; someone attached NULL to my list
COERR_BADFILTER	EQU	4  ; a bad filter description was given
COERR_BADTYPE		EQU	8  ; unmatched type-specific operation


******************************
* Input Expression structure *
******************************

IX_VERSION	EQU	   2

	STRUCTURE InputXpression,0

	   UBYTE   ix_Version	   ; must be set to IX_VERSION
	   UBYTE   ix_Class	   ; class must match exactly

	   UWORD   ix_Code	   ; Bits that we want

	   UWORD   ix_CodeMask	   ; Set bits here to indicate
				   ; which bits in ix_Code are
				   ; don't care bits.

	   UWORD   ix_Qualifier    ; Bits that we want

	   UWORD   ix_QualMask     ; Set bits here to indicate
        	                   ; which bits in ix_Qualifier
				   ; are don't care bits

	   UWORD   ix_QualSame	  ; synonyms in qualifier

	LABEL	ix_SIZEOF

* QualSame identifiers
IXSYM_SHIFT	EQU	  1	; left- and right- shift are equivalent
IXSYM_CAPS	EQU	  2	; either shift or caps lock are equivalent
IXSYM_ALT	EQU	  4	; left- and right- alt are equivalent

* corresponding QualSame masks
IXSYM_SHIFTMASK EQU	 IEQUALIFIER_LSHIFT!IEQUALIFIER_RSHIFT
IXSYM_CAPSMASK		EQU	 IXSYM_SHIFTMASK!IEQUALIFIER_CAPSLOCK
IXSYM_ALTMASK	EQU	 IEQUALIFIER_LALT!IEQUALIFIER_RALT

IX_NORMALQUALS		EQU	  $7FFF  ;for QualMask field: avoid RELATIVEMOUSE

	ENDC	; LIBRARIES_COMMODITIES_I