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

TABLE OF CONTENTS

commodities.library/ActivateCxObj
commodities.library/AddIEvents
commodities.library/AttachCxObj
commodities.library/ClearCxObjError
commodities.library/CreateCxObj
commodities.library/CxBroker
commodities.library/CxMsgData
commodities.library/CxMsgID
commodities.library/CxMsgType
commodities.library/CxObjError
commodities.library/CxObjType
commodities.library/DeleteCxObj
commodities.library/DeleteCxObjAll
commodities.library/DisposeCxMsg
commodities.library/DivertCxMsg
commodities.library/EnqueueCxObj
commodities.library/InsertCxObj
commodities.library/InvertKeyMap
commodities.library/ParseIX
commodities.library/RemoveCxObj
commodities.library/RouteCxMsg
commodities.library/SetCxObjPri
commodities.library/SetFilter
commodities.library/SetFilterIX
commodities.library/SetTranslate
commodities.library/ActivateCxObj           commodities.library/ActivateCxObj

   NAME
	ActivateCxObj -- change the activation state of a commodity object.
			 (V36)

   SYNOPSIS
	previous = ActivateCxObj(co,true);
				 A0 D0

	LONG ActivateCxObj(CxObj *,LONG);

   FUNCTION
	Commodity objects of all types maintain an "activation state".
	If an object is "active", then it performs its particular action
	whenever a commodity message arrives. If the object is "inactive"
	no action is taken, and the message goes on to its next destination.

	All objects are created in the "active" state except brokers
	which are created "inactive". Thus, after you create your
	broker and hang a tree of objects off of it, you must remember
	to use this function to activate it. This causes it to divert all
	messages to your tree of objects.

	This function activates 'co' if 'true' is different than 0. and
	deactivates it otherwise. The previous activation state is
	returned.

   INPUTS
	co - the commodity object to affect
	true - 0 to deactivate the object, anything else to activate it

   RESULTS
	previous - the previous activation state: 0 if the object was
		   inactive, anything else if the object was active

   SEE ALSO
	CxBroker()

commodities.library/AddIEvents                 commodities.library/AddIEvents

   NAME
	AddIEvents -- add input events to commodities' input stream. (V36)

   SYNOPSIS
	AddIEvents(events)
		   A0

	VOID AddIEvents(struct InputEvent *);

   FUNCTION
	This function adds a null-terminated linked list of input events to
	the input stream of commodities. It is a touch easier than using the
	input device directly.

	The contents of the input events are copied into commodity
	messages, so they may be disposed of as soon as this call returns.

	The messages are initially routed to the first broker in the
	Commodities Object List.

   INPUTS
	events - the list of input events to add

   SEE ALSO
	cx_lib/FreeIEvents()

commodities.library/AttachCxObj               commodities.library/AttachCxObj

   NAME
	AttachCxObj -- attach a commodity object to the end of an existing
		       list of objects. (V36)

   SYNOPSIS
	AttachCxObj(headObj,co);
		    A0      A1

	VOID AttachCxObj(CxObj *,CxObj *);

   FUNCTION
	Adds 'co' to the list of objects pointed to by 'headObj'. The
	new object is added at the end of the list.

   INPUTS
	headObj - pointer to a list of objects
	co - the object to add to the list

   RESULTS
	If 'co' is NULL, this function will record that fact in the
	internal accumulated error of 'headObj'. This error record
	can be retrieved using CxObjError() and cleared using
	ClearCxObjError().

   SEE ALSO
	CxObjError(), ClearCxObjError()

commodities.library/ClearCxObjError       commodities.library/ClearCxObjError

   NAME
	ClearCxObjError -- clear the accumulated error value of a commodity
			   object. (V36)

   SYNOPSIS
	ClearCxObjError(co);
       		A0

	VOID ClearCxObjError(CxObj *);

   FUNCTION
	This function clears the accumulated error value of commodity object
	'co'.

	It is unwise to do this to a filter if COERR_BADFILTER is set.
	This will fool commodities into thinking the filter is OK. Set
	another valid filter, or leave the error value alone.

   INPUTS
	co - the object to affect

   SEE ALSO
	CxObjError()

