Made JsonNodeType private

This commit is contained in:
Benoit Blanchon
2014-10-09 14:31:25 +02:00
parent 1bff34a204
commit 0dce0022d3
3 changed files with 44 additions and 55 deletions

View File

@ -1,6 +1,12 @@
#pragma once
class JsonBuffer;
class JsonWriter;
class JsonNodeIterator;
class JsonNode
{
friend class JsonNodeIterator;
enum JsonNodeType
{
@ -18,12 +24,31 @@ enum JsonNodeType
// etc.
};
class JsonWriter;
class JsonNodeIterator;
class JsonNode
union JsonNodeContent
{
friend class JsonNodeIterator;
bool asBoolean;
double asDouble;
long asInteger;
const char* asString;
struct
{
const char* key;
JsonNode* value;
} asKey;
struct
{
JsonNode* child;
JsonBuffer* buffer;
} asContainer;
struct
{
JsonNode* target;
} asProxy;
};
public:
JsonNode()
@ -124,35 +149,10 @@ public:
void removeChildFromContainer(JsonNode* childToRemove);
private:
JsonNodeType type; // <- TODO: hide
JsonNode* next;
JsonNodeContent content;
JsonNodeType type;
inline void writeArrayTo(JsonWriter&);// TODO: <- move in JsonNodeSerializer
inline void writeObjectTo(JsonWriter&);// TODO: <- move in JsonNodeSerializer
union
{
bool asBoolean;
double asDouble;
long asInteger;
const char* asString;
struct
{
const char* key;
JsonNode* value;
} asKey;
struct
{
JsonNode* child;
JsonBuffer* buffer;
} asContainer;
struct
{
JsonNode* target;
} asProxy;
} content;
};

View File

@ -71,13 +71,3 @@ JsonNode* JsonObject::getOrCreateNodeAt(const char* key)
return newValueNode;
}
JsonNode* JsonObject::createContainerNodeAt(char const* key, JsonNodeType type)
{
JsonNode* node = getOrCreateNodeAt(key);
if (!node) return 0;
node->setAsArray(_node->getContainerBuffer());
return node;
}

View File

@ -23,5 +23,4 @@ public:
private:
JsonNode* getOrCreateNodeAt(const char* key);
JsonNode* createContainerNodeAt(const char* key, JsonNodeType type);
};