#pragma once #include #include #include #include "aurora/InterfaceDefs.h" #ifdef AURORA_NATIVE_EXPORTS #define AURORA_NATIVE_EXPORT __declspec(dllexport) #else #define AURORA_NATIVE_EXPORT __declspec(dllimport) #endif namespace lge::pri::aurora { class IData { AS_INTERFACE(IData) virtual std::string toString() const = 0; virtual int lock( unsigned long ms = 0) = 0; virtual void unlock() = 0; virtual IData* clone( bool synchronized = false) const = 0; virtual IData* clone( const char* path, bool synchronized = false) const = 0; virtual IData* clone( const std::string& path, bool synchronized = false) const = 0; virtual int save( const std::string& path) const = 0; virtual bool isExist( const std::string& path) const = 0; virtual bool erase( const std::string& path) = 0; virtual const IData& get( const std::string& path) const = 0; virtual IData& get( const std::string& path) = 0; /** * for object */ virtual std::vector keys( const std::string& path) const = 0; /** * for array */ virtual bool isArray() const = 0; virtual bool isArray( const std::string& path) const = 0; virtual unsigned int size() const = 0; virtual unsigned int size( const std::string& path) const = 0; /** * operations for array */ virtual int get( const std::string& path, unsigned index, int defVal) const = 0; virtual int get( unsigned index, int defVal) const = 0; virtual int get( const std::string& path, std::vector& values) const = 0; virtual int get( std::vector& values) const = 0; virtual int set( const std::string& path, unsigned int index, int value) = 0; virtual int set( unsigned int index, int value) = 0; virtual int set( const std::string& path, const std::vector& values) = 0; virtual int pushBack( const std::string& path, int value) = 0; /** * getter & setter */ virtual int get( const std::string& path, int defVal) const = 0; virtual int set( const std::string& path, int value) = 0; /** * operations for array */ virtual double get( const std::string& path, unsigned index, double defVal) const = 0; virtual double get( unsigned index, double defVal) const = 0; virtual int get( const std::string& path, std::vector& values) const = 0; virtual int get( std::vector& values) const = 0; virtual int set( const std::string& path, unsigned int index, double value) = 0; virtual int set( unsigned int index, double value) = 0; virtual int set( const std::string& path, const std::vector& values) = 0; virtual int pushBack( const std::string& path, double value) = 0; /** * getter & setter */ virtual double get( const std::string& path, double defVal) const = 0; virtual int set( const std::string& path, double value) = 0; /** * operations for array */ virtual bool get( const std::string& path, unsigned index, bool defVal) const = 0; virtual bool get( unsigned index, bool defVal) const = 0; virtual int get( const std::string& path, std::vector& values) const = 0; virtual int get( std::vector& values) const = 0; virtual int set( const std::string& path, unsigned int index, bool value) = 0; virtual int set( unsigned int index, bool value) = 0; virtual int set( const std::string& path, const std::vector& values) = 0; virtual int pushBack( const std::string& path, bool value) = 0; /** * getter & setter */ virtual bool get( const std::string& path, bool defVal) const = 0; virtual int set( const std::string& path, bool value) = 0; /** * operations for array */ virtual std::string get( const std::string& path, unsigned index, const std::string& defVal) const = 0; virtual std::string get( unsigned index, const std::string& defVal) const = 0; virtual int get( const std::string& path, std::vector& values) const = 0; virtual int get( std::vector& values) const = 0; virtual int set( const std::string& path, unsigned int index, const std::string& value) = 0; virtual int set( unsigned int index, const std::string& value) = 0; virtual int set( const std::string& path, const std::vector& values) = 0; virtual int pushBack( const std::string& path, const std::string& value) = 0; /** * getter & setter */ virtual std::string get( const std::string& path, const std::string& defVal) const = 0; virtual int set( const std::string& path, const std::string& value) = 0; /** * operations for array */ virtual std::string get( const std::string& path, unsigned index, const char* defVal) const = 0; virtual std::string get( unsigned index, const char* defVal) const = 0; virtual int set( const std::string& path, unsigned int index, const char* value) = 0; virtual int set( unsigned int index, const char* value) = 0; virtual int set( const std::string& path, const std::vector& values) = 0; virtual int pushBack( const std::string& path, const char* value) = 0; /** * getter & setter */ virtual std::string get( const std::string& path, const char* defVal) const = 0; virtual int set( const std::string& path, const char* value) = 0; }; class IDataFactory { virtual IData* create( bool synchronized = false) = 0; virtual IData* createFromJsonFile( const std::string& filePath, bool synchronized = false) = 0; virtual IData* createFromJsonStr( const std::string& jsonStr, bool synchronized = false) = 0; virtual IData* createFromJsonStr( const char* jsonStr, bool synchronized = false) = 0; virtual IData* createFromIniFile( const std::string& filePath, bool synchronized = false) = 0; }; #define EMPTY_DATA getEmptyData() extern const IData& getEmptyData(); AURORA_NATIVE_EXPORT auto createDataFromJsonStr( const char* jsonStr, bool synchronized ) -> std::unique_ptr; } // end of namespace