commodities.library/CreateCxObj               commodities.library/CreateCxObj

   NAME
	CreateCxObj -- create a new commodity object. (V36)

   SYNOPSIS
	co = CreateCxObj(type,arg1,arg2);
			 D0   A0   A1

	CxObj *CreateCxObj(ULONG,LONG,LONG);

   FUNCTION
	This function creates a commodity object of type 'type'. It is not
	proper to call this function directly. Each object creation routine
	except CxBroker() is defined as a macro in <libraries/commodities.h>
	These are independently documented.

	All functions which operate on a commodity object are made with
	a reference to the thirty-two bit value returned by this function
	(or by CxBroker()).

   INPUTS
	type - the type of object to create as defined in
	       <libraries/commodities.h>
       arg1 - first argument, meaning depends on 'type'
	arg2 - second argument, meaning depends on 'type'

   RESULTS
	co - a pointer to the new object or NULL if it could not be created.
	     A NULL return indicates typically a lack of system memory. Minor
	     problems in creating an object, such as providing a bad filter
	     description to cx_lib/CxFilter(), typically don't cause failure,
	     but are recorded in an internal error field in the new object
	     which can be accessed via CxObjError().

   SEE ALSO
	CxObjError(), cx_lib/CxFilter(), cx_lib/CxSender(),
	cx_lib/CxSignal(), cx_lib/CxTranslate(), cx_lib/CxDebug(),
	cx_lib/CxCustom(), CxBroker()

commodities.library/CxBroker                     commodities.library/CxBroker

   NAME
	CxBroker -- create a commodity broker. (V36)

   SYNOPSIS
	broker = CxBroker(nb,error);
			  A0 D0

	CxObj *CxBroker(struct NewBroker *,LONG *);

   FUNCTION
	This function creates a broker from the specification found in the
	NewBroker structure pointed to by 'nb'. The purpose and meaning of the
	fields of the NewBroker structure are described below. Also see
	<libraries/commodities.h> for more info.

	struct NewBroker
	{
           BYTE            nb_Version;
           BYTE           *nb_Name;
           BYTE           *nb_Title;
           BYTE           *nb_Descr;
           SHORT           nb_Unique;
           BYTE            nb_Pri;
	    struct MsgPort *nb_Port;
	    WORD            nb_ReservedChannel;
	};

	nb_Version
	This is the way that future versions of commodities.library
	can identify which version of the NewBroker structure you are using.
	This should be set to NB_VERSION, defined in <libraries/commodities.h>

	nb_Name
	This is the name of the broker. This name is used to find the broker
	in the Commodities Object List and is the name shown in the list
	gadget of the Exchange program. The name string is copied in the
	broker object upon creation, so this string can be discarded right
	after CxBroker() returns. The maximum length of the name string is
	defined by a constant in <libraries/commodities.h>.

	nb_Title, nb_Descr
	These are two strings which appear to the user in the Exchange
	program and describe the application the broker is representing.
	Note that these strings are copied into the broker object.
	The maximum length of these strings that will be recognized are
	defined by constants in <libraries/commodities.h>.

	nb_Unique
	This field indicates what should happen if a broker of the same name
	(nb_Name) already exists in the Commodities Object List. Constants
	in <libraries/commodities.h> allow the caller to specify whether
	another broker is to be created, and whether any existing broker of
	the same name should be notified that an attempt at creating a
	duplicate has been made.

	nb_Pri
	This specifies with what priority the new broker is to be inserted
	within the Commodities Object List. Higher priority nodes appear
	earlier in a list. See <libraries/commodities.h> for guidelines for
	priorities of different types of applications. It is strongly
	recommended that the ToolTypes environment of an application be used
	to allow the end-user to set the priority of the broker.

   INPUTS
	nb - an initialized NewBroker structure
	error - a pointer to a longword where to store a failure code, this
		may be NULL

   RESULTS
	broker - a pointer to the broker object or NULL upon failure. If the
		 'error' is not NULL, a further diagnostic code is placed at
		 that address. Error codes are in <libraries/commodities.h> and
		 include:

			CBERR_OK
    			No problems; broker created OK.

 			CBERR_SYSERR
    			System problems, not your fault. Sign of low memory or
			big problems.

			CBERR_DUP
			The nb_Unique field specified that only one broker of
			'nb_Name' should be allowed, and one already exists.

			CBERR_VERSION
			The version specified in 'nb_Version' is unknown to the
			library.

   SEE ALSO
	SetCxObjPri(), <libraries/commodities.h>

