mbed.org implementation of the abstract SmartREST library for the Cumulocity Platform SmartREST protocol.
Dependents: MbedSmartRestMain MbedSmartRestMain
Diff: CharValue.cpp
- Revision:
- 11:e1bee9a77652
- Parent:
- 7:8159a2d12e4e
--- a/CharValue.cpp Thu Oct 23 14:41:58 2014 +0200 +++ b/CharValue.cpp Sat Nov 15 11:21:01 2014 +0100 @@ -32,122 +32,133 @@ #include <string.h> #include <ctype.h> + +/*-------------------------------------------------------------------------*/ CharValue::CharValue(const char *str, bool copy) { - if ((str == NULL) || (*str == '\0')) { - _alloc = false; - _str = NULL; - } else { - _alloc = copy; - if (copy) { - _str = (const char*)malloc(strlen(str)*sizeof(char)); - if (_str == NULL) - return; - strcpy((char*)_str, str); - _escape = escapeCheck(); - } else { - _str = str; - _escape = escapeCheck(); - } - } + if ((str == NULL) || (*str == '\0')) + { + _alloc = false; + _str = NULL; + } + else + { + _alloc = copy; + if (copy) + { + _str = (const char*)malloc(strlen(str)*sizeof(char)); + if (_str == NULL) + return; + strcpy((char*)_str, str); + _escape = escapeCheck(); + } + else + { + _str = str; + _escape = escapeCheck(); + } + } } - +/*-------------------------------------------------------------------------*/ CharValue::~CharValue() { - if (_alloc) - free((void*)_str); + if (_alloc) + free((void*)_str); } - +/*-------------------------------------------------------------------------*/ uint8_t CharValue::valueType() const { - if (_str == NULL) - return VALUE_NULL; - return VALUE_CHARACTER; + if (_str == NULL) + return VALUE_NULL; + return VALUE_CHARACTER; } - +/*-------------------------------------------------------------------------*/ long CharValue::integerValue() const { - return 0; + return 0; } - +/*-------------------------------------------------------------------------*/ double CharValue::floatValue() const { - return 0.0; + return 0.0; } - +/*-------------------------------------------------------------------------*/ const char * CharValue::characterValue() const { - return _str; + return _str; } - +/*-------------------------------------------------------------------------*/ size_t CharValue::write(AbstractDataSink& sink) const { - size_t n; - const char *ptr; char c; + size_t n; + const char *ptr; char c; - if (_str == NULL) - return 0; + if (_str == NULL) + return 0; - n = 0; - if (_escape) - n += sink.write('"'); + n = 0; + if (_escape) + n += sink.write('"'); - for (ptr = _str; (c = *ptr) != '\0'; ptr++) { - if ((_escape) && (c == '"')) - n += sink.write('"'); - n += sink.write(c); - } + for (ptr = _str; (c = *ptr) != '\0'; ptr++) + { + if ((_escape) && (c == '"')) + n += sink.write('"'); + n += sink.write(c); + } - if (_escape) - n += sink.write('"'); - return n; + if (_escape) + n += sink.write('"'); + return n; } - +/*-------------------------------------------------------------------------*/ size_t CharValue::length() const { - size_t n; - const char *ptr; char c; + size_t n; + const char *ptr; char c; - if (_str == NULL) - return 0; + if (_str == NULL) + return 0; - n = 0; - if (_escape) - n += 2; + n = 0; + if (_escape) + n += 2; - for (ptr = _str; (c = *ptr) != '\0'; ptr++) { - if ((_escape) && (c == '"')) - n++; - n++; - } + for (ptr = _str; (c = *ptr) != '\0'; ptr++) + { + if ((_escape) && (c == '"')) + n++; + n++; + } - return n; + return n; } - +/*-------------------------------------------------------------------------*/ Value* CharValue::copy() const { - if (_str == NULL) - return new NullValue(); - return new CharValue(_str, true); + if (_str == NULL) + return new NullValue(); + return new CharValue(_str, true); } - +/*-------------------------------------------------------------------------*/ bool CharValue::escapeCheck() { - const char *ptr; char c; + const char *ptr; char c; - ptr = _str; - while (*ptr != '\0') { - c = *ptr; - if ((isspace(c)) && ((ptr == _str) || (c != ' '))) - return true; - else if ((c == '"') || (c == ',')) - return true; - ptr++; - } + ptr = _str; + while (*ptr != '\0') + { + c = *ptr; + if ((isspace(c)) && ((ptr == _str) || (c != ' '))) + return true; + else if ((c == '"') || (c == ',')) + return true; + ptr++; + } - if (isspace(c)) - return true; + if (isspace(c)) + return true; - return false; + return false; } - +/*-------------------------------------------------------------------------*/