bd3f438ada46fbaa26c9c2e3ccefc30c6fa1f036
[platform/core/ml/nnfw.git] / runtime / onert / core / src / ir / LayoutSet.cc
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "LayoutSet.h"
18
19 namespace onert
20 {
21 namespace ir
22 {
23
24 LayoutSet::LayoutSet(std::initializer_list<Layout> layouts)
25 {
26   for (auto layout : layouts)
27   {
28     _set.insert(layout);
29   }
30 }
31
32 LayoutSet LayoutSet::operator|(const LayoutSet &other) const
33 {
34   auto ret = *this;
35   for (auto layout : other)
36   {
37     ret.add(layout);
38   }
39   return ret;
40 }
41
42 LayoutSet LayoutSet::operator&(const LayoutSet &other) const
43 {
44   LayoutSet ret;
45   for (auto layout : other)
46   {
47     if (contains(layout))
48     {
49       ret.add(layout);
50     }
51   }
52   return ret;
53 }
54
55 LayoutSet LayoutSet::operator-(const LayoutSet &other) const
56 {
57   auto ret = *this;
58   for (auto layout : other)
59   {
60     ret.remove(layout);
61   }
62   return ret;
63 }
64
65 } // namespace ir
66 } // namespace onert