ArmNN
 20.02
MemorySources.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <type_traits>
9 
10 namespace armnn
11 {
12 
13 enum class MemorySource
14 {
15  Undefined = 0,
16  Malloc = 1,
17  DmaBuf = 2,
18  DmaBufProtected = 4
19 };
20 
21 using MemorySourceFlags = unsigned int;
22 
23 template<typename T>
25 {
26  static const bool value = false;
27 };
28 
29 template<>
31 {
32  static const bool value = true;
33 };
34 
35 template <typename Arg, typename std::enable_if<IsMemorySource<Arg>::value>::type* = nullptr>
36 MemorySourceFlags Combine(Arg sourceA, Arg sourceB)
37 {
38  return static_cast<MemorySourceFlags>(sourceA) | static_cast<MemorySourceFlags>(sourceB);
39 }
40 
41 template <typename Arg, typename ... Args, typename std::enable_if<IsMemorySource<Arg>::value>::type* = nullptr>
42 MemorySourceFlags Combine(Arg source, Args... rest)
43 {
44  return static_cast<MemorySourceFlags>(source) | Combine(rest...);
45 }
46 
47 inline bool CheckFlag(MemorySourceFlags flags, MemorySource source)
48 {
49  return (static_cast<MemorySourceFlags>(source) & flags) != 0;
50 }
51 
52 } //namespace armnn
unsigned int MemorySourceFlags
Copyright (c) 2020 ARM Limited.
MemorySourceFlags Combine(Arg sourceA, Arg sourceB)
bool CheckFlag(MemorySourceFlags flags, MemorySource source)