1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
/*
* Copyright (c) 2018 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 Index.h
* @brief This file contains Index class
* @ingroup COM_AI_RUNTIME
*/
#ifndef __NNFW_MISC_FEATURE_INDEX_H__
#define __NNFW_MISC_FEATURE_INDEX_H__
#include <cstdint>
namespace nnfw
{
namespace misc
{
namespace feature
{
/**
* @brief Class to have the index information for calculating the offset.
*/
class Index
{
public:
/**
* @brief Construct Index object using default constrcutor
*/
Index() = default;
public:
/**
* @brief Construct Index object with three indexes of dimensions
* @param[in] ch The depth index
* @param[in] row The heigth index
* @param[in] col The width index
*/
Index(int32_t ch, int32_t row, int32_t col) : _batch{1}, _ch{ch}, _row{row}, _col{col}
{
// DO NOTHING
}
/**
* @brief Construct Index object with four indexes of dimensions
* @param[in] batch The batch index
* @param[in] ch The depth index
* @param[in] row The height index
* @param[in] col The width index
*/
Index(int32_t batch, int32_t ch, int32_t row, int32_t col)
: _batch{batch}, _ch{ch}, _row{row}, _col{col}
{
// DO NOTHING
}
public:
/**
* @brief Get the batch index
* @return The batch index
*/
int32_t batch(void) const { return _batch; }
/**
* @brief Get the depth index
* @return The depth index
*/
int32_t ch(void) const { return _ch; }
/**
* @brief Get the height index
* @return The height index
*/
int32_t row(void) const { return _row; }
/**
* @brief Get the width index
* @return The width index
*/
int32_t col(void) const { return _col; }
public:
/**
* @brief Get the batch index as the lvalue reference
* @return The reference of the batch value
*/
int32_t &batch(void) { return _batch; }
/**
* @brief Get the depth index as the lvalue reference
* @return The reference of the depth value
*/
int32_t &ch(void) { return _ch; }
/**
* @brief Get the height index as the lvalue reference
* @return The reference of the height value
*/
int32_t &row(void) { return _row; }
/**
* @brief Get the width index as the lvalue reference
* @return The reference of the width value
*/
int32_t &col(void) { return _col; }
private:
/**
* @brief The batch index
*/
int32_t _batch;
/**
* @brief The depth index
*/
int32_t _ch;
/**
* @brief The height index
*/
int32_t _row;
/**
* @brief The width index
*/
int32_t _col;
};
} // namespace feature
} // namespace misc
} // namespace nnfw
#endif // __NNFW_MISC_FEATURE_INDEX_H__
|