\HeaderA{BString-class}{The BString class}{BString.Rdash.class}
\aliasA{"!=,ANY,BString-method}{BString-class}{"!=,ANY,BString.Rdash.method}
\aliasA{"!=,BString,ANY-method}{BString-class}{"!=,BString,ANY.Rdash.method}
\aliasA{"!=,BString,BString-method}{BString-class}{"!=,BString,BString.Rdash.method}
\aliasA{==,ANY,BString-method}{BString-class}{==,ANY,BString.Rdash.method}
\aliasA{==,BString,ANY-method}{BString-class}{==,BString,ANY.Rdash.method}
\aliasA{==,BString,BString-method}{BString-class}{==,BString,BString.Rdash.method}
\aliasA{as.character,BString-method}{BString-class}{as.character,BString.Rdash.method}
\aliasA{BString}{BString-class}{BString}
\aliasA{class:BString}{BString-class}{class:BString}
\aliasA{initialize,BString-method}{BString-class}{initialize,BString.Rdash.method}
\aliasA{length,BString-method}{BString-class}{length,BString.Rdash.method}
\aliasA{letter}{BString-class}{letter}
\aliasA{letter,BString-method}{BString-class}{letter,BString.Rdash.method}
\aliasA{nchar,BString-method}{BString-class}{nchar,BString.Rdash.method}
\aliasA{show,BString-method}{BString-class}{show,BString.Rdash.method}
\aliasA{subBString}{BString-class}{subBString}
\aliasA{subBString,BString-method}{BString-class}{subBString,BString.Rdash.method}
\aliasA{toString,BString-method}{BString-class}{toString,BString.Rdash.method}
\aliasA{[,BString-method}{BString-class}{[,BString.Rdash.method}
\aliasA{[<-,BString-method}{BString-class}{[<.Rdash.,BString.Rdash.method}
\keyword{methods}{BString-class}
\keyword{classes}{BString-class}
\begin{Description}\relax
The \code{BString} class is a general container for storing
a big string (a long sequence of characters) and to make its
manipulation easy and efficient.
The \code{\LinkA{DNAString}{DNAString}}, \code{\LinkA{RNAString}{RNAString}}
and \code{\LinkA{AAString}{AAString}} classes are direct \code{BString}
derivations with the more specific purpose of storing a DNA sequence
(\code{\LinkA{DNAString}{DNAString}}), a RNA sequence (\code{\LinkA{RNAString}{RNAString}})
or a sequence of amino acids (\code{\LinkA{AAString}{AAString}}).
\end{Description}
\begin{Details}\relax
The 2 main differences between a \code{BString} object
and a standard character vector are:
(1) the data stored in a \code{BString} object are not copied
on object duplication and (2) a \code{BString} can only store
a single string (see the \code{\LinkA{BStringViews}{BStringViews}} for an
efficient way to store a collection of big strings in a single object).
A \code{BString} object can be used to store any non-empty
string based on a single-byte character set.
\end{Details}
\begin{Section}{Accesor methods}
In the code snippets below,
\code{x} is a \code{BString} (or derived) object
and \code{i} is a numeric vector.

\describe{
\item[] \code{letter(x, i)}:
[TODO: Document me]

}
\end{Section}
\begin{Section}{Constructor-like functions and generics}
In the code snippet below,
\code{src} can be a character vector
or a \code{BString} (or derived) object.

\describe{
\item[] \code{BString(src)}:
[TODO: Document me]

}
\end{Section}
\begin{Section}{Standard generic methods}
In the code snippets below,
\code{x}, \code{object}, \code{e1} and \code{e2}
are \code{BString} (or derived) objects,
and \code{i} is a numeric vector.

\describe{
\item[] \code{length(x)} or \code{nchar(x)}:
Used to get the length of a \code{BString}, i.e., its number of letters

\item[] \code{x[i]}:
[TODO: Document me]

\item[] \code{e1 == e2}:
[TODO: Document me]

\item[] \code{e1 != e2}:
[TODO: Document me]

\item[] \code{as.character(x)}:
[TODO: Document me]

\item[] \code{toString(x)}:
[TODO: Document me]

}
\end{Section}
\begin{Section}{Other functions and generics}
In the code snippets below,
\code{x} is a \code{BString} (or derived) object
and \code{first} and \code{last} are single numerics.

\describe{
\item[] \code{subBString(x, first, last)}:
[TODO: Document me]

}
\end{Section}
\begin{Author}\relax
H. Pages
\end{Author}
\begin{SeeAlso}\relax
\LinkA{DNAString-class}{DNAString.Rdash.class}, \LinkA{RNAString-class}{RNAString.Rdash.class}, \LinkA{AAString-class}{AAString.Rdash.class}
\LinkA{BStringViews-class}{BStringViews.Rdash.class}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
  b <- BString("I am a BString object")
  length(b)
\end{ExampleCode}
\end{Examples}


