FastLED 3.9.15
Loading...
Searching...
No Matches

◆ write() [2/8]

template<size_t SIZE = 64>
size_t fl::StrN< SIZE >::write ( const char * str,
size_t n )
inline

Definition at line 179 of file str.h.

179 {
180 size_t newLen = mLength + n;
181 if (mHeapData && !mHeapData->isShared()) {
182 if (!mHeapData->hasCapacity(newLen)) {
183 size_t grow_length = MAX(3, newLen * 3 / 2);
184 mHeapData->grow(grow_length); // Grow by 50%
185 }
186 memcpy(mHeapData->data() + mLength, str, n);
187 mLength = newLen;
188 mHeapData->data()[mLength] = '\0';
189 return mLength;
190 }
191 if (newLen + 1 <= SIZE) {
193 mLength = newLen;
194 mInlineData[mLength] = '\0';
195 return mLength;
196 }
197 mHeapData.reset();
199 if (newData) {
200 memcpy(newData->data(), c_str(), mLength);
201 memcpy(newData->data() + mLength, str, n);
202 newData->data()[newLen] = '\0';
204 mLength = newLen;
205 }
207 return mLength;
208 }
size_t mLength
Definition str.h:81
const char * c_str() const
Definition str.h:247
StringHolderPtr mHeapData
Definition str.h:83
char mInlineData[SIZE]
Definition str.h:82
Definition str.h:79
#define MAX(a, b)
Definition math_macros.h:4

References c_str(), MAX, mHeapData, mInlineData, and mLength.

+ Here is the call graph for this function: