NAME
          irPName, irGPName, irSName, irEName, irEFName, irEMName,
          irAName, irSvcStName, irCName, irXName, irPrintEvent
          - return symbolic names of various IRAPI constants

     SYNOPSIS
          #include <irapi.h>

          char *irPName (int p);

          char *irGPName (int p);

          char *irSName (int s);

          char *irEName (int e);

          char *irEFName (int ef);

          char *irEMName (int em);

          char *irAName (int a);

          char *irHName (int h);

          char *irSvcStName (int ss);

          char *irCName (int c);

          char *irVPName (int v);

          char *irXName (int x);

          char *irPrintEvent (ir_event_t *evp);

          int irPValue (char *pstr);

          int irVPValue (char *vstr);


     DESCRIPTION
          These functions return character pointers to the symbolic
          names of the values they are passed for the class of names
          implied by the function called.

          irPName - return a pointer to a channel specific
          parameter name (IrPARAMETERS(4IRAPI)).

          irGPName - return a pointer to a global parameter
          name (IrPARAMETERS(4IRAPI)).

          irSName - return a pointer to a library state name
          (IrSTATES(4IRAPI)).

          irEName - return a pointer to an event name
          (IrEVENTS(4IRAPI)).

          irEFName - return a pointer to an event flag name
          (IrEVENTS(4IRAPI)).

          irEMName - return a pointer to an event modifier
          name (IrEVENTS(4IRAPI)).

          irAName - return a pointer to an algorithm name
          (IrALGORITHMS(4IRAPI)).

          irHName - return a pointer to an hardware type name
          (/att/include/hwrtype.h).

          irSvcStName - return a pointer to a service state
          name (IrDEFINES(4IRAPI)).

          irCName - returns a pointer to a resource capability
          name

          irVPName - returns a pointer to a var param name
          (IrVARPARAMS(4IRAPI)).

          irXName - returns a pointer to an extension function
          name (IrEXTEND(4IRAPI)).

          irPrintEvent - return a pointer to a formatted
          string containing all elements of an event structure
          (IrEVENTS(4IRAPI)).

          irPValue - return an integer corresponding to the
          channel specific parameter name (IrPARAMETERS(4IRAPI)).

          irVPValue - return a pointer to a character string defining
          varparam name (IrVARPARAMS(4IRAPI)).


     EVENT
          No event results from the call to any of these functions.


     RETURN
          Character pointer to symbolic name of the IRAPI constant on
          success.

          A character pointer to a string indicating that the value is
          unknown for the class implied by the function on error.


     WARNING
          For unknown values, the return value points to a string that
          could possibly be overwritten by a call to the same or any
          other irName function listed in this man page.


     ERROR
          These functions always return a pointer to some valid
          address.  irError is never modified as a result to a call to
          any of these functions.


     EXAMPLE
          The following section describes how to extend the irXName
          function to generate strings for customer defined extension
          ids.  The sample code in /vs/examples/IRAPI/util_fcns.c will
          be referenced heavily.

          All of the following code should be placed into the C files
          which comprise the shared object library, aka ".so" library,
          for this extension package.  The /vs/examples/IRAPI/example.mk
          shows how to build the util_fcns.c into such a library.

          First, contact Avaya to reserve an extension
          library number for your exclusive use.

          Next, modify the file /att/include/irDefines.h and place a
          comment next to the extension library number you are using.
          For example the utility extension library number is
          IRD_EXT_LIBA.

          Next, modify /att/include/irExtend.h to contain the exten-
          sion function identifiers you need.  For example, the util-
          ity extension functions are:

               enum IR_EXTEND {
                   IRX_UTIL = IRD_EXT_LIBA,
                   IRX_LBOLT,
                   IRX_RAND,
                   IRX_TIME,
                   IRX_CTIME,
                   IRX_LOGMSG,
                   IRX_YOURLIB = IRD_EXT_LIBB,
               }

          Note, it is very important to change the IR_EXTEND enum in a
          way that does not alter the values already present.

          Next, create an array of iri_define_string structures which
          map ids to names.  Within the file util_fcns.c this is done
          with the Iri_Extend_NamesA table:

              static const struct iri_define_string Iri_Extend_NamesA[] =
              {
               { IRX_UTIL,    "IRX_UTIL",    0 },
               { IRX_LBOLT,   "IRX_LBOLT",   0 },
               { IRX_TIME,    "IRX_TIME",    0 },
               { IRX_RAND,    "IRX_RAND",    0 },
               { IRX_CTIME,   "IRX_CTIME",   0 },
               { 0,      0,   0 },
               { IRR_FAIL,    "UNKNOWN EXTENSION FUNCTION", "" }
              };

          Next, create a function which calls irDefineName on this
          iri_define_string structure.  For the util_fcns.c function
          this is done by iri_XNameA

              int iri_XNameA(void *unused1, void *unused2, int id)
              {
               return((int)irDefineName(&Iri_Extend_NamesA[0], id));
              }

          The prototype of this function must be as shown above.

          Within the function irSPIRegister add this function and
          corresponding extension library number, iri_XNameA and
          IRD_EXT_LIBA in this example, to the IRAPI dynamic switch
          table Iri_Extend_Name_table.

          In the util_fcns.c sample example this is accomplished with:

              if (irDynSwitchAdd(Iri_Extend_Name_table, IRD_EXT_LIBA,
               iri_XNameA) == IRR_FAIL) ret = IRR_FAIL;

          within irSPIRegister.

          The function irXName is shown below:

              char *irXName( int id )
              {
               return((char *)irDynSwitch(Iri_Extend_Name_table,
                   IRD_EXT_LIB(id), (void *)0, (void *)0, id));
              }

          The function irDynSwitch searches the IRAPI dynamic switch
          table Iri_Extend_Name_table for an entry having a val field
          which matches IRD_EXT_LIB(id).  For the util_fcns.c example
          the value of IRD_EXT_LIB(id) for any utility extension
          library is IRD_EXT_LIBA This can be seen in
          /att/include/irExtend.h and /att/include/irDefines.h If a
          matching entry is found then the associated function,
          iri_XNameA in this example, is called:

              iri_XNameA((void *)0, (void *)0, id)

          The function iri_XNameA then maps id to a corresponding
          string with

              irDefineName(&Iri_Extend_NamesA[0], id));

          and returns that string.

          When the extension package is added the file
          /vs/data/irSPI.libs must be modified to contain an entry
          with the pathname to this extension library.  The command
          editSPIlibs may be used for this.  For example:

              editSPIlibs /usr/lib/libirUTIL.so

          assuming the extension library is /usr/lib/libirUTIL.so

          When an extension package is removed the corresponding entry
          for the extension library must be removed.  The command
          editSPIlibs may be used.  For example:

              editSPIlibs -r /usr/lib/libirUTIL.so

          A relative pathname may be used so long as LD_LIBRARY_PATH
          is set appropriately at irRegister(3IRAPI) time.


     SEE ALSO
          irDefine(3IRAPI), irErrorStr(3IRAPI),
          irExtend(3IRAPI), irRegister(3IRAPI), irSPIRegister(3IRAPI),
          IrALGORITHMS(4IRAPI), IrDEFINES(4IRAPI), IrEVENTS(4IRAPI),
          IrEXTEND(4IRAPI), IrPARAMETERS(4IRAPI), IrSTATES(4IRAPI),
          IrVARPARAMS(4IRAPI), irSPI.libs(4IRAPI)


     FILES
          irStructure.h, irExtend.h, /vs/examples/IRAPI/util_fcns.c,
          /vs/data/irSPI.libs


     VERSION
          This is version 10/24/02 of this man page.