public:
using Shared = SharedObject<_ThisCommonClockClass, LibObjT, internal::ClockClassRefFuncs>;
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonClockClass(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
public:
using Shared = SharedFieldClass<CommonFieldClass<LibObjT>, LibObjT>;
-
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonFieldClass(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
private:
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using typename BorrowedObject<LibObjT>::_ThisBorrowedObject;
-
- using _FieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstFieldClass, FieldClass>::type;
+ using _FieldClass = internal::DepFc<LibObjT>;
public:
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonStructureFieldClassMember(const _LibObjPtr libObjPtr) noexcept :
_ThisBorrowedObject {libObjPtr}
public:
using Shared = SharedFieldClass<CommonStructureFieldClass<LibObjT>, LibObjT>;
+
using Member =
- typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClassMember,
- StructureFieldClassMember>::type;
+ internal::DepType<LibObjT, StructureFieldClassMember, ConstStructureFieldClassMember>;
using Iterator = CommonIterator<CommonStructureFieldClass<LibObjT>, Member>;
{
private:
using typename CommonFieldClass<LibObjT>::_ThisCommonFieldClass;
-
- using _FieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstFieldClass, FieldClass>::type;
+ using _FieldClass = internal::DepFc<LibObjT>;
protected:
using typename CommonFieldClass<LibObjT>::_LibObjPtr;
{
private:
using typename CommonFieldClass<LibObjT>::_ThisCommonFieldClass;
-
- using _FieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstFieldClass, FieldClass>::type;
+ using _FieldClass = internal::DepFc<LibObjT>;
protected:
using typename CommonFieldClass<LibObjT>::_LibObjPtr;
private:
using typename BorrowedObject<LibObjT>::_ThisBorrowedObject;
using typename BorrowedObject<LibObjT>::_LibObjPtr;
-
- using _FieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstFieldClass, FieldClass>::type;
+ using _FieldClass = internal::DepFc<LibObjT>;
public:
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonVariantFieldClassOption(const _LibObjPtr libObjPtr) noexcept :
_ThisBorrowedObject {libObjPtr}
using Shared = SharedFieldClass<CommonVariantFieldClass<LibObjT>, LibObjT>;
using Option =
- typename std::conditional<std::is_const<LibObjT>::value, ConstVariantFieldClassOption,
- VariantFieldClassOption>::type;
+ internal::DepType<LibObjT, VariantFieldClassOption, ConstVariantFieldClassOption>;
using Iterator = CommonIterator<CommonVariantFieldClass, Option>;
using _ThisCommonField = CommonField<LibObjT>;
public:
- using Class =
- typename std::conditional<std::is_const<LibObjT>::value, ConstFieldClass, FieldClass>::type;
+ using Class = internal::DepFc<LibObjT>;
explicit CommonField(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
using typename CommonField<LibObjT>::_ThisCommonField;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstBitArrayFieldClass,
- BitArrayFieldClass>::type;
+ using Class = internal::DepType<LibObjT, BitArrayFieldClass, ConstBitArrayFieldClass>;
explicit CommonBitArrayField(const _LibObjPtr libObjPtr) noexcept : _ThisCommonField {libObjPtr}
{
public:
using Value = std::uint64_t;
-
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstIntegerFieldClass,
- IntegerFieldClass>::type;
+ using Class = internal::DepType<LibObjT, IntegerFieldClass, ConstIntegerFieldClass>;
explicit CommonUnsignedIntegerField(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonField {libObjPtr}
public:
using Value = std::int64_t;
-
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstIntegerFieldClass,
- IntegerFieldClass>::type;
+ using Class = internal::DepType<LibObjT, IntegerFieldClass, ConstIntegerFieldClass>;
explicit CommonSignedIntegerField(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonField {libObjPtr}
using typename CommonField<LibObjT>::_LibObjPtr;
public:
- using Class =
- typename std::conditional<std::is_const<LibObjT>::value, ConstUnsignedEnumerationFieldClass,
- UnsignedEnumerationFieldClass>::type;
+ using Class = internal::DepType<LibObjT, UnsignedEnumerationFieldClass,
+ ConstUnsignedEnumerationFieldClass>;
explicit CommonUnsignedEnumerationField(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonUnsignedIntegerField {libObjPtr}
public:
using Class =
- typename std::conditional<std::is_const<LibObjT>::value, ConstSignedEnumerationFieldClass,
- SignedEnumerationFieldClass>::type;
+ internal::DepType<LibObjT, SignedEnumerationFieldClass, ConstSignedEnumerationFieldClass>;
explicit CommonSignedEnumerationField(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonSignedIntegerField {libObjPtr}
using _Spec = internal::CommonStructureFieldSpec<LibObjT>;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClass,
- StructureFieldClass>::type;
+ using Class = internal::DepType<LibObjT, StructureFieldClass, ConstStructureFieldClass>;
explicit CommonStructureField(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonField {libObjPtr}
using _ThisCommonArrayField = CommonArrayField<LibObjT>;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstArrayFieldClass,
- ArrayFieldClass>::type;
+ using Class = internal::DepType<LibObjT, ArrayFieldClass, ConstArrayFieldClass>;
explicit CommonArrayField(const _LibObjPtr libObjPtr) noexcept : _ThisCommonField {libObjPtr}
{
using _Spec = internal::CommonOptionFieldSpec<LibObjT>;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstOptionFieldClass,
- OptionFieldClass>::type;
+ using Class = internal::DepType<LibObjT, OptionFieldClass, ConstOptionFieldClass>;
explicit CommonOptionField(const _LibObjPtr libObjPtr) noexcept : _ThisCommonField {libObjPtr}
{
using _Spec = internal::CommonVariantFieldSpec<LibObjT>;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value, ConstVariantFieldClass,
- VariantFieldClass>::type;
+ using Class = internal::DepType<LibObjT, VariantFieldClass, ConstVariantFieldClass>;
explicit CommonVariantField(const _LibObjPtr libObjPtr) noexcept : _ThisCommonField {libObjPtr}
{
#ifndef BABELTRACE_CPP_COMMON_BT2_INTERNAL_UTILS_HPP
#define BABELTRACE_CPP_COMMON_BT2_INTERNAL_UTILS_HPP
+#include <type_traits>
+
+#include <babeltrace2/babeltrace.h>
+
#include "../exc.hpp"
namespace bt2 {
+
+template <typename>
+class CommonMapValue;
+
+template <typename>
+class CommonFieldClass;
+
+template <typename>
+class CommonPacket;
+
+template <typename>
+class CommonStream;
+
namespace internal {
template <typename LibObjPtrT>
}
}
+template <typename LibObjT, typename DepObjT, typename ConstDepObjT>
+using DepType =
+ typename std::conditional<std::is_const<LibObjT>::value, ConstDepObjT, DepObjT>::type;
+
+template <typename LibObjT>
+using DepUserAttrs = DepType<LibObjT, CommonMapValue<bt_value>, CommonMapValue<const bt_value>>;
+
+template <typename LibObjT>
+using DepFc =
+ DepType<LibObjT, CommonFieldClass<bt_field_class>, CommonFieldClass<const bt_field_class>>;
+
+template <typename LibObjT>
+using DepPacket = DepType<LibObjT, CommonPacket<bt_packet>, CommonPacket<const bt_packet>>;
+
+template <typename LibObjT>
+using DepStream = DepType<LibObjT, CommonStream<bt_stream>, CommonStream<const bt_stream>>;
+
template <typename ObjT>
struct TypeDescr;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
+ using _Stream = internal::DepStream<LibObjT>;
public:
using Shared = SharedMessage<CommonStreamBeginningMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
+ using _Stream = internal::DepStream<LibObjT>;
public:
using Shared = SharedMessage<CommonStreamEndMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Packet =
- typename std::conditional<std::is_const<LibObjT>::value, CommonPacket<const bt_packet>,
- CommonPacket<bt_packet>>::type;
+ using _Packet = internal::DepPacket<LibObjT>;
public:
using Shared = SharedMessage<CommonPacketBeginningMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Packet =
- typename std::conditional<std::is_const<LibObjT>::value, CommonPacket<const bt_packet>,
- CommonPacket<bt_packet>>::type;
+ using _Packet = internal::DepPacket<LibObjT>;
public:
using Shared = SharedMessage<CommonPacketEndMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Event =
- typename std::conditional<std::is_const<LibObjT>::value, CommonEvent<const bt_event>,
- CommonEvent<bt_event>>::type;
+ using _Event = internal::DepType<LibObjT, CommonEvent<bt_event>, CommonEvent<const bt_event>>;
public:
using Shared = SharedMessage<CommonEventMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
+ using _Stream = internal::DepStream<LibObjT>;
public:
using Shared = SharedMessage<CommonDiscardedEventsMessage<LibObjT>, LibObjT>;
private:
using typename CommonMessage<LibObjT>::_LibObjPtr;
using typename CommonMessage<LibObjT>::_ThisCommonMessage;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
+ using _Stream = internal::DepStream<LibObjT>;
public:
using Shared = SharedMessage<CommonDiscardedPacketsMessage<LibObjT>, LibObjT>;
}
};
+template <typename LibObjT>
+using DepStructField = DepType<LibObjT, StructureField, ConstStructureField>;
+
} /* namespace internal */
template <typename LibObjT>
using typename BorrowedObject<LibObjT>::_ThisBorrowedObject;
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonEventSpec<LibObjT>;
-
- using _Packet =
- typename std::conditional<std::is_const<LibObjT>::value, CommonPacket<const bt_packet>,
- CommonPacket<bt_packet>>::type;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
-
- using _StructureField = typename std::conditional<std::is_const<LibObjT>::value,
- ConstStructureField, StructureField>::type;
+ using _Packet = internal::DepPacket<LibObjT>;
+ using _Stream = internal::DepStream<LibObjT>;
+ using _StructureField = internal::DepStructField<LibObjT>;
public:
- using Class = typename std::conditional<std::is_const<LibObjT>::value,
- CommonEventClass<const bt_event_class>,
- CommonEventClass<bt_event_class>>::type;
+ using Class = internal::DepType<LibObjT, CommonEventClass<bt_event_class>,
+ CommonEventClass<const bt_event_class>>;
explicit CommonEvent(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonPacketSpec<LibObjT>;
using _ThisCommonPacket = CommonPacket<LibObjT>;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
-
- using _StructureField = typename std::conditional<std::is_const<LibObjT>::value,
- ConstStructureField, StructureField>::type;
+ using _Stream = internal::DepStream<LibObjT>;
+ using _StructureField = internal::DepStructField<LibObjT>;
public:
using Shared = SharedObject<_ThisCommonPacket, LibObjT, internal::PacketRefFuncs>;
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonStreamSpec<LibObjT>;
using _ThisCommonStream = CommonStream<LibObjT>;
-
- using _Trace =
- typename std::conditional<std::is_const<LibObjT>::value, CommonTrace<const bt_trace>,
- CommonTrace<bt_trace>>::type;
+ using _Trace = internal::DepType<LibObjT, CommonTrace<bt_trace>, CommonTrace<const bt_trace>>;
public:
using Shared = SharedObject<_ThisCommonStream, LibObjT, internal::StreamRefFuncs>;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
- using Class = typename std::conditional<std::is_const<LibObjT>::value,
- CommonStreamClass<const bt_stream_class>,
- CommonStreamClass<bt_stream_class>>::type;
-
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using Class = internal::DepType<LibObjT, CommonStreamClass<bt_stream_class>,
+ CommonStreamClass<const bt_stream_class>>;
explicit CommonStream(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonTraceSpec<LibObjT>;
using _ThisCommonTrace = CommonTrace<LibObjT>;
-
- using _Stream =
- typename std::conditional<std::is_const<LibObjT>::value, CommonStream<const bt_stream>,
- CommonStream<bt_stream>>::type;
+ using _Stream = internal::DepStream<LibObjT>;
public:
using Shared = SharedObject<_ThisCommonTrace, LibObjT, internal::TraceRefFuncs>;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
- using Class = typename std::conditional<std::is_const<LibObjT>::value,
- CommonTraceClass<const bt_trace_class>,
- CommonTraceClass<bt_trace_class>>::type;
-
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using Class = internal::DepType<LibObjT, CommonTraceClass<bt_trace_class>,
+ CommonTraceClass<const bt_trace_class>>;
struct ConstEnvironmentEntry
{
}
};
+template <typename LibObjT>
+using DepStructFc = DepType<LibObjT, StructureFieldClass, ConstStructureFieldClass>;
+
} /* namespace internal */
template <typename LibObjT>
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonEventClassSpec<LibObjT>;
using _ThisCommonEventClass = CommonEventClass<LibObjT>;
+ using _StructureFieldClass = internal::DepStructFc<LibObjT>;
- using _StreamClass = typename std::conditional<std::is_const<LibObjT>::value,
- CommonStreamClass<const bt_stream_class>,
- CommonStreamClass<bt_stream_class>>::type;
-
- using _StructureFieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClass,
- StructureFieldClass>::type;
+ using _StreamClass = internal::DepType<LibObjT, CommonStreamClass<bt_stream_class>,
+ CommonStreamClass<const bt_stream_class>>;
public:
using Shared = SharedObject<_ThisCommonEventClass, LibObjT, internal::EventClassRefFuncs>;
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
enum class LogLevel
{
using typename BorrowedObject<LibObjT>::_LibObjPtr;
using _Spec = internal::CommonStreamClassSpec<LibObjT>;
using _ThisCommonStreamClass = CommonStreamClass<LibObjT>;
+ using _StructureFieldClass = internal::DepStructFc<LibObjT>;
- using _TraceClass = typename std::conditional<std::is_const<LibObjT>::value,
- CommonTraceClass<const bt_trace_class>,
- CommonTraceClass<bt_trace_class>>::type;
-
- using _EventClass = typename std::conditional<std::is_const<LibObjT>::value,
- CommonEventClass<const bt_event_class>,
- CommonEventClass<bt_event_class>>::type;
+ using _TraceClass = internal::DepType<LibObjT, CommonTraceClass<bt_trace_class>,
+ CommonTraceClass<const bt_trace_class>>;
- using _StructureFieldClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClass,
- StructureFieldClass>::type;
+ using _EventClass = internal::DepType<LibObjT, CommonEventClass<bt_event_class>,
+ CommonEventClass<const bt_event_class>>;
- using _ClockClass =
- typename std::conditional<std::is_const<LibObjT>::value, ConstClockClass, ClockClass>::type;
+ using _ClockClass = internal::DepType<LibObjT, ClockClass, ConstClockClass>;
public:
using Shared = SharedObject<_ThisCommonStreamClass, LibObjT, internal::StreamClassRefFuncs>;
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonStreamClass(const _LibObjPtr libObjPtr) noexcept :
_ThisBorrowedObject {libObjPtr}
using _Spec = internal::CommonTraceClassSpec<LibObjT>;
using _ThisCommonTraceClass = CommonTraceClass<LibObjT>;
- using _StreamClass = typename std::conditional<std::is_const<LibObjT>::value,
- CommonStreamClass<const bt_stream_class>,
- CommonStreamClass<bt_stream_class>>::type;
+ using _StreamClass = internal::DepType<LibObjT, CommonStreamClass<bt_stream_class>,
+ CommonStreamClass<const bt_stream_class>>;
public:
using Shared = SharedObject<_ThisCommonTraceClass, LibObjT, internal::TraceClassRefFuncs>;
- using UserAttributes =
- typename std::conditional<std::is_const<LibObjT>::value, ConstMapValue, MapValue>::type;
+ using UserAttributes = internal::DepUserAttrs<LibObjT>;
explicit CommonTraceClass(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr}
{