292 lines
8.2 KiB
C++
292 lines
8.2 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
#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<std::string> 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<int>
|
|
*/
|
|
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<int>& values) const = 0;
|
|
virtual int get(
|
|
std::vector<int>& 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<int>& values) = 0;
|
|
virtual int pushBack(
|
|
const std::string& path,
|
|
int value) = 0;
|
|
|
|
/**
|
|
* getter & setter <int>
|
|
*/
|
|
virtual int get(
|
|
const std::string& path,
|
|
int defVal) const = 0;
|
|
virtual int set(
|
|
const std::string& path,
|
|
int value) = 0;
|
|
|
|
/**
|
|
* operations for array<double>
|
|
*/
|
|
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<double>& values) const = 0;
|
|
virtual int get(
|
|
std::vector<double>& 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<double>& values) = 0;
|
|
virtual int pushBack(
|
|
const std::string& path,
|
|
double value) = 0;
|
|
|
|
/**
|
|
* getter & setter <double>
|
|
*/
|
|
virtual double get(
|
|
const std::string& path,
|
|
double defVal) const = 0;
|
|
virtual int set(
|
|
const std::string& path,
|
|
double value) = 0;
|
|
|
|
/**
|
|
* operations for array<bool>
|
|
*/
|
|
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<bool>& values) const = 0;
|
|
virtual int get(
|
|
std::vector<bool>& 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<bool>& values) = 0;
|
|
virtual int pushBack(
|
|
const std::string& path,
|
|
bool value) = 0;
|
|
|
|
/**
|
|
* getter & setter <bool>
|
|
*/
|
|
virtual bool get(
|
|
const std::string& path,
|
|
bool defVal) const = 0;
|
|
virtual int set(
|
|
const std::string& path,
|
|
bool value) = 0;
|
|
|
|
/**
|
|
* operations for array<std::string>
|
|
*/
|
|
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<std::string>& values) const = 0;
|
|
virtual int get(
|
|
std::vector<std::string>& 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<std::string>& values) = 0;
|
|
virtual int pushBack(
|
|
const std::string& path,
|
|
const std::string& value) = 0;
|
|
|
|
/**
|
|
* getter & setter <std::string>
|
|
*/
|
|
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<const char*>
|
|
*/
|
|
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<const char*>& values) = 0;
|
|
virtual int pushBack(
|
|
const std::string& path,
|
|
const char* value) = 0;
|
|
|
|
/**
|
|
* getter & setter <const char*>
|
|
*/
|
|
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<IData>;
|
|
|
|
} // end of namespace
|
|
|