16 #ifndef ACSDKMANUFACTORY_INTERNAL_UTILS_H_ 17 #define ACSDKMANUFACTORY_INTERNAL_UTILS_H_ 20 #include <type_traits> 28 namespace acsdkManufactory {
49 template <
typename...>
52 template <
typename Operation,
typename Result0>
57 template <
typename Operation,
typename Result0,
typename A1>
62 template <
typename Operation,
typename Result0,
typename A1,
typename A2>
68 template <
typename Operation,
typename Result0,
typename A1,
typename A2,
typename A3>
75 template <
typename Operation,
typename Result0,
typename A1,
typename A2,
typename A3,
typename A4,
typename...
An>
76 struct Apply<Operation, Result0, A1, A2, A3, A4,
An...> {
95 struct Apply<Operation, Result0, A1, A2, A3, A4, A5, A6, A7,
An...> {
122 struct Apply<Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
An...> {
154 template <
typename...>
157 template <
typename Operation,
typename Result0,
typename... Types>
158 struct Apply<Operation, Result0,
std::tuple<Types...>> {
171 template <
typename...>
174 template <
typename Type,
typename... ContainedTypes>
176 template <
typename InType>
178 constexpr
static const bool value =
false;
181 template <
bool... InTypes>
184 using FalseValues = BoolValues<IsFalse<ContainedTypes>::value...>;
185 using SameValues = BoolValues<std::is_same<Type, ContainedTypes>::value...>;
186 constexpr
static const bool value = !std::is_same<FalseValues, SameValues>::value;
198 template <
typename...>
201 template <
typename Container,
typename... Types>
203 template <
typename InType>
205 constexpr
static const bool value =
true;
208 template <
bool... InTypes>
213 constexpr
static const bool value = std::is_same<TrueValues, ContainedValues>::value;
225 template <
typename...>
228 template <
typename... ContainerTypes,
typename... TupleTypes>
230 :
ContainsTypes<std::tuple<ContainerTypes...>, TupleTypes...> {};
239 template <
typename...>
242 template <
typename Type>
245 template <
typename Type>
248 template <
typename Type>
258 template <
typename...>
261 template <
typename Type>
264 template <
typename Type>
274 template <
typename... Types>
276 template <
typename InType>
278 constexpr
static const bool value =
false;
281 template <
bool... InTypes>
286 constexpr
static const bool value = !std::is_same<FalseValues, IsImportValues>::value;
298 template <
typename... Types>
301 template <
typename...>
304 template <
typename... ResultTypes,
typename Type>
305 struct Apply<std::tuple<ResultTypes...>, Type> {
306 using type =
typename std::conditional<
308 std::tuple<ResultTypes...>,
326 template <
typename...>
329 template <
typename... Types,
typename... Unwanted>
330 struct RemoveTypes<std::tuple<Types...>, std::tuple<Unwanted...>> {
331 struct RemoveTypesOperation {
332 template <
typename...>
335 template <
typename... ResultTypes,
typename Type>
336 struct Apply<std::tuple<ResultTypes...>, Type> {
337 using type =
typename std::conditional<
339 std::tuple<ResultTypes...>,
357 template <
typename... Types>
362 template <
typename...>
365 template <
typename... ResultTypes,
typename Type>
366 struct Apply<std::tuple<ResultTypes...>, Type> {
367 using type =
typename std::
368 conditional<IsImport<Type>::value, std::tuple<ResultTypes...>, std::tuple<ResultTypes..., Type>>
::type;
375 template <
typename...>
378 template <
typename... ResultTypes,
typename Type>
380 using type = std::tuple<ResultTypes..., Type>;
383 template <
typename... ResultTypes,
typename Type>
384 struct Apply<std::tuple<ResultTypes...>, Type> {
385 using type = std::tuple<ResultTypes...>;
393 template <
typename...>
396 template <
typename... ResultTypes,
typename Type>
398 using type = std::tuple<ResultTypes..., Type>;
401 template <
typename... ResultTypes,
typename Type>
403 using type = std::tuple<ResultTypes..., Type>;
406 template <
typename... ResultTypes,
typename Type>
407 struct Apply<std::tuple<ResultTypes...>, Type> {
408 using type = std::tuple<ResultTypes...>;
419 template <
typename...>
422 template <
typename... ResultTypes,
typename Type>
424 using type = std::tuple<ResultTypes..., Type>;
427 template <
typename... ResultTypes,
typename Type>
428 struct Apply<std::tuple<ResultTypes...>, Type> {
429 using type = std::tuple<ResultTypes...>;
467 template <
typename... Types>
470 template <
typename Type,
typename... Types>
483 template <
typename Type,
typename... Types>
518 template <
typename... Types>
542 template <
typename... Types>
558 #endif // ACSDKMANUFACTORY_INTERNAL_UTILS_H_
std::tuple< ResultTypes..., Type > type
Definition: Utils.h:398
typename Operation::template Apply< Result5, A6 >::type Result6
Definition: Utils.h:101
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result5 typename Operation::template Apply< Result4, A5 >::type Result5
Definition: Utils.h:127
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result2 typename Operation::template Apply< Result1, A2 >::type Result2
Definition: Utils.h:124
Definition: CookBook.h:42
typename Operation::template Apply< Result2, A3 >::type Result3
Definition: Utils.h:79
BoolValues< std::is_same< Type, ContainedTypes >::value... > SameValues
Definition: Utils.h:185
GTEST_API_ bool IsTrue(bool condition)
Definition: MakeOptional.h:31
std::tuple< ResultTypes..., Type > type
Definition: Utils.h:424
typename DedupTypes< Types... >::type UniqueParameters
Definition: Utils.h:359
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result7 typename Operation::template Apply< Result6, A7 >::type Result7
Definition: Utils.h:129
typename std::conditional< ContainsType< std::tuple< Unwanted... >, Type >::value, std::tuple< ResultTypes... >, std::tuple< ResultTypes..., Type > >::type type
Definition: Utils.h:340
typename Operation::template Apply< Result3, A4 >::type Result4
Definition: Utils.h:80
typename Operation::template Apply< Result2, A3 >::type type
Definition: Utils.h:72
Definition: CapabilityConfiguration.h:190
typename RemoveTypes< typename RemoveTypes< OptionalImports, Exports >::type, UnsatisfiedRequiredImports >::type UnsatisfiedOptionalImports
Definition: Utils.h:451
typename RemoveTypes< DeclaredRequiredImports, MakeOptionalImports >::type RequiredImports
Definition: Utils.h:439
std::tuple< ResultTypes..., Type > type
Definition: Utils.h:380
BoolValues< IsTrue< Types >::value... > TrueValues
Definition: Utils.h:211
typename Fold::Apply< DedupOperation, std::tuple<>, Types... >::type type
Definition: Utils.h:313
Matcher< T > An()
Definition: gmock-matchers.h:3736
Definition: OptionalImport.h:30
static void apply(internal::CookBook &cookBook)
Definition: Utils.h:490
bool_constant< true > true_type
Definition: gtest-port.h:2210
typename Operation::template Apply< Result0, A1 >::type Result1
Definition: Utils.h:77
BoolValues< IsFalse< ContainedTypes >::value... > FalseValues
Definition: Utils.h:184
void operator()()
Definition: Utils.h:547
typename std::conditional< IsImport< Type >::value, std::tuple< ResultTypes... >, std::tuple< ResultTypes..., Type > >::type type
Definition: Utils.h:368
bool_constant< false > false_type
Definition: gtest-port.h:2209
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result11 typename Operation::template Apply< Result10, A11 >::type Result11
Definition: Utils.h:133
std::tuple< ResultTypes... > type
Definition: Utils.h:429
Exports exports
Definition: Utils.h:454
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result4 typename Operation::template Apply< Result3, A4 >::type Result4
Definition: Utils.h:126
typename FoldTupleTypes::Apply< GetExportsOperation, std::tuple<>, UniqueParameters >::type Exports
Definition: Utils.h:372
UnsatisfiedRequiredImports required
Definition: Utils.h:455
typename FoldTupleTypes::Apply< GetRequiredImportsOperation, std::tuple<>, UniqueParameters >::type DeclaredRequiredImports
Definition: Utils.h:437
typename RemoveTypes< RequiredImports, Exports >::type UnsatisfiedRequiredImports
Definition: Utils.h:444
typename FoldTupleTypes::Apply< GetOptionalImportsOperation, std::tuple<>, UniqueParameters >::type OptionalImports
Definition: Utils.h:416
typename std::conditional< ContainsType< std::tuple< ResultTypes... >, Type >::value, std::tuple< ResultTypes... >, std::tuple< ResultTypes..., Type > >::type type
Definition: Utils.h:309
typename Operation::template Apply< Result0, A1 >::type Result1
Definition: Utils.h:96
typename Apply< Operation, Result7, An... >::type type
Definition: Utils.h:103
std::tuple< ResultTypes..., Type > type
Definition: Utils.h:403
typename Operation::template Apply< Result0, A1 >::type Result1
Definition: Utils.h:64
static void apply(internal::CookBook &cookBook)
Definition: Utils.h:502
typename Operation::template Apply< Result1, A2 >::type Result2
Definition: Utils.h:97
Result0 type
Definition: Utils.h:54
typename Operation::template Apply< Result6, A7 >::type Result7
Definition: Utils.h:102
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result12 typename Operation::template Apply< Result11, A12 >::type Result12
Definition: Utils.h:134
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result6 typename Operation::template Apply< Result5, A6 >::type Result6
Definition: Utils.h:128
typename Operation::template Apply< Result4, A5 >::type Result5
Definition: Utils.h:100
Whether or not curl logs should be emitted.
Definition: AVSConnectionManager.h:36
typename Operation::template Apply< Result2, A3 >::type Result3
Definition: Utils.h:98
typename Operation::template Apply< Result0, A1 >::type type
Definition: Utils.h:59
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result8 typename Operation::template Apply< Result7, A8 >::type Result8
Definition: Utils.h:130
BoolValues< ContainsType< Container, Types >::value... > ContainedValues
Definition: Utils.h:212
typename Operation::template Apply< Result1, A2 >::type type
Definition: Utils.h:65
typename Operation::template Apply< Result1, A2 >::type Result2
Definition: Utils.h:78
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result9 typename Operation::template Apply< Result8, A9 >::type Result9
Definition: Utils.h:131
typename Fold::Apply< RemoveTypesOperation, std::tuple<>, Types... >::type type
Definition: Utils.h:344
type
Definition: upload.py:443
static void apply(internal::CookBook &cookBook)
Definition: Utils.h:477
typename Operation::template Apply< Result1, A2 >::type Result2
Definition: Utils.h:71
typename Fold::Apply< Operation, Result0, Types... >::type type
Definition: Utils.h:159
std::tuple< ResultTypes... > type
Definition: Utils.h:408
typename Apply< Operation, Result4, An... >::type type
Definition: Utils.h:81
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result10 typename Operation::template Apply< Result9, A10 >::type Result10
Definition: Utils.h:132
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result1 typename Operation::template Apply< Result0, A1 >::type Result1
Definition: Utils.h:123
typename Operation::template Apply< Result3, A4 >::type Result4
Definition: Utils.h:99
typename Operation::template Apply< Result0, A1 >::type Result1
Definition: Utils.h:70
std::tuple< ResultTypes... > type
Definition: Utils.h:385
void operator()()
Definition: Utils.h:523
Type
Definition: Type.h:26
typename FoldTupleTypes::Apply< GetMakeOptionalImportsOperation, std::tuple<>, UniqueParameters >::type MakeOptionalImports
Definition: Utils.h:390
CookBook & addInstance(const Type &instance)
Definition: CookBook_imp.h:533
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::type typename Apply< Operation, Result12, An... >::type type
Definition: Utils.h:135
UnsatisfiedOptionalImports optional
Definition: Utils.h:456
alexaClientSDK::acsdkManufactory::internal::Fold::Apply< Operation, Result0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, An... >::Result3 typename Operation::template Apply< Result2, A3 >::type Result3
Definition: Utils.h:125