Imported Upstream version 1.18.0
[platform/core/ml/nnfw.git] / compiler / luci-interpreter / include / luci_interpreter / StaticMemoryManager.h
1 /*
2  * Copyright (c) 2021 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 LUCI_INTERPRETER_STATIC_MEMORY_MANAGER_H
18 #define LUCI_INTERPRETER_STATIC_MEMORY_MANAGER_H
19
20 #include "luci_interpreter/MemoryManager.h"
21
22 namespace luci_interpreter
23 {
24
25 // Used for allocations in static buffer, using offsets defined in luci model.
26 class StaticMemoryManager : public IMemoryManager
27 {
28 public:
29   StaticMemoryManager() = delete;
30
31   explicit StaticMemoryManager(uint8_t *buffer_ptr) : _buffer_ptr(buffer_ptr)
32   { /* Do nothing */
33   }
34
35   void allocate_memory(luci_interpreter::Tensor &tensor) final;
36   void release_memory(luci_interpreter::Tensor &tensor) final;
37
38 private:
39   // Stores a pointer to the beginning of the allocated memory buffer.
40   uint8_t *_buffer_ptr;
41 };
42
43 } // namespace luci_interpreter
44
45 #endif // LUCI_INTERPRETER_STATIC_MEMORY_MANAGER_H