commodities.library/CxMsgData                   commodities.library/CxMsgData

   NAME
	CxMsgData -- obtain a pointer to a commodity message's data area. (V36)

   SYNOPSIS
	data = CxMsgData(cxm);
			 A0

	UBYTE *CxMsgData(struct CxMsg *);

   FUNCTION
	Most commodity messages contain meaningful data, such as an InputEvent
	structure. This function returns a pointer to this data.

	You may get a commodity message from a synchronous (custom object) or
	asynchronous (sender object) source. In the second case, 'data' is
	not valid after you have replied to the message.

   INPUTS
	cxm - the commodity message to get the data pointer from

   RESULTS
	data - a pointer to the message's data, or NULL if 'cxm' is NULL.

   SEE ALSO
	cx_lib/CxSender(), cx_lib/CxCustom()

commodities.library/CxMsgID                       commodities.library/CxMsgID

   NAME
	CxMsgID -- obtain the ID of a commodity message. (V36)

   SYNOPSIS
	id = CxMsgID(cxm);
		     A0

	LONG CxMsgID(struct CxMsg *);

   FUNCTION
	This function returns the value associated with the cause or source
	of the commodity message 'cxm'. Values are provided by the application
	when a sender or custom object is created.

   INPUTS
	cxm - the commodity message to inquire about

   RESULTS
	id - if not specified by the application, the ID value of a
            commodity message will be 0. It is suggested that using
	     non-zero values in your program as a rule may identify some
	     possible errors.

   SEE ALSO
	cx_lib/CxSender(), cx_lib/CxCustom()

commodities.library/CxMsgType                   commodities.library/CxMsgType

   NAME
	CxMsgType -- obtain the type of a commodity message. (V36)

   SYNOPSIS
	type = CxMsgType(cxm);
			 A0

	ULONG CxMsgType(struct CxMsg *);

   FUNCTION
	This function returns the type of a commodity message. Possible values
	of 'type' are defined in <libraries/commodities.h>. Most commodity
	messages are of type CXM_IEVENT.

   INPUTS
	cxm - the commodity message to inquire about

   RESULTS
   	type - the type of the commodity message, possible values are defined
	       in <libraries/commodities.h>

commodities.library/CxObjError                 commodities.library/CxObjError

   NAME
	CxObjError -- obtain a commodity object's accumulated error. (V36)

   SYNOPSIS
	error = CxObjError(co);
			   A0

	LONG CxObjError(CxObj *);

   FUNCTION
	When a function acting on an object fails, it records the failure
	in the object. This function returns the accumulated error value.
	The values are represented by flag bits defined in
	<libraries/commodities.h>. Several errors may be recorded by multiple
	bits in 'error'.

	The currently defined errors are:

	COERR_ISNULL
	  The value of parameter 'co' was in fact NULL. This error
	  means "the problem with the object you inquire about is
	  that it failed to be created."

  	COERR_NULLATTACH
	  Using the commodities' list manipulation functions, an attempt was
	  made to add a NULL object to the list belonging to 'co'. This allows
	  a line of code as follows to exist in an error-tolerant program:

	    AttachCxObj(filter,CxSender(myport,MY_ID));

  	COERR_BADFILTER
	  The most recent filter specification for a filter object
	  was faulty. This happens if no sense can be made out of a
	  description string, or if an input expression (IX) has an
	  invalid format or version byte. When this bit is set in a
	  filter's error field, the filter will match nothing, but this
	  is not the proper way to "turn off" a filter, use ActivateCxObj().

  	COERR_BADTYPE
	  A type specific operation, such as SetFilterIX(), was called
	  for object 'co', but 'co' isn't of the proper type.

   INPUTS
	co - the commodity object to get the accumulated error from

   RESULTS
	error - the accumulated error

   SEE ALSO
	SetFilter(), SetFilterIX(), AttachCxObj(), ActivateCxObj(),
	ClearCxObjError()

