C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

buffer_view.h
1 /* file: buffer_view.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of a dummy base class needed to fix ABI inconsistency between
21 // Visual Studio* 2012 and 2013.
22 //--
23 */
24 
25 #ifndef __DAAL_SERVICES_BUFFER_VIEW_H__
26 #define __DAAL_SERVICES_BUFFER_VIEW_H__
27 
28 #include "services/daal_defines.h"
29 #include "services/collection.h"
30 
31 namespace daal
32 {
33 namespace services
34 {
35 
39 namespace interface1
40 {
41 
54 template<typename T>
55 class BufferView : public Base
56 {
57 public:
61  BufferView() :
62  _buffer(NULL),
63  _size(0) { }
64 
70  explicit BufferView(T *buffer, size_t bufferSize) :
71  _buffer(buffer),
72  _size(bufferSize)
73  {
74  DAAL_ASSERT( _buffer );
75  }
76 
81  T *data() const
82  {
83  return _buffer;
84  }
85 
90  size_t size() const
91  {
92  return _size;
93  }
94 
99  bool empty() const
100  {
101  return (_buffer == NULL) || (_size == 0);
102  }
103 
109  const T &operator [] (size_t index) const
110  {
111  DAAL_ASSERT( index < _size );
112  return _buffer[index];
113  }
114 
120  T &operator [] (size_t index)
121  {
122  DAAL_ASSERT( index < _size );
123  return _buffer[index];
124  }
125 
132  BufferView getBlock(size_t offset, size_t size) const
133  {
134  DAAL_ASSERT( offset + size <= _size );
135  return BufferView<T>(_buffer + offset, size);
136  }
137 
138 private:
139  T *_buffer;
140  size_t _size;
141 };
142 
144 } // namespace interface1
145 
146 using interface1::BufferView;
147 
148 } // namespace services
149 } // namespace daal
150 
151 #endif
daal::services::interface1::BufferView::getBlock
BufferView getBlock(size_t offset, size_t size) const
Definition: buffer_view.h:132
daal::services::interface1::BufferView::size
size_t size() const
Definition: buffer_view.h:90
daal::services::interface1::BufferView::operator[]
const T & operator[](size_t index) const
Definition: buffer_view.h:109
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:41
daal_defines.h
daal::services::interface1::BufferView::empty
bool empty() const
Definition: buffer_view.h:99
daal::services::interface1::BufferView::BufferView
BufferView()
Definition: buffer_view.h:61
daal::services::interface1::BufferView
Class that refers to a contiguous sequence of objects, but doesn&#39;t control allocated memory buffer an...
Definition: buffer_view.h:55
daal::services::interface1::BufferView::BufferView
BufferView(T *buffer, size_t bufferSize)
Definition: buffer_view.h:70
daal::services::interface1::BufferView::data
T * data() const
Definition: buffer_view.h:81

For more complete information about compiler optimizations, see our Optimization Notice.