20AI_API
const char* AiCreateAtStringData_private(
const char*);
21AI_API AI_PURE
size_t AiAtStringLength(
const char*);
22AI_API AI_PURE AI_DEVICE
size_t AiAtStringHash(
const char*);
60 explicit AtString(
const char* str) { data = AiCreateAtStringData_private(str); }
66 AI_DEVICE
bool operator!= (
const AtString &rhs)
const {
return data != rhs.data; }
70 size_t length()
const {
return AiAtStringLength(data); }
78 AI_DEVICE
bool empty()
const;
95 operator const char*()
const {
return c_str(); }
101 AI_DEVICE
const char*
c_str()
const {
return data; }
103 AI_DEVICE
void clear() { data = NULL; }
110 AI_DEVICE
size_t hash()
const {
return AiAtStringHash(data); }
115 friend void setAtStringInternalData(
AtString &str,
const char* data);
124 bool operator!= (
const char* rhs)
const;
126 AI_UNAVAILABLE
friend inline bool operator!=(
const char* lhs,
const AtString& rhs);
137 size_t operator() (
const AtString &s)
const {
return s.
hash(); }
DLL export prefix for API functions (necessary for multi-platform development)
Functor class to use as a hasher when you want to make a hash map or hash set using AtString as a key...
Definition: ai_string.h:135
Arnold String allows for fast string comparisons.
Definition: ai_string.h:46
AI_DEVICE size_t hash() const
Returns a hashed version of the string.
Definition: ai_string.h:110
AI_DEVICE const char * c_str() const
Returns the string as a const char*.
Definition: ai_string.h:101
AI_DEVICE bool operator==(const AtString &rhs) const
Comparing two AtString objects is an extremely fast pointer comparison.
Definition: ai_string.h:65
AtString(const char *str)
Creating an AtString from a char* is an expensive operation.
Definition: ai_string.h:60
size_t length() const
Computing the length is a fast constant time operation.
Definition: ai_string.h:70
bool empty() const
Returns true if underlying char* is NULL or "".
Definition: ai_string.h:76