summaryrefslogtreecommitdiff
path: root/runtimes/libs/misc/include/misc/feature/Index.h
blob: a361d8dd2c2cabf535d08af5dc917d872c764896 (plain)
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__