7#ifndef PXR_BASE_TF_ETERNAL_STRING_H
8#define PXR_BASE_TF_ETERNAL_STRING_H
13#include "pxr/base/tf/api.h"
20PXR_NAMESPACE_OPEN_SCOPE
126 char const *c_str()
const {
return _str->c_str(); }
127 char const *data()
const {
return _str->data(); }
128 size_t size()
const {
return _str->size(); }
129 size_t length()
const {
return _str->size(); }
130 bool empty()
const {
return _str->empty(); }
166 operator std::string
const &()
const {
return *_str; }
167 operator std::string_view()
const {
return *_str; }
181 return _Cat(a.data(), a.size(), b.data(), b.size());
184 return _Cat(a.data(), a.size(), b.data(), b.size());
187 return _Cat(a.data(), a.size(), b.data(), b.size());
194 return a._str == b._str;
218 template <
class HashState>
223 TF_API
friend std::ostream &operator<<(std::ostream &o,
TfEternalString s);
230 TF_API
static std::string
231 _Cat(
char const *a,
size_t aLen,
char const *b,
size_t bLen);
233 std::string
const *_str;
236PXR_NAMESPACE_CLOSE_SCOPE
An immutable, interned string whose character data is guaranteed to remain valid at a fixed address f...
friend bool operator==(TfEternalString a, TfEternalString b)
Compare by address, which interning makes a content identity in both directions – see the class docum...
friend void TfHashAppend(HashState &h, TfEternalString s)
Hash by address, which interning makes a content identity – see the class documentation.
std::string const & GetString() const
Return the underlying string.
std::string_view GetStringView() const
Return a view of the characters.
static TF_API TfEternalString Immortalize(std::string_view content)
Return the TfEternalString naming content, interning its characters if they are not interned already.
TF_API TfEternalString()
Construct the empty eternal string.