2026-01-26 18:56:53 +09:00

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