//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//

#pragma once

#include <type_traits>

namespace armnn
{

enum class MemorySource
{
    Undefined = 0,
    Malloc = 1,
    DmaBuf = 2,
    DmaBufProtected = 4
};

using MemorySourceFlags = unsigned int;

template<typename T>
struct IsMemorySource
{
    static const bool value = false;
};

template<>
struct IsMemorySource<MemorySource>
{
    static const bool value = true;
};

template <typename Arg, typename std::enable_if<IsMemorySource<Arg>::value>::type* = nullptr>
MemorySourceFlags Combine(Arg sourceA, Arg sourceB)
{
    return static_cast<MemorySourceFlags>(sourceA) | static_cast<MemorySourceFlags>(sourceB);
}

template <typename Arg, typename ... Args, typename std::enable_if<IsMemorySource<Arg>::value>::type* = nullptr>
MemorySourceFlags Combine(Arg source, Args... rest)
{
    return static_cast<MemorySourceFlags>(source) | Combine(rest...);
}

inline bool CheckFlag(MemorySourceFlags flags, MemorySource source)
{
    return (static_cast<MemorySourceFlags>(source) & flags) != 0;
}

} //namespace armnn