BLI: improve StringRef.copy
This commit is contained in:
parent
ebe0d7ca5e
commit
1f2b1d520f
|
@ -94,12 +94,28 @@ class StringRefBase {
|
|||
return m_data + m_size;
|
||||
}
|
||||
|
||||
void copy_to__with_null(char *dst) const
|
||||
void unsafe_copy(char *dst) const
|
||||
{
|
||||
memcpy(dst, m_data, m_size);
|
||||
dst[m_size] = '\0';
|
||||
}
|
||||
|
||||
void copy(char *dst, uint dst_size) const
|
||||
{
|
||||
if (m_size < dst_size) {
|
||||
this->unsafe_copy(dst);
|
||||
}
|
||||
else {
|
||||
BLI_assert(false);
|
||||
dst[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
template<uint N> void copy(char (&dst)[N])
|
||||
{
|
||||
this->copy(dst, N);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true when the string begins with the given prefix. Otherwise false.
|
||||
*/
|
||||
|
|
|
@ -237,3 +237,14 @@ TEST(string_ref, Substr)
|
|||
EXPECT_EQ(ref.substr(3, 4), "lo w");
|
||||
EXPECT_EQ(ref.substr(6, 5), "world");
|
||||
}
|
||||
|
||||
TEST(string_ref, Copy)
|
||||
{
|
||||
StringRef ref("hello");
|
||||
char dst[10];
|
||||
memset(dst, 0xFF, 10);
|
||||
ref.copy(dst);
|
||||
EXPECT_EQ(dst[5], '\0');
|
||||
EXPECT_EQ(dst[6], 0xFF);
|
||||
EXPECT_EQ(ref, dst);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue