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 #pragma once
class JsonBuffer; class JsonBuffer;
class JsonWriter;
class JsonNodeIterator;
class JsonNode
{
friend class JsonNodeIterator;
enum JsonNodeType enum JsonNodeType
{ {
@ -18,12 +24,31 @@ enum JsonNodeType
// etc. // etc.
}; };
class JsonWriter; union JsonNodeContent
class JsonNodeIterator;
class JsonNode
{ {
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: public:
JsonNode() JsonNode()
@ -124,35 +149,10 @@ public:
void removeChildFromContainer(JsonNode* childToRemove); void removeChildFromContainer(JsonNode* childToRemove);
private: private:
JsonNodeType type; // <- TODO: hide
JsonNode* next; JsonNode* next;
JsonNodeContent content;
JsonNodeType type;
inline void writeArrayTo(JsonWriter&);// TODO: <- move in JsonNodeSerializer inline void writeArrayTo(JsonWriter&);// TODO: <- move in JsonNodeSerializer
inline void writeObjectTo(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; 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: private:
JsonNode* getOrCreateNodeAt(const char* key); JsonNode* getOrCreateNodeAt(const char* key);
JsonNode* createContainerNodeAt(const char* key, JsonNodeType type);
}; };