FastLED 3.10.8
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_NO_EXCEPT;
15 StringHolder(const char *str, size length) FL_NO_EXCEPT;
16 StringHolder(const StringHolder &other) FL_NO_EXCEPT = delete;
19
20 void grow(size newLength) FL_NO_EXCEPT;
21 bool hasCapacity(size newLength) const FL_NO_EXCEPT { return newLength + 1 <= mCapacity; }
22 const char *data() const FL_NO_EXCEPT { return mData; }
23 char *data() FL_NO_EXCEPT { return mData; }
24 size length() const FL_NO_EXCEPT { return mLength; }
25 size capacity() const FL_NO_EXCEPT { return mCapacity; }
26 bool copy(const char *str, size len) FL_NO_EXCEPT {
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
char * data() FL_NO_EXCEPT
bool copy(const char *str, size len) FL_NO_EXCEPT
const char * data() const FL_NO_EXCEPT
void grow(size newLength) FL_NO_EXCEPT
~StringHolder() FL_DTOR_NOEXCEPT
StringHolder(const StringHolder &other) FL_NO_EXCEPT=delete
size capacity() const FL_NO_EXCEPT
size length() const FL_NO_EXCEPT
bool hasCapacity(size newLength) const FL_NO_EXCEPT
StringHolder(const char *str) FL_NO_EXCEPT
StringHolder & operator=(const StringHolder &other) FL_NO_EXCEPT=delete
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
FASTLED_FORCE_INLINE void * memcpy(void *dest, const void *src, size_t n) FL_NO_EXCEPT
Definition cstring.h:136
Base definition for an LED controller.
Definition crgb.hpp:179
#define FL_DTOR_NOEXCEPT