#include #include #include "utils/String.h" String::String() : length(0) { data[0] = '\0'; } String::String(const char* str) : length(0) { for(; length < MAX_LENGTH - 1 && str[length] != '\0'; length++) { data[length] = str[length]; } data[length] = '\0'; } bool String::operator==(const String& other) const { return length == other.length && strcmp(data, other.data) == 0; } bool String::operator!=(const String& other) const { return !(*this == other); } String::operator const char*() const { return data; } char String::operator[](uint index) const { return data[index]; } uint String::getLength() const { return length; } String& String::append(char c) { if(length < MAX_LENGTH - 1) { data[length++] = c; data[length] = '\0'; } return *this; } String& String::append(const char* str) { for(uint i = 0; length < MAX_LENGTH - 1 && str[i] != '\0'; length++, i++) { data[length] = str[i]; } data[length] = '\0'; return *this; } String& String::appendFormat(const char* format, void* value) { uint left = MAX_LENGTH - length; uint written = snprintf(data + length, left, format, value); if(written < left) { length += written; } else { length = MAX_LENGTH; } return *this; } String& String::append(uint i) { uint left = MAX_LENGTH - length; uint written = snprintf(data + length, left, "%u", i); if(written < left) { length += written; } else { length = MAX_LENGTH; } return *this; } String& String::append(int i) { uint left = MAX_LENGTH - length; uint written = snprintf(data + length, left, "%d", i); if(written < left) { length += written; } else { length = MAX_LENGTH; } return *this; } String& String::append(float f) { uint left = MAX_LENGTH - length; uint written = snprintf(data + length, left, "%.2f", f); if(written < left) { length += written; } else { length = MAX_LENGTH; } return *this; } String& String::append(bool b) { return append(b ? "true" : "false"); }