[odb-users] Enum encapsulation + getters / setters + query

Andreas Pasternak a.pasternak at mt-robot.com
Thu Feb 11 03:33:17 EST 2016


PS: We are using Debian 8

On 11.02.2016 09:32, Andreas Pasternak wrote:
> Hello Boris,
>
> Thank you for your fast and precise answer!
>
> It would be great if I could test a pre-release version.
>
> Best regards,
>
> Andreas
>
> On 09.02.2016 15:00, Boris Kolpackov wrote:
>> Hi Andreas,
>>
>> Andreas Pasternak <a.pasternak at mt-robot.com> writes:
>>
>>> typedef safe_enum<SomeEnum_impl> Some_Enum;
>>> Some_Enum  event_type;
>>>
>>> #pragma db value(Some_Enum) definition
>>> #pragma db member(Some_Enum::val) get(underlying) set(set)
>>>
>>> /../odb_query.h:370:23: error: no match for ‘operator==’ [...]
>> You have mapped it as a composite type and ODB doesn't support
>> comparing composite types to anything but themselves in queries
>> (which is what you normally want).
>>
>> This mapping is also conceptually not quite correct (Some_Enum
>> "is a" SomeEnum_impl, not "has a" SomeEnum_impl).
>>
>> In the upcoming version this will be pretty easy to implement
>> using the type mapping pragma:
>>
>> #pragma db map type(Some_Enum) as(SomeEnum_impl)  \
>>      to((?).underlying ()) from(Some_Enum (?))
>>
>> In the current version the only way to achieve the same is either
>> by using virtual data members (but then you will have to repeat
>> the same thing for each data member) or by providing a value_traits
>> specialization. Neither option is particularly appealing, so maybe
>> a pre-release is the answer? I can package one if you would like.
>>
>> Boris
>



More information about the odb-users mailing list