diff options
Diffstat (limited to 'runtime/neurun/core/include/util/Set.h')
-rw-r--r-- | runtime/neurun/core/include/util/Set.h | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/runtime/neurun/core/include/util/Set.h b/runtime/neurun/core/include/util/Set.h deleted file mode 100644 index 13213511d..000000000 --- a/runtime/neurun/core/include/util/Set.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file Set.h - * @brief This file contains neurun::util::Set class - * @ingroup COM_AI_RUNTIME - */ - -#ifndef __NEURUN_UTIL_SET_H__ -#define __NEURUN_UTIL_SET_H__ - -#include <cassert> -#include <unordered_set> - -namespace neurun -{ -namespace util -{ - -/** - * @brief Class for set of custom element - & @tparam Element Key type of Set - */ -template <typename Element> class Set -{ -public: - /** - * @brief Construct default Set object. - */ - Set() = default; - /** - * @brief Construct Set object by copy semantics. - */ - Set(const Set<Element> &) = default; - /** - * @brief Construct move Set object by move semantics. - */ - Set(Set<Element> &&) = default; - -public: - /** - * @brief Add a given element to the set - * - * @param e Element added - */ - void add(const Element &e) { _set.insert(e); } - /** - * @brief remove a given element from the set - * - * @param e Element removed - */ - void remove(const Element &e) { _set.erase(e); } - /** - * @brief Get size of the set - * - * @return The size of the set - */ - uint32_t size() const { return static_cast<uint32_t>(_set.size()); } - /** - * @brief Get whether the set is empty - * - * @return Whether the set is empty - */ - bool empty() const { return _set.empty(); } - /** - * @brief Get whether a given element exists in the set - * - * @param e A given element - * - * @return Whether a given element exists in the set - */ - bool contains(const Element &e) const { return _set.find(e) != _set.end(); } - /** - * @brief Get first element of the set - * - * @return first element of the set - */ - const Element &getOnlyElement() const - { - assert(_set.size() == 1u); - return *_set.begin(); - } - -public: - /** - * @brief operator overloading function for `|` - * - * @return A set with two sets combined - */ - Set<Element> operator|(const Set<Element> &other) const // Union - { - auto ret = *this; - for (auto e : other) - { - ret.add(e); - } - return ret; - } - /** - * @brief operator overloading function for `&` - * - * @return A set of elements that overlap in two sets - */ - Set<Element> operator&(const Set<Element> &other) const // Intersect - { - Set<Element> ret; - for (auto e : other) - { - if (contains(e)) - { - ret.add(e); - } - } - return ret; - } - /** - * @brief operator overloading function for `-` - * - * @return A set of subtracted from another set - */ - Set<Element> operator-(const Set<Element> &other) const // Minus - { - auto ret = *this; - for (auto e : other) - { - ret.remove(e); - } - return ret; - } - -public: - /** - * @brief begin() of const_iterator for this class - * - * @return The first iterator of the set - */ - typename std::unordered_set<Element>::const_iterator begin() const { return _set.begin(); } - /** - * @brief end() of const_iterator for this class - * - * @return The last iterator of the set - */ - typename std::unordered_set<Element>::const_iterator end() const { return _set.end(); } - -private: - std::unordered_set<Element> _set; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_SET_H__ |