Publishing R3
[platform/upstream/dldt.git] / inference-engine / thirdparty / ade / ade / source / memory_descriptor.cpp
1 // Copyright (C) 2018 Intel Corporation
2 //
3 // SPDX-License-Identifier: Apache-2.0
4 //
5
6 #include "memory/memory_descriptor.hpp"
7
8 #include <algorithm>
9
10 #include <util/zip_range.hpp>
11
12 namespace ade
13 {
14
15 MemoryDescriptor::MemoryDescriptor(size_t element_size,
16                                    const memory::DynMdSize& dims):
17     m_elementSize(element_size),
18     m_dims(dims)
19 {
20     ASSERT(dims.dims_count() > 0);
21     ASSERT(element_size > 0);
22 }
23
24 MemoryDescriptor::~MemoryDescriptor()
25 {
26 }
27
28 void MemoryDescriptor::addListener(IMemoryAccessListener* listener)
29 {
30     m_accessor.addListener(listener);
31 }
32
33 void MemoryDescriptor::removeListener(IMemoryAccessListener* listener)
34 {
35     m_accessor.removeListener(listener);
36 }
37
38 MemoryDescriptor::AccessHandle MemoryDescriptor::access(const memory::DynMdSpan& span,
39                                                         MemoryAccessType accessType)
40 {
41     return m_accessor.access(*this, span, accessType);
42 }
43
44 void MemoryDescriptor::commit(MemoryDescriptor::AccessHandle handle)
45 {
46     m_accessor.commit(handle);
47 }
48
49 const memory::DynMdSize& MemoryDescriptor::dimensions() const
50 {
51     return m_dims;
52 }
53
54 std::size_t MemoryDescriptor::elementSize() const
55 {
56     return m_elementSize;
57 }
58
59 void MemoryDescriptor::setExternalView(const memory::DynMdView<void>& view)
60 {
61     ASSERT(view.elementSize() == m_elementSize);
62     ASSERT(view.count() == m_dims.dims_count());
63     m_externalView = view;
64     m_accessor.setNewView(view);
65 }
66
67 memory::DynMdView<void> MemoryDescriptor::getExternalView() const
68 {
69     return m_externalView;
70 }
71
72 }