commodities.library/CxObjType                   commodities.library/CxObjType

   NAME
	CxObjType -- obtain the type of a commodity object. (V36)

   SYNOPSIS
	type = CxObjType(co);
			 A0

	ULONG CxObjType(CxObj *);

   FUNCTION
	This function should not really be necessary. It returns
	the type of a commodity object, which you should already
	know, since you created it in the first place.

   INPUTS
	co - the commodity object to inquire about

   RESULTS
	type - the type of the commodity object, possible values are
	       defined in <libraries/commodities.h>

   SEE ALSO
	CreateCxObj()

commodities.library/DeleteCxObj               commodities.library/DeleteCxObj

   NAME
	DeleteCxObj -- delete a commmodity object. (V36)

   SYNOPSIS
	DeleteCxObj(co);
	            A0

	VOID DeleteCxObj(CxObj *);

   FUNCTION
	Deletes a commodity object of any type. If the object
	is linked into a list, it is first removed. Note that
	the handle 'co' is invalid after this function is called.

	Also note that deleting an object which has other objects attached
	to it may be undesirable. Use the function DeleteCxObjAll()
	to delete an entire sub-tree of objects.

   INPUTS
	co - the commodity object to delete

   SEE ALSO
	DeleteCxObjAll()

commodities.library/DeleteCxObjAll         commodities.library/DeleteCxObjAll

   NAME
	DeleteCxObjAll -- recursively delete a tree of commodity objects.
			  (V36)

   SYNOPSIS
	DeleteCxObjAll(co);
		       A0

	VOID DeleteCxObjAll(CxObj *);

   FUNCTION
	This function deletes the commodity object 'co', and
	recursively deletes all objects attached to it, and the
	objects attached to them, etc.

	If 'co' is linked into a list, it is first removed. Note
	that the handle 'co' is invalid after this function is called.

	This function is useful when an application exits: most
	applications can clean up completely by deleting the
	entire sub-tree of objects starting at their broker.

   INPUTS
	co - the first commodity object to delete

   SEE ALSO
	DeleteCxObj()

commodities.library/DisposeCxMsg             commodities.library/DisposeCxMsg

   NAME
	DisposeCxMsg -- delete a commodity message. (V36)

   SYNOPSIS
	DisposeCxMsg(cxm);
		     A0

	VOID DisposeCxMsg(struct CxMsg *);

   FUNCTION
	This function eliminates the commodity message pointed to by 'cxm'.
	Can be used to 'swallow' InputEvents by disposing of every commodity
	message of type CXM_IEVENT.

   INPUTS
	cxm - the commodity message to delete

commodities.library/DivertCxMsg               commodities.library/DivertCxMsg

   NAME
	DivertCxMsg -- send a commodity message down an object list. (V36)

   SYNOPSIS
	DivertCxMsg(cxm,headObj,returnObj);
		    A0  A1      A2

	VOID DivertCxMsg(struct CxMsg *,CxObj *,CxObj *);

   FUNCTION
	This function sends the commodity message 'cxm' down the list of
	objects attached to 'headObj'. The pointer 'returnObj' is first
	pushed onto the routing stack of 'cxm' so that when the end of the
	list of 'headObj' is reached the SUCCESSOR of 'returnObj' is the
	next destination.

	For example, when a filter finds a match with a message, the
	message is diverted down the filter's list like this:

		DivertCxMsg(cxm,filter,filter);

   INPUTS
	cxm - the commodity message to divert
	headObj - the list of objects to divert the message to
	returnObj - the object to use as a place holder

   SEE ALSO
	RouteCxMsg()

