Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
void StringBuffer::appendHelper(char ch) {
  if (!valid()) makeValid(1);
  if (m_len == m_cap) {
    growBy(1);
  }
  m_buffer[m_len++] = ch;
}
Ejemplo n.º 3
0
void StringBuffer::appendHelper(char ch) {
  if (!m_buffer) reserve(1);
  if (m_len == m_cap) {
    growBy(1);
  }
  m_buffer[m_len++] = ch;
}
Ejemplo n.º 4
0
void StringBuffer::appendHelper(char ch) {
  if (!valid()) makeValid(1);
  if (m_len == m_cap) {
    growBy(1);
  }
  m_str->mutableData()[m_len++] = ch;
}
Ejemplo n.º 5
0
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;
	}
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 7
0
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;
}
Ejemplo n.º 8
0
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;
  }
}
Ejemplo n.º 9
0
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;
  }
}
Ejemplo n.º 10
0
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;
  }
}
Ejemplo n.º 11
0
SC_StringBuffer::SC_StringBuffer(const SC_StringBuffer& other)
	: mCapacity(0), mPtr(0), mData(0)
{
	growBy(other.getSize());
	append(other.getData(), other.getSize());
}
Ejemplo n.º 12
0
SC_StringBuffer::SC_StringBuffer(size_t initialSize)
	: mCapacity(0), mPtr(0), mData(0)
{
	growBy(initialSize);
}