Imported Upstream version 1.9.0
[platform/core/ml/nnfw.git] / runtime / onert / core / src / exec / feature / nhwc / View.h
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 #ifndef __ONERT_EXEC_FEATURE_NHWC_VIEW_H__
18 #define __ONERT_EXEC_FEATURE_NHWC_VIEW_H__
19
20 #include "../Reader.h"
21
22 #include <cassert>
23 #include <cstddef>
24
25 #include "backend/ITensor.h"
26 #include "ir/Shape.h"
27 #include "util/Utils.h"
28
29 namespace onert
30 {
31 namespace exec
32 {
33 namespace feature
34 {
35 namespace nhwc
36 {
37
38 template <typename T> class View final : public Reader<T>
39 {
40 public:
41   // Construct for buffer of model inputs
42   View(const ir::FeatureShape &shape, T *ptr, size_t len) : Reader<T>{shape, ptr, len}
43   {
44     // DO NOTHING
45   }
46
47   // Construct for backend tensor
48   View(backend::ITensor *tensor) : Reader<T>{tensor}
49   {
50     // DO NOTHING
51   }
52
53 public:
54   using Reader<T>::at;
55   T &at(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch)
56   {
57     return const_cast<T &>(Reader<T>::getRef(batch, row, col, ch));
58   }
59   T &at(uint32_t row, uint32_t col, uint32_t ch)
60   {
61     return const_cast<T &>(Reader<T>::getRef(0, row, col, ch));
62   }
63 };
64
65 } // namespace nhwc
66 } // namespace feature
67 } // namespace exec
68 } // namespace onert
69
70 #endif // __ONERT_EXEC_FEATURE_NHWC_VIEW_H__