#ifndef __JString_h__ #define __JString_h__ #include "MString.h" #include #include namespace coreutils { /// /// Use the JString object when you need a JSON interface to C++. JString uses /// an MString to store a JSON string representing the object(s) contained. /// The [] operator is overriden from the ZString and provides a method to /// access the objects elements using a named path as the index to the items. /// /// JString default constructor will create an empty JString object pointing /// to an empty string. /// /// Use a constructor or assignment operator to initialize a JString to an /// initial JSON string. /// /// Several constructors are available including a handle to a std::FILE /// object to initialize the JSON string. On destruction the file is saved back. /// /// The [] operator can be used to access elements within the JSON string. /// Use: /// jstring["key"] = "value"; /// std::cout << jstring["key"]; /// class JString : public MString { public: JString(); // JString(const char *data); void set(ZString &path, ZString &value); /// /// Use the find method to look through an object for member specified by /// the key in parameter 1. The cursor must be pointing to the { character /// that begins the object's list. /// ZString find(ZString &path); private: bool locate(ZString &path); bool notfirst; ZString path; ZString keyx; public: operator ZString () { std::cout << "operator0" << std::endl; return find(keyx); } JString &operator[](coreutils::ZString key) { std::cout << "operator[" << key << "]" << std::endl; keyx = key; return *this; } JString & operator=(coreutils:: ZString value) { std::cout << "should set key [" << keyx << "] operator=" << value << std::endl; set(keyx, value); return *this; } }; } #endif