FastLED 3.9.15
Loading...
Searching...
No Matches
string_holder.h
Go to the documentation of this file.
1#pragma once
2
3#include "fl/stl/int.h"
4#include "fl/stl/cstring.h"
5#include "fl/stl/noexcept.h"
6
7namespace fl {
8
9// StringHolder: Heap-allocated string storage with reference counting
10// Used when string exceeds inline buffer size
12 public:
13 StringHolder(const char *str) FL_NOEXCEPT;
15 StringHolder(const char *str, size length) FL_NOEXCEPT;
16 StringHolder(const StringHolder &other) FL_NOEXCEPT = delete;
19
20 void grow(size newLength) FL_NOEXCEPT;
21 bool hasCapacity(size newLength) const FL_NOEXCEPT { return newLength + 1 <= mCapacity; }
22 const char *data() const FL_NOEXCEPT { return mData; }
23 char *data() FL_NOEXCEPT { return mData; }
24 size length() const FL_NOEXCEPT { return mLength; }
25 size capacity() const FL_NOEXCEPT { return mCapacity; }
26 bool copy(const char *str, size len) FL_NOEXCEPT {
27 if ((len + 1) > mCapacity) {
28 return false;
29 }
30 memcpy(mData, str, len);
31 mData[len] = '\0';
32 mLength = len;
33 return true;
34 }
35
36 private:
37 char* mData;
38 size mLength = 0;
39 size mCapacity = 0;
40};
41
42} // namespace fl
StringHolder & operator=(const StringHolder &other) FL_NOEXCEPT=delete
size length() const FL_NOEXCEPT
bool copy(const char *str, size len) FL_NOEXCEPT
size capacity() const FL_NOEXCEPT
char * data() FL_NOEXCEPT
bool hasCapacity(size newLength) const FL_NOEXCEPT
void grow(size newLength) FL_NOEXCEPT
StringHolder(const char *str) FL_NOEXCEPT
StringHolder(const StringHolder &other) FL_NOEXCEPT=delete
~StringHolder() FL_NOEXCEPT
const char * data() const FL_NOEXCEPT
void * memcpy(void *dest, const void *src, size_t n) FL_NOEXCEPT
Base definition for an LED controller.
Definition crgb.hpp:179
#define FL_NOEXCEPT