From 7b8feddaa4eba704a7cdea73584516ecf028f801 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Fri, 9 Mar 2012 15:31:50 +0100 Subject: [PATCH 1/4] realloc in stringbuffer instead of malloc --- BasicsC/string-buffer.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/BasicsC/string-buffer.c b/BasicsC/string-buffer.c index 9ee4fdb944..a49c7d2bfb 100644 --- a/BasicsC/string-buffer.c +++ b/BasicsC/string-buffer.c @@ -55,19 +55,27 @@ static void Reserve (TRI_string_buffer_t * self, size_t size) { self->_bufferEnd = self->_buffer + size; } else if ((size_t)(self->_bufferEnd - self->_bufferPtr) < size) { - size_t newlen; - char * b; + size_t newlen, offset; + //char * b; + + //printf(">b: %zx , bp: %zx , be:%zx \n", self->_buffer, self->_bufferPtr, self->_bufferEnd); newlen = (size_t)(1.2 * ((self->_bufferEnd - self->_buffer) + size)); - b = TRI_Allocate(newlen + 1); +// b = TRI_Allocate(newlen + 1); + offset = (self->_bufferPtr - self->_buffer); + self->_buffer=TRI_Reallocate(self->_buffer,newlen +1); + self->_bufferPtr = self->_buffer+offset; + self->_bufferEnd = self->_buffer+newlen; - memcpy(b, self->_buffer, self->_bufferEnd - self->_buffer + 1); - - TRI_Free(self->_buffer); - - self->_bufferPtr = b + (self->_bufferPtr - self->_buffer); - self->_bufferEnd = b + newlen; - self->_buffer = b; + //printf("_buffer, self->_bufferPtr, self->_bufferEnd, newlen); +// +// memcpy(b, self->_buffer, self->_bufferEnd - self->_buffer + 1); +// +// TRI_Free(self->_buffer); +// +// self->_bufferPtr = b + (self->_bufferPtr - self->_buffer); +// self->_bufferEnd = b + newlen; +// self->_buffer = b; } } From a0f3d32dbef8ef643ef93d53c6fc68ea554f4116 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Fri, 9 Mar 2012 19:37:23 +0100 Subject: [PATCH 2/4] halftime --- BasicsC/string-buffer.c | 147 ++++++++++++++++++++++------------------ BasicsC/string-buffer.h | 2 + 2 files changed, 84 insertions(+), 65 deletions(-) diff --git a/BasicsC/string-buffer.c b/BasicsC/string-buffer.c index a49c7d2bfb..c9c44a98da 100644 --- a/BasicsC/string-buffer.c +++ b/BasicsC/string-buffer.c @@ -41,7 +41,12 @@ //////////////////////////////////////////////////////////////////////////////// static void AppendChar (TRI_string_buffer_t * self, char chr) { - *self->_bufferPtr++ = chr; + //*self->_bufferPtr++ = chr; + *(self->_buffer + self->_off++) = chr; +} + +static size_t Remaining (TRI_string_buffer_t * self) { + return self->_len - self->_off; } //////////////////////////////////////////////////////////////////////////////// @@ -49,23 +54,28 @@ static void AppendChar (TRI_string_buffer_t * self, char chr) { //////////////////////////////////////////////////////////////////////////////// static void Reserve (TRI_string_buffer_t * self, size_t size) { - if (self->_buffer == NULL) { - self->_buffer = (char*) TRI_Allocate(size + 1); - self->_bufferPtr = self->_buffer; - self->_bufferEnd = self->_buffer + size; + if (size > Remaining(self)) { + //size_t newlen = (size_t)(1.2 * (self->_len + size)); + self->_len = (size_t)(1.2 * (self->_len + size)); + self->_buffer = TRI_Reallocate(self->_buffer, self->_len+1); } - else if ((size_t)(self->_bufferEnd - self->_bufferPtr) < size) { - size_t newlen, offset; - //char * b; - - //printf(">b: %zx , bp: %zx , be:%zx \n", self->_buffer, self->_bufferPtr, self->_bufferEnd); - - newlen = (size_t)(1.2 * ((self->_bufferEnd - self->_buffer) + size)); -// b = TRI_Allocate(newlen + 1); - offset = (self->_bufferPtr - self->_buffer); - self->_buffer=TRI_Reallocate(self->_buffer,newlen +1); - self->_bufferPtr = self->_buffer+offset; - self->_bufferEnd = self->_buffer+newlen; +// if (self->_buffer == NULL) { +// self->_buffer = (char*) TRI_Allocate(size + 1); +// self->_off = 0; +// self->_len = size; +// //self->_bufferEnd = self->_buffer + size; +// } +// //else if ((size_t)(self->_bufferEnd - self->_bufferPtr) < size) { +// else if ((size_t)(self->_len - self->_off) < size) { +// size_t newlen; //, offset; +// //char * b; +// +// //printf(">b: %zx , bp: %zx , be:%zx \n", self->_buffer, self->_bufferPtr, self->_bufferEnd); +// +// newlen = (size_t)(1.2 * ( self->_len + size)); +//// b = TRI_Allocate(newlen + 1); +// self->_buffer=TRI_Reallocate(self->_buffer,newlen+1+1); +// self->_len = self->_len+newlen; //printf("_buffer, self->_bufferPtr, self->_bufferEnd, newlen); // @@ -76,7 +86,7 @@ static void Reserve (TRI_string_buffer_t * self, size_t size) { // self->_bufferPtr = b + (self->_bufferPtr - self->_buffer); // self->_bufferEnd = b + newlen; // self->_buffer = b; - } +// } } //////////////////////////////////////////////////////////////////////////////// @@ -99,12 +109,14 @@ static void Reserve (TRI_string_buffer_t * self, size_t size) { //////////////////////////////////////////////////////////////////////////////// void TRI_InitStringBuffer (TRI_string_buffer_t * self) { - self->_buffer = NULL; - self->_bufferPtr = NULL; - self->_bufferEnd = NULL; - +// self->_buffer = NULL; +// self->_bufferPtr = NULL; +// self->_bufferEnd = NULL; +// +// Reserve(self, 1); +// *self->_bufferPtr = 0; + memset (self, 0, sizeof(TRI_string_buffer_t)); Reserve(self, 1); - *self->_bufferPtr = 0; } //////////////////////////////////////////////////////////////////////////////// @@ -117,9 +129,11 @@ void TRI_FreeStringBuffer (TRI_string_buffer_t * self) { if (self->_buffer != NULL) { TRI_Free(self->_buffer); - self->_buffer = NULL; - self->_bufferPtr = NULL; - self->_bufferEnd = NULL; +// self->_buffer = NULL; +// self->_bufferPtr = NULL; +// self->_bufferEnd = NULL; + + memset (self, 0, sizeof(TRI_string_buffer_t)); } } @@ -135,9 +149,10 @@ void TRI_DestroyStringBuffer (TRI_string_buffer_t * self) { TRI_Free(self->_buffer); - self->_buffer = NULL; - self->_bufferPtr = NULL; - self->_bufferEnd = NULL; + memset (self, 0, sizeof(TRI_string_buffer_t)); +// self->_buffer = NULL; +// self->_bufferPtr = NULL; +// self->_bufferEnd = NULL; } } @@ -160,16 +175,16 @@ void TRI_DestroyStringBuffer (TRI_string_buffer_t * self) { void TRI_SwapStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t * other) { char * otherBuffer = other->_buffer; - char * otherBufferPtr = other->_bufferPtr; - char * otherBufferEnd = other->_bufferEnd; + ptrdiff_t otherOff = other->_off; + size_t otherLen = other->_len; other->_buffer = self->_buffer; - other->_bufferPtr = self->_bufferPtr; - other->_bufferEnd = self->_bufferEnd; + other->_off = self->_off; + other->_len = self->_len; self->_buffer = otherBuffer; - self->_bufferPtr = otherBufferPtr; - self->_bufferEnd = otherBufferEnd; + self->_off = otherOff; + self->_len = otherLen; } //////////////////////////////////////////////////////////////////////////////// @@ -185,7 +200,7 @@ char const * TRI_BeginStringBuffer (TRI_string_buffer_t const * self) { //////////////////////////////////////////////////////////////////////////////// char const * TRI_EndStringBuffer (TRI_string_buffer_t const * self) { - return self->_bufferPtr; + return self->_buffer + self->_len; } //////////////////////////////////////////////////////////////////////////////// @@ -193,7 +208,7 @@ char const * TRI_EndStringBuffer (TRI_string_buffer_t const * self) { //////////////////////////////////////////////////////////////////////////////// size_t TRI_LengthStringBuffer (TRI_string_buffer_t const * self) { - return self->_bufferPtr - self->_buffer; + return self->_off; } //////////////////////////////////////////////////////////////////////////////// @@ -201,7 +216,7 @@ size_t TRI_LengthStringBuffer (TRI_string_buffer_t const * self) { //////////////////////////////////////////////////////////////////////////////// bool TRI_EmptyStringBuffer (TRI_string_buffer_t const * self) { - return self->_bufferPtr == self->_buffer; + return self->_off == 0; } //////////////////////////////////////////////////////////////////////////////// @@ -209,13 +224,13 @@ bool TRI_EmptyStringBuffer (TRI_string_buffer_t const * self) { //////////////////////////////////////////////////////////////////////////////// void TRI_ClearStringBuffer (TRI_string_buffer_t * self) { - self->_bufferPtr = self->_buffer; + self->_off = 0; } //////////////////////////////////////////////////////////////////////////////// /// @brief copies the string buffer //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_CopyStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * source) { TRI_ReplaceStringStringBuffer(self, source->_buffer, source->_bufferPtr - source->_buffer); } @@ -223,7 +238,7 @@ void TRI_CopyStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const //////////////////////////////////////////////////////////////////////////////// /// @brief removes the first characters //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_EraseFrontStringBuffer (TRI_string_buffer_t * self, size_t len) { if ((size_t)(self->_bufferPtr - self->_buffer) <= len) { self->_bufferPtr = self->_buffer; @@ -237,7 +252,7 @@ void TRI_EraseFrontStringBuffer (TRI_string_buffer_t * self, size_t len) { //////////////////////////////////////////////////////////////////////////////// /// @brief replaces characters //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_ReplaceStringStringBuffer (TRI_string_buffer_t * self, char const * str, size_t len) { self->_bufferPtr = self->_buffer; @@ -247,7 +262,7 @@ void TRI_ReplaceStringStringBuffer (TRI_string_buffer_t * self, char const * str //////////////////////////////////////////////////////////////////////////////// /// @brief replaces characters //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_ReplaceStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * text) { self->_bufferPtr = self->_buffer; @@ -278,8 +293,10 @@ void TRI_ReplaceStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string void TRI_AppendCharStringBuffer (TRI_string_buffer_t * self, char chr) { Reserve(self, 2); - *self->_bufferPtr++ = chr; - *self->_bufferPtr = '\0'; + *(self->_buffer + self->_off) = chr; + ++(self->_off); + // bzero at init? + *(self->_buffer + self->_off) = '\0'; } //////////////////////////////////////////////////////////////////////////////// @@ -289,17 +306,17 @@ void TRI_AppendCharStringBuffer (TRI_string_buffer_t * self, char chr) { void TRI_AppendStringStringBuffer (TRI_string_buffer_t * self, char const * str) { size_t len = strlen(str); - Reserve(self, len + 1); + Reserve(self, len); - memcpy(self->_bufferPtr, str, len); - self->_bufferPtr += len; - *self->_bufferPtr = '\0'; + memcpy((self->_buffer + self->_off), str, len); + self->_off += len; + *(self->_buffer + self->_off) = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends characters //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendString2StringBuffer (TRI_string_buffer_t * self, char const * str, size_t len) { if (len == 0) { Reserve(self, 1); @@ -316,7 +333,7 @@ void TRI_AppendString2StringBuffer (TRI_string_buffer_t * self, char const * str //////////////////////////////////////////////////////////////////////////////// /// @brief appends a string buffer //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * text) { TRI_AppendString2StringBuffer(self, text->_buffer, text->_bufferPtr - text->_buffer); } @@ -324,7 +341,7 @@ void TRI_AppendStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string_ //////////////////////////////////////////////////////////////////////////////// /// @brief appends a blob //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendBlobStringBuffer (TRI_string_buffer_t * self, TRI_blob_t const * text) { TRI_AppendString2StringBuffer(self, text->data, text->length); } @@ -332,7 +349,7 @@ void TRI_AppendBlobStringBuffer (TRI_string_buffer_t * self, TRI_blob_t const * //////////////////////////////////////////////////////////////////////////////// /// @brief appends eol character //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendEolStringBuffer (TRI_string_buffer_t * self) { TRI_AppendCharStringBuffer(self, '\n'); } @@ -357,7 +374,7 @@ void TRI_AppendEolStringBuffer (TRI_string_buffer_t * self) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with two digits //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendInteger2StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { Reserve(self, 3); @@ -370,7 +387,7 @@ void TRI_AppendInteger2StringBuffer (TRI_string_buffer_t * self, uint32_t attr) //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with three digits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendInteger3StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { Reserve(self, 4); @@ -384,7 +401,7 @@ void TRI_AppendInteger3StringBuffer (TRI_string_buffer_t * self, uint32_t attr) //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with four digits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendInteger4StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { Reserve(self, 5); @@ -399,7 +416,7 @@ void TRI_AppendInteger4StringBuffer (TRI_string_buffer_t * self, uint32_t attr) //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 8 bits //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendInt8StringBuffer (TRI_string_buffer_t * self, int8_t attr) { if (attr == INT8_MIN) { TRI_AppendString2StringBuffer(self, "-128", 4); @@ -425,7 +442,7 @@ void TRI_AppendInt8StringBuffer (TRI_string_buffer_t * self, int8_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 8 bits //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendUInt8StringBuffer (TRI_string_buffer_t * self, uint8_t attr) { Reserve(self, 4); @@ -440,7 +457,7 @@ void TRI_AppendUInt8StringBuffer (TRI_string_buffer_t * self, uint8_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 16 bits //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendInt16StringBuffer (TRI_string_buffer_t * self, int16_t attr) { if (attr == INT16_MIN) { TRI_AppendString2StringBuffer(self, "-32768", 6); @@ -467,7 +484,7 @@ void TRI_AppendInt16StringBuffer (TRI_string_buffer_t * self, int16_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 32 bits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendUInt16StringBuffer (TRI_string_buffer_t * self, uint16_t attr) { Reserve(self, 6); @@ -484,7 +501,7 @@ void TRI_AppendUInt16StringBuffer (TRI_string_buffer_t * self, uint16_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 32 bits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendInt32StringBuffer (TRI_string_buffer_t * self, int32_t attr) { if (attr == INT32_MIN) { TRI_AppendString2StringBuffer(self, "-2147483648", 11); @@ -516,7 +533,7 @@ void TRI_AppendInt32StringBuffer (TRI_string_buffer_t * self, int32_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 32 bits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendUInt32StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { Reserve(self, 11); @@ -538,7 +555,7 @@ void TRI_AppendUInt32StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 64 bits //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendInt64StringBuffer (TRI_string_buffer_t * self, int64_t attr) { if (attr == INT64_MIN) { TRI_AppendString2StringBuffer(self, "-9223372036854775808", 20); @@ -585,7 +602,7 @@ void TRI_AppendInt64StringBuffer (TRI_string_buffer_t * self, int64_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 64 bits //////////////////////////////////////////////////////////////////////////////// - +//TODO void TRI_AppendUInt64StringBuffer (TRI_string_buffer_t * self, uint64_t attr) { if ((attr >> 32) == 0) { TRI_AppendUInt32StringBuffer(self, (uint32_t) attr); @@ -623,7 +640,7 @@ void TRI_AppendUInt64StringBuffer (TRI_string_buffer_t * self, uint64_t attr) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends size_t //////////////////////////////////////////////////////////////////////////////// - +// TODO void TRI_AppendSizeStringBuffer (TRI_string_buffer_t * self, size_t attr) { #if TRI_SIZEOF_SIZE_T == 8 TRI_AppendUInt64StringBuffer(self, (uint64_t) attr); diff --git a/BasicsC/string-buffer.h b/BasicsC/string-buffer.h index 7d9af89dd9..97f17c4280 100644 --- a/BasicsC/string-buffer.h +++ b/BasicsC/string-buffer.h @@ -51,6 +51,8 @@ typedef struct TRI_string_buffer_s { char * _buffer; char * _bufferPtr; char * _bufferEnd; + ptrdiff_t _off; + size_t _len; } TRI_string_buffer_t; From 2112ccbe24b2129a33499913f8ccbd922c692a52 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Sat, 10 Mar 2012 14:49:21 +0100 Subject: [PATCH 3/4] string-buffer using realloc --- .gitignore | 3 + BasicsC/string-buffer.c | 169 ++++++++++++---------------------------- 2 files changed, 52 insertions(+), 120 deletions(-) diff --git a/.gitignore b/.gitignore index f38385704b..95c7a1ec33 100644 --- a/.gitignore +++ b/.gitignore @@ -60,4 +60,7 @@ ARCH.* avocsh libavocado.a *.swp +<<<<<<< Updated upstream tags +======= +>>>>>>> Stashed changes diff --git a/BasicsC/string-buffer.c b/BasicsC/string-buffer.c index c9c44a98da..37bebeeae7 100644 --- a/BasicsC/string-buffer.c +++ b/BasicsC/string-buffer.c @@ -41,10 +41,12 @@ //////////////////////////////////////////////////////////////////////////////// static void AppendChar (TRI_string_buffer_t * self, char chr) { - //*self->_bufferPtr++ = chr; *(self->_buffer + self->_off++) = chr; } +//////////////////////////////////////////////////////////////////////////////// +/// @brief how much space is presently left in buffer? +//////////////////////////////////////////////////////////////////////////////// static size_t Remaining (TRI_string_buffer_t * self) { return self->_len - self->_off; } @@ -54,39 +56,19 @@ static size_t Remaining (TRI_string_buffer_t * self) { //////////////////////////////////////////////////////////////////////////////// static void Reserve (TRI_string_buffer_t * self, size_t size) { + if (size < 1) { + return; + } if (size > Remaining(self)) { - //size_t newlen = (size_t)(1.2 * (self->_len + size)); self->_len = (size_t)(1.2 * (self->_len + size)); self->_buffer = TRI_Reallocate(self->_buffer, self->_len+1); + memset(self->_buffer+self->_off, 0, Remaining(self)+1); +#if I_CARE_ABOUT_MALLOC_FAILURES + if (NULL == self->_buffer) { + abort(); + } +#endif } -// if (self->_buffer == NULL) { -// self->_buffer = (char*) TRI_Allocate(size + 1); -// self->_off = 0; -// self->_len = size; -// //self->_bufferEnd = self->_buffer + size; -// } -// //else if ((size_t)(self->_bufferEnd - self->_bufferPtr) < size) { -// else if ((size_t)(self->_len - self->_off) < size) { -// size_t newlen; //, offset; -// //char * b; -// -// //printf(">b: %zx , bp: %zx , be:%zx \n", self->_buffer, self->_bufferPtr, self->_bufferEnd); -// -// newlen = (size_t)(1.2 * ( self->_len + size)); -//// b = TRI_Allocate(newlen + 1); -// self->_buffer=TRI_Reallocate(self->_buffer,newlen+1+1); -// self->_len = self->_len+newlen; - - //printf("_buffer, self->_bufferPtr, self->_bufferEnd, newlen); -// -// memcpy(b, self->_buffer, self->_bufferEnd - self->_buffer + 1); -// -// TRI_Free(self->_buffer); -// -// self->_bufferPtr = b + (self->_bufferPtr - self->_buffer); -// self->_bufferEnd = b + newlen; -// self->_buffer = b; -// } } //////////////////////////////////////////////////////////////////////////////// @@ -109,12 +91,6 @@ static void Reserve (TRI_string_buffer_t * self, size_t size) { //////////////////////////////////////////////////////////////////////////////// void TRI_InitStringBuffer (TRI_string_buffer_t * self) { -// self->_buffer = NULL; -// self->_bufferPtr = NULL; -// self->_bufferEnd = NULL; -// -// Reserve(self, 1); -// *self->_bufferPtr = 0; memset (self, 0, sizeof(TRI_string_buffer_t)); Reserve(self, 1); } @@ -128,10 +104,6 @@ void TRI_InitStringBuffer (TRI_string_buffer_t * self) { void TRI_FreeStringBuffer (TRI_string_buffer_t * self) { if (self->_buffer != NULL) { TRI_Free(self->_buffer); - -// self->_buffer = NULL; -// self->_bufferPtr = NULL; -// self->_bufferEnd = NULL; memset (self, 0, sizeof(TRI_string_buffer_t)); } @@ -145,14 +117,11 @@ void TRI_FreeStringBuffer (TRI_string_buffer_t * self) { void TRI_DestroyStringBuffer (TRI_string_buffer_t * self) { if (self->_buffer != NULL) { + // somewhat paranoid? memset(self->_buffer, 0, self->_bufferEnd - self->_buffer); - TRI_Free(self->_buffer); memset (self, 0, sizeof(TRI_string_buffer_t)); -// self->_buffer = NULL; -// self->_bufferPtr = NULL; -// self->_bufferEnd = NULL; } } @@ -174,17 +143,17 @@ void TRI_DestroyStringBuffer (TRI_string_buffer_t * self) { //////////////////////////////////////////////////////////////////////////////// void TRI_SwapStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t * other) { - char * otherBuffer = other->_buffer; - ptrdiff_t otherOff = other->_off; - size_t otherLen = other->_len; + char * otherBuffer= other->_buffer; + ptrdiff_t otherOff= other->_off; + size_t otherLen = other->_len; other->_buffer = self->_buffer; other->_off = self->_off; other->_len = self->_len; - self->_buffer = otherBuffer; - self->_off = otherOff; - self->_len = otherLen; + self->_buffer = otherBuffer; + self->_off = otherOff; + self->_len = otherLen; } //////////////////////////////////////////////////////////////////////////////// @@ -200,7 +169,7 @@ char const * TRI_BeginStringBuffer (TRI_string_buffer_t const * self) { //////////////////////////////////////////////////////////////////////////////// char const * TRI_EndStringBuffer (TRI_string_buffer_t const * self) { - return self->_buffer + self->_len; + return self->_buffer + self->_off; } //////////////////////////////////////////////////////////////////////////////// @@ -225,48 +194,45 @@ bool TRI_EmptyStringBuffer (TRI_string_buffer_t const * self) { void TRI_ClearStringBuffer (TRI_string_buffer_t * self) { self->_off = 0; + memset(self->_buffer, 0, self->_len+1); } //////////////////////////////////////////////////////////////////////////////// /// @brief copies the string buffer //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_CopyStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * source) { - TRI_ReplaceStringStringBuffer(self, source->_buffer, source->_bufferPtr - source->_buffer); + TRI_ReplaceStringStringBuffer(self, source->_buffer, source->_off); } //////////////////////////////////////////////////////////////////////////////// /// @brief removes the first characters //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_EraseFrontStringBuffer (TRI_string_buffer_t * self, size_t len) { - if ((size_t)(self->_bufferPtr - self->_buffer) <= len) { - self->_bufferPtr = self->_buffer; + if (self->_off <= len) { + TRI_ClearStringBuffer(self); } else if (0 < len) { - memmove(self->_buffer, self->_buffer + len, self->_bufferPtr - self->_buffer - len); - self->_bufferPtr -= len; + memmove(self->_buffer, self->_buffer+len, self->_off - len); + self->_off -= len; + memset (self->_buffer + self->_off, 0, self->_len); } } //////////////////////////////////////////////////////////////////////////////// /// @brief replaces characters //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_ReplaceStringStringBuffer (TRI_string_buffer_t * self, char const * str, size_t len) { - self->_bufferPtr = self->_buffer; - + self->_off = 0; TRI_AppendString2StringBuffer(self, str, len); } //////////////////////////////////////////////////////////////////////////////// /// @brief replaces characters //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_ReplaceStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * text) { - self->_bufferPtr = self->_buffer; + self->_off = 0; - TRI_AppendString2StringBuffer(self, text->_buffer, text->_bufferPtr - text->_buffer); + TRI_AppendString2StringBuffer(self, text->_buffer, text->_off); } //////////////////////////////////////////////////////////////////////////////// @@ -316,32 +282,27 @@ void TRI_AppendStringStringBuffer (TRI_string_buffer_t * self, char const * str) //////////////////////////////////////////////////////////////////////////////// /// @brief appends characters //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendString2StringBuffer (TRI_string_buffer_t * self, char const * str, size_t len) { if (len == 0) { - Reserve(self, 1); - *self->_bufferPtr = '\0'; + return; } else { - Reserve(self, len + 1); - memcpy(self->_bufferPtr, str, len); - self->_bufferPtr += len; - *self->_bufferPtr = '\0'; + Reserve(self, len); + memcpy(self->_buffer+self->_off, str, len); + self->_off += len; } } //////////////////////////////////////////////////////////////////////////////// /// @brief appends a string buffer //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendStringBufferStringBuffer (TRI_string_buffer_t * self, TRI_string_buffer_t const * text) { - TRI_AppendString2StringBuffer(self, text->_buffer, text->_bufferPtr - text->_buffer); + TRI_AppendString2StringBuffer(self, text->_buffer, text->_off); } //////////////////////////////////////////////////////////////////////////////// /// @brief appends a blob //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendBlobStringBuffer (TRI_string_buffer_t * self, TRI_blob_t const * text) { TRI_AppendString2StringBuffer(self, text->data, text->length); } @@ -349,7 +310,6 @@ void TRI_AppendBlobStringBuffer (TRI_string_buffer_t * self, TRI_blob_t const * //////////////////////////////////////////////////////////////////////////////// /// @brief appends eol character //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendEolStringBuffer (TRI_string_buffer_t * self) { TRI_AppendCharStringBuffer(self, '\n'); } @@ -374,56 +334,48 @@ void TRI_AppendEolStringBuffer (TRI_string_buffer_t * self) { //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with two digits //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendInteger2StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - Reserve(self, 3); + Reserve(self, 2); AppendChar(self, (attr / 10U) % 10 + '0'); AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with three digits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendInteger3StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - Reserve(self, 4); + Reserve(self, 3); AppendChar(self, (attr / 100U) % 10 + '0'); AppendChar(self, (attr / 10U) % 10 + '0'); AppendChar(self, attr % 10 + '0'); - - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with four digits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendInteger4StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - Reserve(self, 5); + Reserve(self, 4); AppendChar(self, (attr / 1000U) % 10 + '0'); AppendChar(self, (attr / 100U) % 10 + '0'); AppendChar(self, (attr / 10U) % 10 + '0'); AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 8 bits //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendInt8StringBuffer (TRI_string_buffer_t * self, int8_t attr) { if (attr == INT8_MIN) { TRI_AppendString2StringBuffer(self, "-128", 4); return; } - Reserve(self, 5); + Reserve(self, 4); if (attr < 0) { AppendChar(self, '-'); @@ -436,35 +388,31 @@ void TRI_AppendInt8StringBuffer (TRI_string_buffer_t * self, int8_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 8 bits //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendUInt8StringBuffer (TRI_string_buffer_t * self, uint8_t attr) { - Reserve(self, 4); + Reserve(self, 3); if (100U <= attr) { AppendChar(self, (attr / 100U) % 10 + '0'); } if ( 10U <= attr) { AppendChar(self, (attr / 10U) % 10 + '0'); } AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 16 bits //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendInt16StringBuffer (TRI_string_buffer_t * self, int16_t attr) { if (attr == INT16_MIN) { TRI_AppendString2StringBuffer(self, "-32768", 6); return; } - Reserve(self, 7); + Reserve(self, 6); if (attr < 0) { AppendChar(self, '-'); @@ -478,15 +426,13 @@ void TRI_AppendInt16StringBuffer (TRI_string_buffer_t * self, int16_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 32 bits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendUInt16StringBuffer (TRI_string_buffer_t * self, uint16_t attr) { - Reserve(self, 6); + Reserve(self, 5); if (10000U <= attr) { AppendChar(self, (attr / 10000U) % 10 + '0'); } if ( 1000U <= attr) { AppendChar(self, (attr / 1000U) % 10 + '0'); } @@ -494,21 +440,18 @@ void TRI_AppendUInt16StringBuffer (TRI_string_buffer_t * self, uint16_t attr) { if ( 10U <= attr) { AppendChar(self, (attr / 10U) % 10 + '0'); } AppendChar(self, attr % 10 + '0'); - - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 32 bits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendInt32StringBuffer (TRI_string_buffer_t * self, int32_t attr) { if (attr == INT32_MIN) { TRI_AppendString2StringBuffer(self, "-2147483648", 11); return; } - Reserve(self, 12); + Reserve(self, 11); if (attr < 0) { AppendChar(self, '-'); @@ -527,15 +470,13 @@ void TRI_AppendInt32StringBuffer (TRI_string_buffer_t * self, int32_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 32 bits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendUInt32StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - Reserve(self, 11); + Reserve(self, 10); if (1000000000U <= attr) { AppendChar(self, (attr / 1000000000U) % 10 + '0'); } if ( 100000000U <= attr) { AppendChar(self, (attr / 100000000U) % 10 + '0'); } @@ -549,13 +490,11 @@ void TRI_AppendUInt32StringBuffer (TRI_string_buffer_t * self, uint32_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends integer with 64 bits //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendInt64StringBuffer (TRI_string_buffer_t * self, int64_t attr) { if (attr == INT64_MIN) { TRI_AppendString2StringBuffer(self, "-9223372036854775808", 20); @@ -596,13 +535,11 @@ void TRI_AppendInt64StringBuffer (TRI_string_buffer_t * self, int64_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends unsigned integer with 64 bits //////////////////////////////////////////////////////////////////////////////// -//TODO void TRI_AppendUInt64StringBuffer (TRI_string_buffer_t * self, uint64_t attr) { if ((attr >> 32) == 0) { TRI_AppendUInt32StringBuffer(self, (uint32_t) attr); @@ -634,13 +571,11 @@ void TRI_AppendUInt64StringBuffer (TRI_string_buffer_t * self, uint64_t attr) { AppendChar(self, attr % 10 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// /// @brief appends size_t //////////////////////////////////////////////////////////////////////////////// -// TODO void TRI_AppendSizeStringBuffer (TRI_string_buffer_t * self, size_t attr) { #if TRI_SIZEOF_SIZE_T == 8 TRI_AppendUInt64StringBuffer(self, (uint64_t) attr); @@ -671,7 +606,7 @@ void TRI_AppendSizeStringBuffer (TRI_string_buffer_t * self, size_t attr) { //////////////////////////////////////////////////////////////////////////////// void TRI_AppendUInt32OctalStringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - Reserve(self, 9); + Reserve(self, 8); if (010000000U <= attr) { AppendChar(self, (attr / 010000000U) % 010 + '0'); } if ( 01000000U <= attr) { AppendChar(self, (attr / 01000000U) % 010 + '0'); } @@ -683,7 +618,6 @@ void TRI_AppendUInt32OctalStringBuffer (TRI_string_buffer_t * self, uint32_t att AppendChar(self, attr % 010 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// @@ -691,7 +625,7 @@ void TRI_AppendUInt32OctalStringBuffer (TRI_string_buffer_t * self, uint32_t att //////////////////////////////////////////////////////////////////////////////// void TRI_AppendUInt64OctalStringBuffer (TRI_string_buffer_t * self, uint64_t attr) { - Reserve(self, 17); + Reserve(self, 16); if (01000000000000000ULL <= attr) { AppendChar(self, (attr / 01000000000000000ULL) % 010 + '0'); } if ( 0100000000000000ULL <= attr) { AppendChar(self, (attr / 0100000000000000ULL) % 010 + '0'); } @@ -711,7 +645,6 @@ void TRI_AppendUInt64OctalStringBuffer (TRI_string_buffer_t * self, uint64_t att AppendChar(self, attr % 010 + '0'); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// @@ -747,10 +680,10 @@ void TRI_AppendSizeOctalStringBuffer (TRI_string_buffer_t * self, size_t attr) { /// @brief appends unsigned integer with 32 bits in hex //////////////////////////////////////////////////////////////////////////////// +static char const * const HEX = "0123456789ABCDEF"; void TRI_AppendUInt32HexStringBuffer (TRI_string_buffer_t * self, uint32_t attr) { - static char const * const HEX = "0123456789ABCDEF"; - Reserve(self, 5); + Reserve(self, 4); if (0x1000U <= attr) { AppendChar(self, HEX[(attr / 0x1000U) % 0x10]); } if ( 0x100U <= attr) { AppendChar(self, HEX[(attr / 0x100U) % 0x10]); } @@ -758,7 +691,6 @@ void TRI_AppendUInt32HexStringBuffer (TRI_string_buffer_t * self, uint32_t attr) AppendChar(self, HEX[attr % 0x10]); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// @@ -766,9 +698,8 @@ void TRI_AppendUInt32HexStringBuffer (TRI_string_buffer_t * self, uint32_t attr) //////////////////////////////////////////////////////////////////////////////// void TRI_AppendUInt64HexStringBuffer (TRI_string_buffer_t * self, uint64_t attr) { - static char const * const HEX = "0123456789ABCDEF"; - Reserve(self, 9); + Reserve(self, 8); if (0x10000000U <= attr) { AppendChar(self, HEX[(attr / 0x10000000U) % 0x10]); } if ( 0x1000000U <= attr) { AppendChar(self, HEX[(attr / 0x1000000U) % 0x10]); } @@ -780,7 +711,6 @@ void TRI_AppendUInt64HexStringBuffer (TRI_string_buffer_t * self, uint64_t attr) AppendChar(self, HEX[attr % 0x10]); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// @@ -1018,7 +948,6 @@ void TRI_AppendTimeStringBuffer (TRI_string_buffer_t * self, int32_t attr) { AppendChar(self, ':'); TRI_AppendInteger2StringBuffer(self, second); - *self->_bufferPtr = '\0'; } //////////////////////////////////////////////////////////////////////////////// From 94550a0d57bbd8773b0c182cf9ce8f2680a0d941 Mon Sep 17 00:00:00 2001 From: Tim Becker Date: Sat, 10 Mar 2012 15:09:37 +0100 Subject: [PATCH 4/4] urgh missed conflict marker --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 95c7a1ec33..f38385704b 100644 --- a/.gitignore +++ b/.gitignore @@ -60,7 +60,4 @@ ARCH.* avocsh libavocado.a *.swp -<<<<<<< Updated upstream tags -======= ->>>>>>> Stashed changes