commodities.library/EnqueueCxObj             commodities.library/EnqueueCxObj

   NAME
	EnqueueCxObj -- insert a commodity object within a list of objects
		        based on object priority. (V36)

   SYNOPSIS
	EnqueueCxObj(headObj,co);
		     A0      A1

	VOID EnqueueCxObj(CxObj *,CxObj *);

   FUNCTION
	This function puts object 'co' into the list of object 'headObj'.
	The insertion point is determined by the object's priority. The
	objects are kept in the list from the highest priority to the
	lowest. New nodes are inserted in front of the first node with a
	lower priority. Hence a FIFO queue for nodes of equal priority.

	The priority of the commodity object can be set using SetCxObjPri().

   INPUTS
	headObj - pointer to a list of objects
	co - the object to add to the list

   RESULTS
	If 'co' is NULL, this function will record that fact in the
	internal accumulated error of 'headObj'. This error record
	can be retrieved using CxObjError() and cleared using
	ClearCxObjError().

   SEE ALSO
	SetCxObjPri(), CxObjError(), ClearCxObjError()

commodities.library/InsertCxObj               commodities.library/InsertCxObj

   NAME
	InsertCxObj -- insert a commodity object in a list after a given
		       object. (V36)

   SYNOPSIS
	InsertCxObj(headObj,co,pred);
		    A0      A1 A2

	VOID InsertCxObj(CxObj *,CxObj *,CxObj *);

   FUNCTION
	Adds 'co' to the list of objects pointed to by 'headObj' after
	object 'pred'.

   INPUTS
	headObj - pointer to a list of objects
	co - the object to insert in the list
	pred - the object after which 'co' should be inserted. If this is NULL
	       then 'co' is added to the head of the list.

   RESULTS
	If 'co' is NULL, this function will record that fact in the
	internal accumulated error of 'headObj'. This error record
	can be retrieved using CxObjError() and cleared using
	ClearCxObjError().

   SEE ALSO
	CxObjError(), ClearCxObjError()

commodities.library/InvertKeyMap             commodities.library/InvertKeyMap

   NAME
	InvertKeyMap -- generate an input event from an ANSI code. (V36)

   SYNOPSIS
	success = InvertKeyMap(ansicode,event,km)
		 	       D0       A0    A1

	BOOL InvertKeyMap(ULONG,struct InputEvent *,struct KeyMap *);

   FUNCTION
	This function uses the system call MapANSI() to figure out what
	InputEvent translates to an ANSI character code 'ansicode'. The
	InputEvent pointed to by 'event' is filled in with that information.
	The KeyMap 'km' is used for the translation, unless it is NULL, in
	which case the system default keymap (as defined when
	commodities.library is initialized) is used.

   INPUTS
	ansicode - the ANSI code to convert to an input event
	event - the InputEvent to fill-in
	km - the keymap to use for the translation, or NULL to use the
	     system default keymap.

   RESULTS
	success - TRUE if the translation worked, FALSE otherwise.

   BUGS
	This function currently handles one-deep dead keys (such as
	<alt f>o). It does not look up the high key map (keystrokes
	with scan codes greater than 0x40), and misses system changes to
	the default key map.

   SEE ALSO
	cx_lib/InvertString()

commodities.library/ParseIX                       commodities.library/ParseIX

   NAME
	ParseIX -- initialize an input expression given a description string.
		   (V36)

   SYNOPSIS
	failureCode = ParseIX(description,ix);
			      A0          A1

	LONG ParseIX(STRPTR,IX *);

   FUNCTION
	Given an input description string and an allocated input
	expression, sets the fields of the input expression to
	correspond to the description string.

   INPUTS
	description - the string to parse
	ix - the input expression to hold the result of the parse

   RESULTS
	failureCode -  0 if all went well,
		      -1 if tokens after end (code spec)
	              -2 if 'description' was NULL

commodities.library/RemoveCxObj               commodities.library/RemoveCxObj

   NAME
	RemoveCxObj -- remove a commodity object from a list. (V36)

   SYNOPSIS
	RemoveCxObj(co);
		    A0

	VOID RemoveCxObj(CxObj *);

   FUNCTION
	This function remove 'co' from any list it may be a part of.
	Will not crash if 'co' is NULL, or if it has not been inserted
	in a list (and is not corrupted).

	It is not recommended to remove a broker from the master list.

   INPUTS
       co - the object to remove, may be NULL

   SEE ALSO
	AttachCxObj(), EnqueueCxObj(), InsertCxObj()

