1 #ifndef TOC_BLE_ID_TABLE_H_INCLUDED 2 #define TOC_BLE_ID_TABLE_H_INCLUDED 43 :
public CBleIdEntry<IntToType<Id::value - 1> >
45 static constexpr
bool important =
false;
49 struct CBleIdEntry<IntToType<-1> >
51 static constexpr
bool empty =
true;
56 template <
class Id,
class U>
57 constexpr
bool checkDuplicate(Id, U* ptr)
59 return CBleIdEntry<Id>::convertable(ptr) ?
true : (
60 checkDuplicate(IntToType<Id::value - 1>(), ptr));
65 constexpr
bool checkDuplicate(IntToType<-1>, U* ptr)
72 template <
class T,
class U>
73 struct MergeBleIdTables
80 #ifndef ECLIPSE_STUB_CODE_ANALYSE 85 typedef typename std::conditional<
87 CBleIdEntry<T>::important,
89 MergeBleIdTables<decltype(makeBleIdTable(IntToType<T::value - 1>())), CBleIdEntry<T> >,
91 decltype(makeBleIdTable(IntToType<T::value - 1>()))
98 struct CBleIdTable<IntToType<-1> >
100 typedef CBleIdEntry<IntToType<-1> > type;
105 constexpr
typename CBleIdTable<T>::type makeBleIdTable(T)
107 return MergeBleIdTables<
108 decltype(makeBleIdTable(IntToType<T::value - 1>())),
115 constexpr CBleIdEntry<IntToType<-1> > makeBleIdTable(IntToType<-1> t)
117 return CBleIdEntry<IntToType<-1> >();
120 #define TOC_DECLARE_BLE_ID(traits) \ 122 struct CBleIdEntry<IntToType<traits::m_id> > \ 124 static constexpr bool empty = false; \ 125 static constexpr bool important = traits::m_ble; \ 126 const char content = traits::m_id; \ 129 template<
class Length>
130 struct CBleIdTranslateTable
132 static constexpr
typename CBleIdTable<Length>::type impl = makeBleIdTable(Length());
133 static constexpr
bool empty = impl.empty;
134 const typename CBleIdTable<Length>::type instance = impl;