TextBuffer(3)
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 rearrange the text
to improve the efficiency of some operations.
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 regexp, 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 backward 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 position given by stop. ForwardMatch looks for a
match that begins at index. BackwardMatch looks 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 insufficient 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 contains
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 guarantees 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 LinesBetween(int index1, int index2)
-
- int LineNumber(int index)
-
- int LineOffset (int index)
-
Map between text indices and line and offset positions. LineIndex
returns the index of the beginning 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 difference between the numbers of the
lines containings 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
logically 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)
-
- int BeginningOfNextWord(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.