commodities.library/RouteCxMsg                 commodities.library/RouteCxMsg

   NAME
	RouteCxMsg -- set the next destination of a commodity message. (V36)

   SYNOPSIS
	RouteCxMsg(cxm,co);
		   A0  A1

	VOID RouteCxMsg(struct CxMsg *,CxObj *);

   FUNCTION
	Establishes the next destination of a commodity message
	to be 'co', which must be a valid commodity object, and
	must be linked in ultimately to the Commodities Object List.

	Routing of an object is analogous to a 'goto' in a program.
	There is no effect on the message's routing stack.

   INPUTS
	cxm - the commodity message to route
	co - the commodity object to route the message to

   SEE ALSO
	DivertCxMsg()

commodities.library/SetCxObjPri               commodities.library/SetCxObjPri

   NAME
	SetCxObjPri -- set the priority of a commodity object. (V36)

   SYNOPSIS
	SetCxObjPri(co,pri)
		    A0 D0

	VOID SetCxObjPri(CxObj *,LONG);

   FUNCTION
	This function sets the priority of a commodity object for the
	purposes of EnqueueCxObj().

	It is strongly recommended that the ToolTypes environment be
	utilized to provide end-user control over the priority of
 	brokers, but application specific ordering of other objects
	within their lists is not dictated.

   INPUTS
	co - the commodity object to affect
	pri - the object's new priority in the range -128 to +127. A value
	      of 0 is normal.

   SEE ALSO
	EnqueueCxObj()

commodities.library/SetFilter                   commodities.library/SetFilter

   NAME
	SetFilter -- change the matching condition of a commodity filter.
		     (V36)

   SYNOPSIS
	SetFilter(filter,text);
		  A0     A1

	VOID SetFilter(CxObj *,STRPTR);

   FUNCTION
	This function changes the matching condition of a commodity input
	filter to that described by the input description string 'text'.

   INPUTS
	filter - the filter object to affect
	text - the new matching conditions for the filter

   RESULTS
	The internal error of 'filter' will have the COERR_BADFILTER
	bit set or cleared depending on the failure or success of this
	function.

   SEE ALSO
	SetFilterIX(), CxObjError()

commodities.library/SetFilterIX               commodities.library/SetFilterIX

   NAME
	SetFilterIX -- change the matching condition of a commodity filter.
		       (V36)

   SYNOPSIS
	SetFilterIX(filter,ix);
		    A0     A1

	VOID SetFilterIX(CxObj *,IX *);

   FUNCTION
	This function changes the matching condition of a commodity input
	filter to that described by the binary input expression pointed by
	'ix'.

	Input expressions are defined in <libraries/commodities.h>.
	It is important to remember that the first field of the input
	expression structure must indicate which version of the
	input expression structure is being used.

   INPUTS
	filter - the filter object to affect
	ix - the new matching conditions for the filter

   RESULTS
	The internal error of 'filter' will have the COERR_BADFILTER
	bit set or cleared depending on the failure or success of this
	function.

   SEE ALSO
	SetFilter(), CxObjError(), <libraries/commodities.h>

commodities.library/SetTranslate             commodities.library/SetTranslate

   NAME
	SetTranslate -- replace a translator object's translation list. (V36)

   SYNOPSIS
	SetTranslate(translator,events);
		     A0         A1

	VOID SetTranslate(CxObj *,struct InputEvent *);

   FUNCTION
	This function replaces the translation list of a commodity
	translator object with the linked list starting at 'events'.

	A NULL value for 'events' indicates that the object 'translator'
	should swallow all commodity messages that are sent its way.

	Note that the input events are not copied into commodities' private
	memory, but the value of 'events' is used -- asynchronously to the
	application program -- to find a chain of InputEvents in the
	application's data space. At the time of translation, each input event
	is copied into its own new commodity message.

	The above means that no other commodities' user, nor
	commodities.library itself will be modifying your list of InputEvents.
	On the other hand, your program must not corrupt the input event
	chain that has been presented to a translator.

   INPUTS
	translator - the translator object to affect
	events - the new input event translation list

   SEE ALSO
	<devices/inputevent.h>, cx_lib/CxTranslate()