Ipelib

Public Member Functions | Static Public Member Functions | List of all members
ipe::String Class Reference
Ipe Base

`#include <ipebase.h>`

## Public Member Functions
| String () noexcept
| String (const char *str) noexcept
| String (const char *str, int len) noexcept
| String (const String &rhs) noexcept
| String (const String &rhs, int index, int len) noexcept
String & | operator= (const String &rhs) noexcept
| ~String () noexcept
char | operator[] (int i) const noexcept
bool | empty () const noexcept
const char * | data () const noexcept
int | size () const noexcept
void | operator+= (const String &rhs) noexcept
void | operator+= (const char *rhs) noexcept
void | operator+= (char ch) noexcept
String | substr (int i, int len=-1) const noexcept
String | left (int i) const noexcept
String | right (int i) const noexcept
bool | operator!= (const String &rhs) const noexcept
bool | operator!= (const char *rhs) const noexcept
int | find (char ch) const noexcept
int | rfind (char ch) const noexcept
int | find (const char *rhs) const noexcept
void | erase () noexcept
void | append (const String &rhs) noexcept
void | append (const char *rhs) noexcept
void | append (char ch) noexcept
void | appendUtf8 (uint16_t ch) noexcept
bool | hasPrefix (const char *rhs) const noexcept
bool | operator== (const String &rhs) const noexcept
bool | operator== (const char *rhs) const noexcept
bool | operator< (const String &rhs) const noexcept
String | operator+ (const String &rhs) const noexcept
int | unicode (int &index) const noexcept
String | getLine (int &index) const noexcept
const char * | z () const noexcept

## Static Public Member Functions
static String | withData (char *data, int len=0) noexcept

## Detailed Description

Strings and buffers.

String is is an implicitly shared byte string. It is designed to be efficient for strings of arbitrary length, and supposed to be passed by value (the size of String is a single pointer). Sharing is implicit—the string creates its own representation as soon as it is modified.

String can be used for binary data. For text, it is usually assumed that the string is UTF-8 encoded, but only the unicode member function actually requires this. In particular, all indices into the string are byte indices, not Unicode character indices.

## Constructor & Destructor Documentation

## ◆ String() [1/5]

String::String | ( |  | ) |
| noexcept

Construct an empty string.

## ◆ String() [2/5]

String::String | ( | const char * | str | ) |
| noexcept

Construct a string by making copy of str.

## ◆ String() [3/5]

String::String | ( | const char * | str,
|  | int | len )
| noexcept

Construct string by making copy of str with given len.

## ◆ String() [4/5]

String::String | ( | const String & | rhs | ) |
| noexcept

Copy constructor. This only copies the reference and takes constant time.

## ◆ String() [5/5]

String::String | ( | const String & | rhs,
|  | int | index,
|  | int | len )
| noexcept

Construct a substring.

index must be >= 0. len can be negative or too large to return entire string.

## ◆ ~String()

String::~String | ( |  | ) |
| noexcept

Destruct string if reference count has reached zero.

## Member Function Documentation

## ◆ operator=()

String & String::operator= | ( | const String & | rhs | ) |
| noexcept

Assignment takes constant time.

## ◆ withData()

String String::withData | ( | char * | data,
|  | int | len = 0 )
| static noexcept

Construct string by taking ownership of given data.

## ◆ operator[]()

char ipe::String::operator[] | ( | int | i | ) | const
| inline noexcept

Return character at index i.

## ◆ empty()

bool ipe::String::empty | ( |  | ) | const
| inline noexcept

Is the string empty?

References ipe::size().

