16 #ifndef __SERVICES_INTERNAL_BUFFER_H__
17 #define __SERVICES_INTERNAL_BUFFER_H__
19 #include "services/base.h"
20 #include "services/buffer_view.h"
42 class Buffer :
public Base
49 explicit Buffer(
size_t size, services::Status *status = NULL)
51 services::Status localStatus = reallocate(size);
52 services::internal::tryAssignStatusAndThrow(status, localStatus);
62 services::daal_free((
void *)_buffer);
67 services::Status reallocate(
size_t size,
bool copy =
false)
70 {
return services::Status(); }
72 T *buffer = (T *)services::daal_malloc(
sizeof(T) * size );
74 {
return services::throwIfPossible(services::ErrorMemoryAllocationFailed); }
78 for (
size_t i = 0; i < _size; i++)
79 { _buffer[i] = buffer[i]; }
86 return services::Status();
89 services::Status enlarge(
size_t factor = 2,
bool copy =
false)
91 return reallocate(_size * factor, copy);
104 T *offset(
size_t elementsOffset)
const
106 DAAL_ASSERT( elementsOffset <= _size );
107 return _buffer + elementsOffset;
110 T &operator [] (
size_t index)
112 DAAL_ASSERT( index < _size );
113 return _buffer[index];
116 const T &operator [] (
size_t index)
const
118 DAAL_ASSERT( index < _size );
119 return _buffer[index];
122 services::BufferView<T> view()
const
124 return services::BufferView<T>(_buffer, _size);
128 Buffer(
const Buffer &);
129 Buffer &operator = (
const Buffer &);
daal::services::internal::Buffer
Class that provides simple memory management routines for handling blocks of continues memory...
Definition: buffer.h:42
daal
Definition: algorithm_base_common.h:31
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:146
daal::services::daal_malloc
DAAL_EXPORT void * daal_malloc(size_t size, size_t alignment=DAAL_MALLOC_DEFAULT_ALIGNMENT)
daal::services::daal_free
DAAL_EXPORT void daal_free(void *ptr)
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:39