dds content filtered topic
Content filtered topic.
This PR is initial implementation of content filtered topic according (mostly) to dds spec.
The implementation introduce new dds_filter entity which is set over QoS and propogates to reader/writer endpoints (which is acrually own and operates filters). Don't forgent about a previous topic_filter API, whose "backend" replaced with new filter entity, which leads to tiny change in old-API behavior[^1].
Since old-API didn't changed, the really new thing for the user is a expression kind filter. Basically isnstead of function user may specify expr. such as "?1 + a >= b.a * c OR (?2 AND d)" where ?1 and ?2 are parameters which can be applied as one of the supported[^2] types (int64_t, double, string, blob) during runtime using corresponding API functions. a,b.a, c and d are filed names of filtering topic type according to idl type
definition[^3].
[^1]: Topic entities created with the same participant, topic_name and type_name share the same QoSes, as a result if one of the entities defining a filter another catch it accordingly.
[^2]: There is still missing implementation of unsigned type, which is required to fully map idl types.
[^3]: Current implementation don't allows nothing but struct and primitive types to be used within expressions.