STRINGINTTAB(2)                                   STRINGINTTAB(2)

     NAME
          stringinttab - string table lookup module

     SYNOPSIS
          include "strinttab.m";
          StringInt: import StringIntTab;

          strinttab := load StringIntTab StringIntTab->PATH;

          StringInt: adt{
              key: string;
              val: int;
          };

          lookup:    fn(tab: array of StringInt, key: string) : (int, int);
          revlookup: fn(tab: array of StringInt, val: int)    : string;

     DESCRIPTION
          Stringinttab provides functions that perform forward and
          reverse searches of an ordered table of key-value pairs.

          A table should be constructed as an array of StringInt
          entries, ordered by increasing key value.  Keys ordering is
          determined by comparison of the Unicode value of their char-
          acters.

          Lookup performs a binary search of tab for the StringInt
          entry whose key field has a value equal to key and returns a
          tuple: an int whose value is non-zero if a match has been
          found and zero otherwise, and an int whose value is equal to
          the val field of the matching StringInt entry.

          Revlookup searches tab for the first StringInt entry whose
          val field has a value equal to val and returns the corre-
          sponding key string.

     EXAMPLES
          T := load StringIntTab StringIntTab->PATH;

          fmtstringtab := array[] of { Strinttab->StringInt
               ("html", FHtml),
               ("latex", FLatex),
               ("latexbook", FLatexBook),
               ("latexpart", FLatexPart),
               ("latexproc", FLatexProc),
               ("latexslides", FLatexSlides),
          };

          (fnd, fmt) := T->lookup(fmtstringtab, "latexbook");
          fmtstring := T->revlookup(fmtstringtab, FLatex);

     Page 1                       Plan 9            (printed 12/21/24)

     STRINGINTTAB(2)                                   STRINGINTTAB(2)

     SOURCE
          /appl/lib/strinttab.b

     SEE ALSO
          hash(2)

     BUGS
          Revlookup performs a sequential search of the table.

     Page 2                       Plan 9            (printed 12/21/24)