Publishing 2019 R1 content
[platform/upstream/dldt.git] / inference-engine / samples / common / format_reader / format_reader_ptr.h
1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
3 //
4
5 /**
6  * \brief Implementation of smart pointer for Reader class
7  * \file format_reader_ptr.h
8  */
9 #pragma once
10
11 #include "format_reader.h"
12 #include <functional>
13 #include <memory>
14
15 namespace FormatReader {
16 class ReaderPtr {
17 public:
18     explicit ReaderPtr(const char *imageName) : reader(CreateFormatReader(imageName),
19                                                 [](Reader *p) {
20                                                 p->Release();
21                                            }) {}
22     /**
23      * @brief dereference operator overload
24      * @return Reader
25      */
26     Reader *operator->() const noexcept {
27         return reader.get();
28     }
29
30     /**
31      * @brief dereference operator overload
32      * @return Reader
33      */
34     Reader *operator*() const noexcept {
35         return reader.get();
36     }
37
38     Reader *get() {
39         return reader.get();
40     }
41
42 protected:
43     std::unique_ptr<Reader, std::function<void(Reader *)>> reader;
44 };
45 }  // namespace FormatReader