[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()