libxr 1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
LibXR::Database::Key< Data > Class Template Reference

模板类,表示数据库中的具体键 (Template class representing a specific key in the database). More...

#include <database.hpp>

Inheritance diagram for LibXR::Database::Key< Data >:
Collaboration diagram for LibXR::Database::Key< Data >:

Public Member Functions

 Key (Database &database, const char *name, Data init_value)
 构造函数,初始化键并从数据库加载数据 (Constructor to initialize key and load data from the database).
 
 Key (Database &database, const char *name)
 构造函数,初始化键,并在数据库不存在时赋默认值 (Constructor to initialize key, assigning default value if not found in the database).
 
 operator Data ()
 类型转换运算符,返回存储的数据 (Type conversion operator returning stored data).
 
ErrorCode Set (Data data)
 设置键的值并更新数据库 (Set the key's value and update the database).
 
ErrorCode Load ()
 从数据库加载键的值 (Load the key's value from the database).
 
ErrorCode operator= (Data data)
 赋值运算符,设置键的值 (Assignment operator to set the key's value).
 
- Public Member Functions inherited from LibXR::Database::KeyBase
 KeyBase (const char *name, RawData raw_data)
 构造函数,初始化键名和原始数据 (Constructor to initialize key name and raw data).
 

Data Fields

Data data_
 键存储的数据 (The data stored in the key).
 
Databasedatabase_
 关联的数据库对象 (Reference to the associated database).
 
- Data Fields inherited from LibXR::Database::KeyBase
const charname_
 键名 (Key name).
 
RawData raw_data_
 原始数据 (Raw data associated with the key).
 

Detailed Description

template<typename Data>
class LibXR::Database::Key< Data >

模板类,表示数据库中的具体键 (Template class representing a specific key in the database).

Template Parameters
Data存储的数据类型 (The type of data stored).

Definition at line 48 of file database.hpp.

Constructor & Destructor Documentation

◆ Key() [1/2]

template<typename Data >
LibXR::Database::Key< Data >::Key ( Database database,
const char name,
Data  init_value 
)
inline

构造函数,初始化键并从数据库加载数据 (Constructor to initialize key and load data from the database).

If the key does not exist in the database, it is initialized with the provided value. 如果键在数据库中不存在,则使用提供的值进行初始化。

Parameters
database关联的数据库对象 (Reference to the associated database).
name键名 (Key name).
init_value初始化值 (Initial value for the key).

Definition at line 65 of file database.hpp.

66 : KeyBase(name, RawData(data_)), database_(database)
67 {
68 if (database.Get(*this) == ErrorCode::NOT_FOUND)
69 {
71 database.Add(*this);
72 }
73 }
KeyBase(const char *name, RawData raw_data)
构造函数,初始化键名和原始数据 (Constructor to initialize key name and raw data).
Definition database.hpp:39
Database & database_
关联的数据库对象 (Reference to the associated database).
Definition database.hpp:52
Data data_
键存储的数据 (The data stored in the key).
Definition database.hpp:51
virtual ErrorCode Add(KeyBase &key)=0
添加新键到数据库 (Add a new key to the database).
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值

◆ Key() [2/2]

template<typename Data >
LibXR::Database::Key< Data >::Key ( Database database,
const char name 
)
inline

构造函数,初始化键,并在数据库不存在时赋默认值 (Constructor to initialize key, assigning default value if not found in the database).

If the key does not exist in the database, it is initialized with zero. 如果键在数据库中不存在,则初始化为零。

Parameters
database关联的数据库对象 (Reference to the associated database).
name键名 (Key name).

Definition at line 85 of file database.hpp.

86 : KeyBase(name, RawData(data_)), database_(database)
87 {
88 if (database.Get(*this) == ErrorCode::NOT_FOUND)
89 {
90 data_ = memset(&data_, 0, sizeof(Data));
91 database.Add(*this);
92 }
93 }

Member Function Documentation

◆ Load()

template<typename Data >
ErrorCode LibXR::Database::Key< Data >::Load ( )
inline

从数据库加载键的值 (Load the key's value from the database).

Returns
操作结果 (Operation result).

Definition at line 113 of file database.hpp.

113{ return database_.Get(*this); }
virtual ErrorCode Get(KeyBase &key)=0
从数据库获取键的值 (Retrieve the key's value from the database).

◆ operator Data()

类型转换运算符,返回存储的数据 (Type conversion operator returning stored data).

Returns
存储的数据 (Stored data).

Definition at line 100 of file database.hpp.

100{ return data_; }

◆ operator=()

template<typename Data >
ErrorCode LibXR::Database::Key< Data >::operator= ( Data  data)
inline

赋值运算符,设置键的值 (Assignment operator to set the key's value).

Parameters
data需要存储的新值 (New value to store).
Returns
操作结果 (Operation result).

Definition at line 120 of file database.hpp.

120{ return Set(data); } // NOLINT
ErrorCode Set(Data data)
设置键的值并更新数据库 (Set the key's value and update the database).
Definition database.hpp:107

◆ Set()

template<typename Data >
ErrorCode LibXR::Database::Key< Data >::Set ( Data  data)
inline

设置键的值并更新数据库 (Set the key's value and update the database).

Parameters
data需要存储的新值 (New value to store).
Returns
操作结果 (Operation result).

Definition at line 107 of file database.hpp.

107{ return database_.Set(*this, RawData(data)); }
virtual ErrorCode Set(KeyBase &key, RawData data)=0
设置数据库中的键值 (Set the key's value in the database).

Field Documentation

◆ data_

template<typename Data >
Data LibXR::Database::Key< Data >::data_

键存储的数据 (The data stored in the key).

Definition at line 51 of file database.hpp.

◆ database_

template<typename Data >
Database& LibXR::Database::Key< Data >::database_

关联的数据库对象 (Reference to the associated database).

Definition at line 52 of file database.hpp.


The documentation for this class was generated from the following file: