Style fixes. No functional changes.

* Parameter renamed from s to string.
 * HasZeroByte renamed to LACKS_ZERO_BYTE and the check is inverted.
 * Removed space between cast and variable.
This commit is contained in:
Fredrik Holmqvist
2011-12-26 18:24:22 +01:00
parent 11048d3619
commit 7928259c69
2 changed files with 20 additions and 16 deletions
+9 -7
View File
@@ -9,26 +9,28 @@
/* From Bit twiddling hacks:
http://graphics.stanford.edu/~seander/bithacks.html */
#define HasZeroByte(value) ((value - 0x01010101) & ~value & 0x80808080)
#define LACKS_ZERO_BYTE(value) \
(((value - 0x01010101) & ~value & 0x80808080) == 0)
size_t
strlen(const char* s)
strlen(const char* string)
{
size_t length = 0;
uint32* valuePointer;
/* Align access for four byte reads */
for (; (((addr_t) s + length) & 3) != 0; length++)
if (s[length] == '\0')
for (; (((addr_t)string + length) & 3) != 0; length++)
if (string[length] == '\0')
return length;
/* Check four bytes for zero char */
for (valuePointer = (uint32*) (s + length); !HasZeroByte(*valuePointer);
valuePointer++);
for (valuePointer = (uint32*)(string + length);
LACKS_ZERO_BYTE(*valuePointer); valuePointer++);
/* Find the exact length */
for (length = ((char*) valuePointer) - s; s[length] != '\0'; length++);
for (length = ((char*)valuePointer) - string; string[length] != '\0';
length++);
return length;
}
+11 -9
View File
@@ -9,29 +9,31 @@
/* From Bit twiddling hacks:
http://graphics.stanford.edu/~seander/bithacks.html */
#define HasZeroByte(value) ((value - 0x01010101) & ~value & 0x80808080)
#define LACKS_ZERO_BYTE(value) \
(((value - 0x01010101) & ~value & 0x80808080) == 0)
size_t
strnlen(const char* s, size_t count)
strnlen(const char* string, size_t count)
{
size_t length = 0;
uint32* valuePointer;
uint32* maxScanPosition;
/* Align access for four byte reads */
for (; (((addr_t) s + length) & 3) != 0; length++)
if (length == count || s[length] == '\0')
for (; (((addr_t)string + length) & 3) != 0; length++)
if (length == count || string[length] == '\0')
return length;
/* Check four bytes for zero char */
maxScanPosition = (uint32*) (s + count - 4);
for (valuePointer = (uint32*) (s + length); valuePointer <= maxScanPosition
&& !HasZeroByte(*valuePointer); valuePointer++);
maxScanPosition = (uint32*)(string + count - 4);
for (valuePointer = (uint32*)(string + length);
valuePointer <= maxScanPosition && LACKS_ZERO_BYTE(*valuePointer);
valuePointer++);
/* Find the exact length */
for (length = ((char*) valuePointer) - s; length < count
&& s[length] != '\0'; length++);
for (length = ((char*)valuePointer) - string; length < count
&& string[length] != '\0'; length++);
return length;
}