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