146 lines
4.1 KiB
C++
146 lines
4.1 KiB
C++
#ifndef __PROFILE_H
|
||
#define __PROFILE_H
|
||
|
||
#ifndef PROPERTY_PROVIDER_MAX
|
||
#define PROPERTY_PROVIDER_MAX 2
|
||
#endif
|
||
#define PROPERTY_STORE_MAX 32
|
||
#define PROPERTY_KEY_MAX 64
|
||
#define PROPERTY_ID_MAX 24
|
||
#define PROPERTY_LINE_MAX 80
|
||
|
||
#ifndef INT8U
|
||
#define BOOL unsigned char
|
||
#define INT8U unsigned char
|
||
#define INT8S char
|
||
#define INT16U unsigned short
|
||
#define INT16S short
|
||
#define INT32U unsigned int
|
||
#define INT32S int
|
||
#define INT64U unsigned long long
|
||
#define INT64S long long
|
||
#define FP32 float
|
||
#define FP64 double
|
||
#endif
|
||
|
||
#if !defined(TRUE)
|
||
#define TRUE 1
|
||
#define FALSE 0
|
||
#endif // TRUE
|
||
|
||
#if !defined(PI)
|
||
#define PI 3.14159
|
||
#endif // PI
|
||
|
||
|
||
/*
|
||
config
|
||
*/
|
||
#define PROPERTY_PROV_FS_EN 1
|
||
#define PROPERTY_PROV_REMOTE_EN 0
|
||
|
||
|
||
|
||
|
||
typedef enum {
|
||
VT_UI4 = 0,
|
||
VT_I4 = 1,
|
||
VT_UI2 = 2,
|
||
VT_I2 = 3,
|
||
VT_UI1 = 4,
|
||
VT_I1 = 5,
|
||
VT_R4 = 6,
|
||
VT_STR = 7,
|
||
VT_NULL = 8,
|
||
VT_BIT4 = 9
|
||
} ValueType;
|
||
|
||
typedef enum {
|
||
PropertyTypeFS = 1,
|
||
PropertyTypeRemote = 2
|
||
} PropertyProviderType;
|
||
|
||
typedef struct {
|
||
struct {
|
||
INT8U cache : 1;
|
||
INT8U prefetch : 1;
|
||
} config;
|
||
PropertyProviderType type;
|
||
const char* id;
|
||
INT32U destId; // use when PropertyTypeRemote
|
||
} PropertyInitParam;
|
||
|
||
//属性除数
|
||
typedef struct {
|
||
const char* key;
|
||
ValueType type;
|
||
union {
|
||
INT32S i4;
|
||
INT16S i2;
|
||
INT8S i1;
|
||
INT32U ui4;
|
||
INT16U ui2;
|
||
INT8U ui1;
|
||
FP32 r4;
|
||
const char* str;
|
||
struct {
|
||
INT32U val;
|
||
INT32U mask;
|
||
} bit4;
|
||
} value;
|
||
INT8U success : 1;
|
||
} PropertyItem;
|
||
|
||
/* 搜索引擎初始化 -- 以下函数调用前必须先以此函数进行初始化
|
||
*/
|
||
INT32U PropertyInit(INT32U providerId, const PropertyInitParam* param);
|
||
|
||
/**
|
||
* key必须以大写或小写字母开头, 以大写或小写字母, 数字, 或.-_[]符号组成, key大小写敏感
|
||
*/
|
||
INT32U GetProperty(INT32U providerId, const char* store, const char* id, const char* key, BOOL tryLocal, char* value, INT32U sizeOfValue, BOOL* isLocal);
|
||
INT32U SetProperty(INT32U providerId, const char* store, const char* id, const char* key, const char* value);
|
||
INT32U SetPropertyList(INT32U providerId, const char* store, const char* id, PropertyItem* list, INT32U count);
|
||
|
||
/* 获取对应类型的变量值
|
||
输入:providerId 默认:0(PROPERTY_PROV_ID)
|
||
store 变量保存文件名
|
||
key 变量名
|
||
tryLocal 是否搜索本地文件名
|
||
defaultValue 默认赋值(当获取失败时,返回的默认值)
|
||
带返回值的输入:
|
||
retCode 错误信息(0为正常)
|
||
isLocal 搜索成功时,是否为本地文件
|
||
输出:
|
||
变量类型 返回变量值
|
||
*/
|
||
INT32S GetInteger(INT32U providerId, const char* store, const char* key, BOOL tryLocal, INT32S defaultValue, INT32U* retCode, BOOL* isLocal);
|
||
INT32U GetUnsigned(INT32U providerId, const char* store, const char* key, BOOL tryLocal, INT32U defaultValue, INT32U* retCode, BOOL* isLocal);
|
||
FP32 GetFloat(INT32U providerId, const char* store, const char* key, BOOL tryLocal, FP32 defaultValue, INT32U* retCode, BOOL* isLocal);
|
||
BOOL GetBoolean(INT32U providerId, const char* store, const char* key, BOOL tryLocal, BOOL defaultValue, INT32U* retCode, BOOL* isLocal);
|
||
|
||
/* 设置变量值
|
||
输入:providerId 默认:0(PROPERTY_PROV_ID)
|
||
store 变量保存文件名
|
||
key 变量名
|
||
value 变量值
|
||
mask 对应value的掩码(仅SetBits()调用)
|
||
输出:
|
||
INT32U 错误信息(0为正常)
|
||
*/
|
||
INT32U SetInteger(INT32U providerId, const char* store, const char* key, INT32S value);
|
||
INT32U SetUnsigned(INT32U providerId, const char* store, const char* key, INT32U value);
|
||
INT32U SetFloat(INT32U providerId, const char* store, const char* key, FP32 value);
|
||
INT32U SetBits(INT32U providerId, const char* store, const char* key, INT32U value, INT32U mask);
|
||
|
||
INT32U ClearPropertyCache(INT32U providerId, const char* store, const char* id);
|
||
//INT32U VerifyPropertyCache(INT32U providerId);
|
||
|
||
/*
|
||
caseId: 测试用例编号
|
||
1: 写入参数时异常断电测试
|
||
*/
|
||
INT32U SetPropertyTestCase(INT32U caseId);
|
||
|
||
#endif
|