Allow index on member of base class

This commit is contained in:
Martchus 2022-05-26 23:09:46 +02:00
parent 08f28a1706
commit 06909a24c4
1 changed files with 18 additions and 1 deletions

View File

@ -178,7 +178,7 @@ template <class Class, typename Type, typename Parent> struct LMDB_SAFE_EXPORT L
};
/*!
* \brief The index_on struct is used to declare an index on a member variable of a particular type.
* \brief The index_on struct is used to declare an index on a member variable of a particular class.
*/
template <class Class, typename Type, Type Class::*PtrToMember> struct index_on : LMDBIndexOps<Class, Type, index_on<Class, Type, PtrToMember>> {
index_on()
@ -193,6 +193,23 @@ template <class Class, typename Type, Type Class::*PtrToMember> struct index_on
typedef Type type;
};
/*!
* \brief The index_on_base_member struct is used to declare an index on a member variable of a base class of a particular class.
*/
template <class Class, typename Type, class BaseClass, Type BaseClass::*PtrToMember>
struct index_on_base_member : LMDBIndexOps<Class, Type, index_on_base_member<Class, Type, BaseClass, PtrToMember>> {
index_on_base_member()
: LMDBIndexOps<Class, Type, index_on_base_member<Class, Type, BaseClass, PtrToMember>>(this)
{
}
static Type getMember(const BaseClass &c)
{
return c.*PtrToMember;
}
typedef Type type;
};
/*!
* \brief The index_on_function struct is used to declare an index which is dynamically computed via
* a function.