diff options
Diffstat (limited to 'LibOVR/Src/OVR_JSON.h')
-rw-r--r-- | LibOVR/Src/OVR_JSON.h | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/LibOVR/Src/OVR_JSON.h b/LibOVR/Src/OVR_JSON.h deleted file mode 100644 index 488cb1d..0000000 --- a/LibOVR/Src/OVR_JSON.h +++ /dev/null @@ -1,165 +0,0 @@ -/************************************************************************************ - -PublicHeader: None -Filename : OVR_JSON.h -Content : JSON format reader and writer -Created : April 9, 2013 -Author : Brant Lewis -Notes : - -Copyright : Copyright 2014 Oculus VR, LLC All Rights reserved. - -Licensed under the Oculus VR Rift SDK License Version 3.2 (the "License"); -you may not use the Oculus VR Rift SDK except in compliance with the License, -which is provided at the time of installation or download, or which -otherwise accompanies this software in either electronic or hard copy form. - -You may obtain a copy of the License at - -http://www.oculusvr.com/licenses/LICENSE-3.2 - -Unless required by applicable law or agreed to in writing, the Oculus VR SDK -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -************************************************************************************/ - -#ifndef OVR_JSON_H -#define OVR_JSON_H - -#include "Kernel/OVR_RefCount.h" -#include "Kernel/OVR_String.h" -#include "Kernel/OVR_List.h" - -namespace OVR { - -// JSONItemType describes the type of JSON item, specifying the type of -// data that can be obtained from it. -enum JSONItemType -{ - JSON_None = 0, - JSON_Null = 1, - JSON_Bool = 2, - JSON_Number = 3, - JSON_String = 4, - JSON_Array = 5, - JSON_Object = 6 -}; - -//----------------------------------------------------------------------------- -// ***** JSON - -// JSON object represents a JSON node that can be either a root of the JSON tree -// or a child item. Every node has a type that describes what is is. -// New JSON trees are typically loaded JSON::Load or created with JSON::Parse. - -class JSON : public RefCountBase<JSON>, public ListNode<JSON> -{ -protected: - List<JSON> Children; - -public: - JSONItemType Type; // Type of this JSON node. - String Name; // Name part of the {Name, Value} pair in a parent object. - String Value; - double dValue; - -public: - ~JSON(); - - // *** Creation of NEW JSON objects - - static JSON* CreateObject() { return new JSON(JSON_Object);} - static JSON* CreateNull() { return new JSON(JSON_Null); } - static JSON* CreateArray() { return new JSON(JSON_Array); } - static JSON* CreateBool(bool b); - static JSON* CreateNumber(double num); - static JSON* CreateInt(int num); - static JSON* CreateString(const char *s); - - // Creates a new JSON object from parsing string. - // Returns null pointer and fills in *perror in case of parse error. - static JSON* Parse(const char* buff, const char** perror = 0); - - // This version works for buffers that are not null terminated strings. - static JSON* ParseBuffer(const char *buff, int len, const char** perror = 0); - - // Loads and parses a JSON object from a file. - // Returns 0 and assigns perror with error message on fail. - static JSON* Load(const char* path, const char** perror = 0); - - // Saves a JSON object to a file. - bool Save(const char* path); - - // *** Object Member Access - - // These provide access to child items of the list. - bool HasItems() const { return Children.IsEmpty(); } - // Returns first/last child item, or null if child list is empty - JSON* GetFirstItem() { return (!Children.IsEmpty()) ? Children.GetFirst() : 0; } - JSON* GetLastItem() { return (!Children.IsEmpty()) ? Children.GetLast() : 0; } - - // Counts the number of items in the object; these methods are inefficient. - unsigned GetItemCount() const; - JSON* GetItemByIndex(unsigned i); - JSON* GetItemByName(const char* name); - - // Accessors by name - double GetNumberByName(const char *name, double defValue = 0.0); - int GetIntByName(const char *name, int defValue = 0); - bool GetBoolByName(const char *name, bool defValue = false); - String GetStringByName(const char *name, const String &defValue = ""); - - // Returns next item in a list of children; 0 if no more items exist. - JSON* GetNextItem(JSON* item) { return Children.IsNull(item->pNext) ? 0 : item->pNext; } - JSON* GetPrevItem(JSON* item) { return Children.IsNull(item->pPrev) ? 0 : item->pPrev; } - - - // Child item access functions - void AddItem(const char *string, JSON* item); - void AddNullItem(const char* name) { AddItem(name, CreateNull()); } - void AddBoolItem(const char* name, bool b) { AddItem(name, CreateBool(b)); } - void AddIntItem(const char* name, int n) { AddItem(name, CreateInt(n)); } - void AddNumberItem(const char* name, double n) { AddItem(name, CreateNumber(n)); } - void AddStringItem(const char* name, const char* s) { AddItem(name, CreateString(s)); } -// void ReplaceItem(unsigned index, JSON* new_item); -// void DeleteItem(unsigned index); - void RemoveLast(); - - // *** Array Element Access - - // Add new elements to the end of array. - void AddArrayElement(JSON *item); - void InsertArrayElement(int index, JSON* item); - void AddArrayNumber(double n) { AddArrayElement(CreateNumber(n)); } - void AddArrayInt(int n) { AddArrayElement(CreateInt(n)); } - void AddArrayString(const char* s) { AddArrayElement(CreateString(s)); } - - // Accessed array elements; currently inefficient. - int GetArraySize(); - double GetArrayNumber(int index); - const char* GetArrayString(int index); - - JSON* Copy(); // Create a copy of this object - -protected: - JSON(JSONItemType itemType = JSON_Object); - - // JSON Parsing helper functions. - const char* parseValue(const char *buff, const char** perror); - const char* parseNumber(const char *num); - const char* parseArray(const char* value, const char** perror); - const char* parseObject(const char* value, const char** perror); - const char* parseString(const char* str, const char** perror); - - char* PrintValue(int depth, bool fmt); - char* PrintObject(int depth, bool fmt); - char* PrintArray(int depth, bool fmt); -}; - - -} - -#endif |