TextBuffer - operations on unstructured text


SYNOPSIS

       #include <InterViews/textbuffer.h>


DESCRIPTION

       TextBuffer  defines  common  editing,  searching, and text
       movement operations on  a  buffer  of  unstructured  text.
       Text  positions  are specified by an index into the buffer
       and logically refer to positions between characters.   For
       example, the position referred to by the index 0 is before
       the first character in the text.  Indices can be  compared
       for  equality  or ordering, but they should not be used to
       directly access the buffer because TextBuffer might  rear-
       range  the  text  to improve the efficiency of some opera-
       tions.


PUBLIC OPERATIONS

       TextBuffer(char* buffer, int length, int size)
       ~TextBuffer()
              Create or destroy an instance of  TextBuffer.   All
              operations  on  the text contained in buffer should
              be performed  through  TextBuffer  functions.   The
              text  is  assumed  to  be of length length, and the
              total available buffer size is size.

       int Search(Regexp* regexp, int index, int range, int stop)
       int ForwardSearch(Regexp* regexp, int index)
       int BackwardSearch(Regexp* regexp, int index)
              Search for a match with the regular expression reg-
              exp, beginning at position index.  Search  searches
              the  part of the buffer specified by range and stop
              and returns the  index  of  the  beginning  of  the
              matched  text.   Positive  values  of range specify
              forward searches, and negative values specify back-
              ward  searches.   In  either case, the matched text
              will not extend beyond the position given by  stop.
              ForwardSearch  searches  for  matches from index to
              the end of the text and returns the  index  of  the
              end  of  the  match.   BackwardSearch searches from
              index to the start of  the  text  and  returns  the
              index  of  the  beginning  of the match.  All three
              functions return a negative number if there was  no
              match.

       int Match(Regexp* regexp, int index, int stop)
       boolean ForwardMatch(Regexp* regexp, int index)
       boolean BackwardMatch(Regexp* regexp, int index)
              Attempt  to  match the regular expression regexp at
              the position index.  Match returns  the  length  of
              the  matching string, or a negative number if there
              was no match.  Matching will not succeed beyond the
              for a match that ends at index.

       int Insert(int index, const char* string, int count)
       int Delete(int index, int count)
       int Copy(int index, char* buffer, int count)
              Edit  the text in the buffer.  Insert inserts count
              characters from string at the position  index.   It
              returns  the  actual number of characters inserted,
              which might be less than count if there is insuffi-
              cient  space  in  the buffer.  Delete deletes count
              characters  from  the  buffer.   A  positive  count
              deletes  characters  after  index,  and  a negative
              value  deletes  character  before  index.    Delete
              returns  the  actual  number of characters deleted,
              which might be less than count if index is near the
              beginning  or  the  end  of  the text.  Copy copies
              count characters into  buffer.   A  positive  count
              copies  characters after index and a negative count
              copies characters before index.  Count returns  the
              actual  number  of  characters  copied.   It is the
              caller's responsibility to ensure that buffer  con-
              tains sufficient space for the copied text.

       int Height()
       int Width()
       int Length()
              Return  information about the text.  Height returns
              the number of lines in the text, Width returns  the
              number  of  characters  in  the  longest  line, and
              Length returns the total number of characters.

       const char* Text()
       const char* Text(int index)
       const char* Text(int index1, int index2)
       char Char (int index)
              Access the contents of the text.  Char returns  the
              character  immediately  following index.  The three
              Text calls return  pointers  to  character  strings
              representing  the  text.  They make various guaran-
              tees about the format of the returned string.  With
              no  parameters,  Text returns a pointer to a string
              that contains the entire text of the buffer.   With
              a single parameter the string contains at least the
              text from index to the end of the line.   With  two
              parameters,  the  returned string contains at least
              the text between index1 and index2.  In  any  case,
              the  returned string should be considered temporary
              and its contents subject to  change.   To  maximize
              efficiency,  you  should prefer the more restricted
              forms of Text.

       int LineIndex(int line)
       int LineNumber(int index)
       int LineOffset (int index)
              Map between text indices and line and offset  posi-
              tions.   LineIndex  returns the index of the begin-
              ning of line line.  LineNumber returns  the  number
              of   the  line  that  contains  index.   LineOffset
              returns the offset of index from the  beginning  of
              its containing line.  LinesBetween returns the dif-
              ference between the numbers of the  lines  contain-
              ings  index1  and  index2;  a  return value of zero
              indicates that index1 and index2 are  on  the  same
              line,  and a positive value indicates that the line
              containing index2  is  after  the  line  containing
              index1.  Lines are numbered starting from zero.

       int PreviousCharacter(int index)
       int NextCharacter(int index)
              Return the index immediately following or preceding
              index.  The returned  value  is  never  before  the
              beginning or after the end of the text.

       boolean IsBeginningOfText(int index)
       int BeginningOfText()
       boolean IsEndOfText(int index)
       int EndOfText()
              Return  the  index  of  the beginning or end of the
              text, or query whether index is at the beginning or
              end of the text.

       boolean IsBeginningOfLine(int index)
       int BeginningOfLine(int index)
       int BeginningOfNextLine(int index)
       boolean IsEndOfLine(int index)
       int EndOfLine(int index)
       int EndOfPreviousLine(int index)
              Return  information about the line structure of the
              text around  index.   BeginningOfLine  returns  the
              index  of  the  beginning  of  the  line containing
              index.  BeginningOfNextLine returns  the  index  of
              the  beginning  of  the next line that begins after
              index.  EndOfLine returns the index of the  end  of
              the   line   containing  index.   EndOfPreviousLine
              returns the index of the end of the last line  that
              ends before index.  The beginning of a line is log-
              ically immediately after a newline  character,  and
              the end of a line is logically immediately before a
              newline character.  The beginning and  end  of  the
              text  are considered to be the beginning and end of
              the first and last lines, respectively.

       boolean IsBeginningOfWord(int index)
       int BeginningOfWord(int index)
       boolean IsEndOfWord(int index)
       int EndOfWord(int index)
       int EndOfPreviousWord(int index)
              Return information about the word structure of  the
              text  around  index.   BeginningOfWord  returns the
              index of  the  beginning  of  the  word  containing
              index.  BeginningOfNextWord return the index of the
              beginning of the nest word that begins after index.
              EndOfWord  returns the index of the end of the word
              that contains index.  EndOfPreviousWord returns the
              index  of the end of the last word that ends before
              index.  A word is defined as a sequence  of  alpha-
              numeric  characters.   The beginning and end of the
              text are considered to be the beginning and end  of
              the first and last words, respectively.


SEE ALSO

       Regexp(3I)



































Man(1) output converted with man2html