28AI_API
const char* AiCreateAtStringData_private(
const char*);
29AI_API AI_PURE
size_t AiAtStringLength(
const char*);
30AI_API AI_PURE AI_DEVICE
size_t AiAtStringHash(
const char*);
56 AI_DEVICE
AtString() : data(NULL) { }
64 explicit AtString(
const char* str) { data = AiCreateAtStringData_private(str); }
70 AI_DEVICE
bool operator!= (
const AtString &rhs)
const {
return data != rhs.data; }
74 size_t length()
const {
return AiAtStringLength(data); }
82 AI_DEVICE
bool empty()
const;
99 operator const char*()
const {
return c_str(); }
105 AI_DEVICE
const char*
c_str()
const {
return data; }
107 AI_DEVICE
void clear() { data = NULL; }
114 AI_DEVICE
size_t hash()
const {
return AiAtStringHash(data); }
119 friend void setAtStringInternalData(
AtString &str,
const char* data);
128 bool operator!= (
const char* rhs)
const;
130 AI_UNAVAILABLE
friend inline bool operator!=(
const char* lhs,
const AtString& rhs);
141 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:139
Arnold String allows for fast string comparisons.
Definition: ai_string.h:54
AI_DEVICE size_t hash() const
Returns a hashed version of the string.
Definition: ai_string.h:114
AI_DEVICE const char * c_str() const
Returns the string as a const char*.
Definition: ai_string.h:105
AI_DEVICE bool operator==(const AtString &rhs) const
Comparing two AtString objects is an extremely fast pointer comparison.
Definition: ai_string.h:69
AtString(const char *str)
Creating an AtString from a char* is an expensive operation.
Definition: ai_string.h:64
size_t length() const
Computing the length is a fast constant time operation.
Definition: ai_string.h:74
bool empty() const
Returns true if underlying char* is NULL or "".
Definition: ai_string.h:80