Referenced by ipe::Latex::addPageNumber(), ipe::PdfWriter::createBookmarks(), ipe::Latex::createLatexSource(), ipe::PdfWriter::createNamedDests(), ipe::PdfWriter::createPageView(), ipe::PdfWriter::createTrailer(), ipe::Document::findPage(), ipe::Page::findView(), ipe::Attribute::makeColor(), ipe::Attribute::makeDashStyle(), ipe::Attribute::makeScalar(), ipe::Attribute::makeTextSize(), ipe::Object::Object(), ipe::XmlParser::parseAttributes(), ipe::ImlParser::parseObject(), ipe::ImlParser::parsePage(), ipe::ImlParser::parseStyle(), ipe::ImlParser::parseView(), ipe::Platform::runLatex(), ipe::Document::runLatexAsync(), ipe::Page::saveAsXml(), ipe::StyleSheet::saveAsXml(), ipe::Document::saveAsXml(), ipe::Group::saveAsXml(), ipe::Object::saveAttributesAsXml(), and ipe::Repository::toIndex().

## ◆ data()

const char * ipe::String::data | ( |  | ) | const
| inline noexcept

Return read-only pointer to the data.

Referenced by ipe::Bitmap::Bitmap(), ipe::PdfWriter::createPageView(), ipe::PdfWriter::createXmlStream(), ipe::Platform::fileExists(), ipe::PdfDict::inflate(), ipe::Platform::listDirectory(), ipe::PdfWriter::PdfWriter(), ipe::Bitmap::readJpeg(), ipe::Platform::realPath(), and z().

## ◆ size()

int ipe::String::size | ( |  | ) | const
| inline noexcept

Return number of bytes in the string.

Referenced by ipe::Bitmap::Bitmap(), ipe::PdfDict::count(), ipe::Latex::createLatexSource(), ipe::PdfWriter::createPageView(), ipe::PdfWriter::createXmlStream(), ipe::CairoPainter::doDrawText(), ipe::Document::formatFromFilename(), ipe::Lex::getFixed(), ipe::PdfDict::inflate(), ipe::Platform::ipeDrive(), ipe::Platform::latexDirectory(), ipe::XmlParser::parsePCDATA(), ipe::XmlParser::parseToTag(), ipe::PdfWriter::PdfWriter(), ipe::Stream::putString(), ipe::FileStream::putString(), ipe::Stream::putXmlString(), ipe::Bitmap::readJpeg(), ipe::Document::saveAsXml(), ipe::Path::saveAsXml(), ipe::StringStream::tell(), and ipe::Text::Text().

## ◆ operator+=() [1/3]

void ipe::String::operator+= | ( | const String & | rhs | ) |
| inline noexcept

Operator syntax for append.

## ◆ operator+=() [2/3]

void ipe::String::operator+= | ( | const char * | rhs | ) |
| inline noexcept

Operator syntax for append.

## ◆ operator+=() [3/3]

void ipe::String::operator+= | ( | char | ch | ) |
| inline noexcept

Operator syntax for append.

## ◆ substr()

String ipe::String::substr | ( | int | i,
|  | int | len = -1 ) const
| inline noexcept

Create substring.

Referenced by ipe::Latex::createLatexSource(), ipe::PdfWriter::createPageView(), ipe::Painter::dashStyle(), ipe::Document::fileFormat(), ipe::Lex::getFixed(), ipe::PdfParser::getObject(), ipe::Platform::latexDirectory(), ipe::Platform::latexPath(), ipe::Lex::nextToken(), ipe::PdfFile::parse(), ipe::Platform::runLatex(), ipe::Document::runLatexAsync(), ipe::StyleSheet::saveAsXml(), ipe::Path::saveAsXml(), and ipe::Text::Text().

## ◆ left()

String ipe::String::left | ( | int | i | ) | const
| inline noexcept

Create substring at the left.

Referenced by ipe::PdfWriter::createPageView(), ipe::CairoPainter::doDrawText(), ipe::Platform::ipeDrive(), ipe::Platform::latexDirectory(), ipe::Platform::latexPath(), ipe::Platform::realPath(), and ipe::Platform::runLatex().

## ◆ right()

String String::right | ( | int | i | ) | const
| noexcept

Create substring at the right.

Returns the entire string if i is larger than its length.

References ipe::size().

Referenced by ipe::Document::formatFromFilename(), and ipe::Platform::latexDirectory().

## ◆ operator!=() [1/2]

bool ipe::String::operator!= | ( | const String & | rhs | ) | const
| inline noexcept

