65 lines
1.4 KiB
C++
65 lines
1.4 KiB
C++
#ifndef _VARIABLE_H
|
|
#define _VARIABLE_H
|
|
|
|
#include "_global.h"
|
|
|
|
//enums
|
|
enum VAR_TYPE
|
|
{
|
|
VAR_SYSTEM = 1,
|
|
VAR_USER = 2,
|
|
VAR_READONLY = 3,
|
|
VAR_HIDDEN = 4
|
|
};
|
|
|
|
enum VAR_VALUE_TYPE
|
|
{
|
|
VAR_UINT,
|
|
VAR_STRING,
|
|
};
|
|
|
|
//structures
|
|
struct VAR_VALUE
|
|
{
|
|
union
|
|
{
|
|
uint value;
|
|
std::vector<unsigned char>* data;
|
|
} u;
|
|
VAR_VALUE_TYPE type;
|
|
int size;
|
|
};
|
|
|
|
struct VAR
|
|
{
|
|
String name;
|
|
String alias;
|
|
VAR_TYPE type;
|
|
VAR_VALUE value;
|
|
};
|
|
|
|
struct CaseInsensitiveCompare
|
|
{
|
|
bool operator()(const String & str1, const String & str2) const
|
|
{
|
|
return _stricmp(str1.c_str(), str2.c_str()) < 0;
|
|
}
|
|
};
|
|
|
|
//functions
|
|
void varsetvalue(VAR* Var, VAR_VALUE* Value);
|
|
bool varset(const char* Name, VAR_VALUE* Value, bool ReadOnly);
|
|
void varinit();
|
|
void varfree();
|
|
bool varnew(const char* Name, uint Value, VAR_TYPE Type);
|
|
bool varget(const char* Name, VAR_VALUE* Value, int* Size, VAR_TYPE* Type);
|
|
bool varget(const char* Name, uint* Value, int* Size, VAR_TYPE* Type);
|
|
bool varget(const char* Name, char* String, int* Size, VAR_TYPE* Type);
|
|
bool varset(const char* Name, uint Value, bool ReadOnly);
|
|
bool varset(const char* Name, const char* Value, bool ReadOnly);
|
|
bool vardel(const char* Name, bool DelSystem);
|
|
bool vargettype(const char* Name, VAR_TYPE* Type = nullptr, VAR_VALUE_TYPE* ValueType = nullptr);
|
|
bool varenum(VAR* List, size_t* Size);
|
|
|
|
#endif // _VARIABLE_H
|