Reduced usages of EscapedString

This commit is contained in:
Benoit Blanchon
2014-08-01 15:22:30 +02:00
parent 1a01800782
commit 7c99d4d63d
6 changed files with 20 additions and 25 deletions

View File

@ -6,7 +6,6 @@
#pragma once
#include "Print.h"
#include <string.h> // for strcmp
namespace ArduinoJson
{
@ -16,18 +15,13 @@ namespace ArduinoJson
{
public:
void set(const char* s)
{
rawString = s;
EscapedString(const char* s)
: rawString(s)
{
}
size_t printTo(Print&) const;
bool equals(char const* s)
{
return strcmp(s, rawString) == 0;
}
private:
const char* rawString;
};

View File

@ -4,6 +4,7 @@
*/
#include "JsonObjectBase.h"
#include <string.h> // for strcmp
using namespace ArduinoJson::Generator;
using namespace ArduinoJson::Internals;
@ -19,7 +20,7 @@ size_t JsonObjectBase::printTo(Print& p) const
const KeyValuePair* current = items;
for (int i = count; i > 0; i--)
{
n += current->key.printTo(p);
n += EscapedString(current->key).printTo(p);
n += p.write(':');
n += current->value.printTo(p);
@ -40,7 +41,7 @@ JsonValue& JsonObjectBase::operator[](char const* key)
{
for (int i = 0; i < count; ++i)
{
if (items[i].key.equals(key))
if (!strcmp(items[i].key, key))
{
return items[i].value;
}
@ -49,6 +50,6 @@ JsonValue& JsonObjectBase::operator[](char const* key)
if (count >= capacity)
return JsonValue::null();
items[count].key.set(key);
items[count].key = key;
return items[count++].value;
}

View File

@ -38,8 +38,8 @@ namespace ArduinoJson
struct KeyValuePair
{
Internals::EscapedString key;
JsonValue value;
const char* key;
JsonValue value;
};
JsonObjectBase(KeyValuePair* items, int capacity)

View File

@ -7,6 +7,7 @@
#include "JsonValue.h"
using namespace ArduinoJson::Generator;
using namespace ArduinoJson::Internals;
JsonValue JsonValue::nullInstance;
@ -30,5 +31,5 @@ size_t JsonValue::printPrintableTo(const Content& c, Print& p)
size_t JsonValue::printStringTo(const Content& c, Print& p)
{
return c.asString.printTo(p);
return EscapedString(c.asString).printTo(p);
}

View File

@ -44,7 +44,7 @@ namespace ArduinoJson
void operator=(const char* value)
{
printToImpl = &printStringTo;
content.asString.set(value);
content.asString = value;
}
void operator=(double value)
@ -108,11 +108,11 @@ namespace ArduinoJson
private:
union Content
{
bool asBool;
long asLong;
Printable* asPrintable;
Internals::EscapedString asString;
double asDouble;
bool asBool;
double asDouble;
long asLong;
Printable* asPrintable;
const char* asString;
};
Content content;

View File

@ -16,8 +16,7 @@ namespace JsonGeneratorTests
{
char buffer[1024];
size_t returnValue;
EscapedString escapedString;
public:
TEST_METHOD(Null)
@ -83,8 +82,8 @@ namespace JsonGeneratorTests
private:
void whenInputIs(const char* input)
{
StringBuilder sb(buffer, sizeof(buffer));
escapedString.set(input);
StringBuilder sb(buffer, sizeof(buffer));
EscapedString escapedString = input;
returnValue = escapedString.printTo(sb);
}