Operator !=.

## ◆ operator!=() [2/2]

bool ipe::String::operator!= | ( | const char * | rhs | ) | const
| inline noexcept

Operator !=.

## ◆ find() [1/2]

int String::find | ( | char | ch | ) | const
| noexcept

Return index of first occurrence of ch.

Return -1 if character does not appear.

References ipe::size().

Referenced by ipe::Painter::dashStyle(), ipe::CairoPainter::doDrawText(), ipe::Reference::flagsFromName(), ipe::PdfFile::parse(), ipe::Document::runLatexAsync(), and ipe::StyleSheet::saveAsXml().

## ◆ rfind()

int String::rfind | ( | char | ch | ) | const
| noexcept

Return index of last occurrence of ch.

Return -1 if character does not appear.

References ipe::size().

## ◆ find() [2/2]

int String::find | ( | const char * | rhs | ) | const
| noexcept

Return index of first occurrence of rhs.

Return -1 if not substring is not present.

References ipe::size().

## ◆ erase()

void String::erase | ( |  | ) |
| noexcept

Make string empty.

Referenced by ipe::PdfParser::getToken().

## ◆ append() [1/3]

void String::append | ( | const String & | rhs | ) |
| noexcept

Append rhs to this string.

Referenced by ipe::PdfParser::getToken(), operator+(), and ipe::Platform::readFile().

## ◆ append() [2/3]

void String::append | ( | const char * | rhs | ) |
| noexcept

Append rhs to this string.

## ◆ append() [3/3]

void String::append | ( | char | ch | ) |
| noexcept

Append ch to this string.

## ◆ appendUtf8()

void String::appendUtf8 | ( | uint16_t | ch | ) |
| noexcept

Append a single unicode character ch in UTF-8 encoding.

Referenced by ipe::PdfString::decode().

## ◆ hasPrefix()

bool String::hasPrefix | ( | const char * | rhs | ) | const
| noexcept

Does string start with this prefix? (bytewise comparison)

References ipe::size().

Referenced by ipe::PdfString::decode(), ipe::Attribute::isMidArrow(), and ipe::Document::runLatexAsync().

## ◆ operator==() [1/2]

bool String::operator== | ( | const String & | rhs | ) | const
| noexcept

Equality operator (bytewise comparison).

References ipe::size().

## ◆ operator==() [2/2]

bool String::operator== | ( | const char * | rhs | ) | const
| noexcept

Equality operator (bytewise comparison).

References ipe::size().

## ◆ operator<()

bool String::operator< | ( | const String & | rhs | ) | const
| noexcept

Inequality operator (bytewise comparison).

References ipe::size().

## ◆ operator+()

String String::operator+ | ( | const String & | rhs | ) | const
| noexcept

Concatenate this string with rhs.

References append().

## ◆ unicode()

int String::unicode | ( | int & | index | ) | const
| noexcept

Return Unicode value from UTF-8 string.

The index is incremented to the next UTF-8 character. This returns 0xfffd if there is any problem in parsing UTF-8.

## ◆ getLine()

String String::getLine | ( | int & | index | ) | const
| noexcept

Return line starting at position index. Index is updated to point to next line.

References ipe::size().

## ◆ z()

const char * String::z | ( |  | ) | const
| noexcept

Return a C style string with final zero byte.

References data().

Referenced by ipe::PdfResources::collect(), ipe::CairoPainter::doDrawText(), ipe::Face::Face(), ipe::Platform::fileExists(), ipe::Lex::getFixed(), ipe::Lex::getHexNumber(), ipe::Lex::getInt(), ipe::Platform::latexDirectory(), ipe::Platform::listDirectory(), ipe::QIpe(), ipe::Platform::readFile(), ipe::Platform::realPath(), ipe::Platform::runLatex(), ipe::Document::runLatexAsync(), ipe::PdfResources::show(), ipe::Platform::toDouble(), ipe::Platform::toNumber(), and ipe::Face::~Face().

The documentation for this class was generated from the following files:

- ipebase.h
- ipebase.cpp