void SC_StringBuffer::vappendf(const char* fmt, va_list ap) { va_list ap2; size_t remaining = getRemaining(); // Calling vsnprintf may invalidate vargs, so keep a copy #ifdef __va_copy __va_copy(ap2, ap); #else ap2 = ap; #endif // NOTE: This only works since glibc 2.0.6! int size = vsnprintf(mPtr, remaining, fmt, ap); va_end(ap); // size returned excludes trailing \0 if (size++ > 0) { if ((size_t)size > remaining) { growBy(size - remaining); vsnprintf(mPtr, size, fmt, ap2); } mPtr += size-1; // omit trailing \0 } va_end(ap2); }
void StringBuffer::appendHelper(char ch) { if (!valid()) makeValid(1); if (m_len == m_cap) { growBy(1); } m_buffer[m_len++] = ch; }
void StringBuffer::appendHelper(char ch) { if (!m_buffer) reserve(1); if (m_len == m_cap) { growBy(1); } m_buffer[m_len++] = ch; }
void StringBuffer::appendHelper(char ch) { if (!valid()) makeValid(1); if (m_len == m_cap) { growBy(1); } m_str->mutableData()[m_len++] = ch; }
void SC_StringBuffer::append(const char* src, size_t size) { if (size > 0) { size_t remaining = getRemaining(); if (size > remaining) { growBy(size - remaining); } memcpy(mPtr, src, size); mPtr += size; } }
void StringBuffer::appendHelper(const char *s, int len) { if (!valid()) makeValid(len); assert(s); assert(len >= 0); if (len <= 0) return; if (len > m_cap - m_len) { growBy(len); } memcpy(m_buffer + m_len, s, len); m_len += len; }
void StringBuffer::appendHelper(const char *s, int len) { if (!m_buffer) reserve(len); ASSERT(s); ASSERT(len >= 0); if (len <= 0) return; if (len > m_cap - m_len) { growBy(len); } memcpy(m_buffer + m_len, s, len); m_len += len; }
void StringBuffer::read(FILE* in, int page_size /* = 1024 */) { assert(in); assert(page_size > 0); if (!valid()) makeValid(page_size); while (true) { int buffer_size = m_cap - m_len; if (buffer_size < page_size) { growBy(page_size); buffer_size = m_cap - m_len; } size_t len = fread(m_buffer + m_len, 1, buffer_size, in); if (len == 0) break; m_len += len; } }
void StringBuffer::read(File* in, int page_size /* = 1024 */) { ASSERT(in); ASSERT(page_size > 0); if (!m_buffer) reserve(page_size); while (true) { int buffer_size = m_cap - m_len; if (buffer_size < page_size) { growBy(page_size); buffer_size = m_cap - m_len; } int len = in->readImpl(m_buffer + m_len, buffer_size); if (len == 0) break; m_len += len; } }
void StringBuffer::read(File* in, int page_size /* = 1024 */) { assert(in); assert(page_size > 0); if (!valid()) makeValid(page_size); while (true) { int buffer_size = m_cap - m_len; if (buffer_size < page_size) { growBy(page_size); buffer_size = m_cap - m_len; } int64_t len = in->readImpl(m_buffer + m_len, buffer_size); assert(len >= 0); if (len == 0) break; m_len += len; } }
SC_StringBuffer::SC_StringBuffer(const SC_StringBuffer& other) : mCapacity(0), mPtr(0), mData(0) { growBy(other.getSize()); append(other.getData(), other.getSize()); }
SC_StringBuffer::SC_StringBuffer(size_t initialSize) : mCapacity(0), mPtr(0), mData(0) { growBy(initialSize); }