Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / src / inference_engine / system_alllocator.hpp
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 #pragma once
6
7 #include <iostream>
8 #include "ie_allocator.hpp"
9
10 class SystemMemoryAllocator : public InferenceEngine::IAllocator {
11  public:
12     void Release() noexcept override {
13         delete this;
14     }
15
16     void * lock(void * handle, InferenceEngine::LockOp = InferenceEngine::LOCK_FOR_WRITE) noexcept override {
17         return handle;
18     }
19
20     void unlock(void * a) noexcept override {}
21
22     void * alloc(size_t size) noexcept override {
23         try {
24             auto handle = reinterpret_cast<void*>(new char[size]);
25             return handle;
26         }catch(...) {
27             return nullptr;
28         }
29     }
30
31     bool   free(void* handle) noexcept override {
32         try {
33             delete[] reinterpret_cast<char*>(handle);
34         }catch(...)
35         {   }
36         return true;
37     }
38 };