18 #ifndef __SERVICES_INTERNAL_BUFFER_H__
19 #define __SERVICES_INTERNAL_BUFFER_H__
21 #include "services/base.h"
22 #include "services/buffer_view.h"
44 class Buffer :
public Base
51 explicit Buffer(
size_t size, services::Status *status = NULL)
53 services::Status localStatus = reallocate(size);
54 services::internal::tryAssignStatusAndThrow(status, localStatus);
64 services::daal_free((
void *)_buffer);
69 services::Status reallocate(
size_t size,
bool copy =
false)
72 {
return services::Status(); }
74 T *buffer = (T *)services::daal_calloc(
sizeof(T) * size );
76 {
return services::throwIfPossible(services::ErrorMemoryAllocationFailed); }
80 for (
size_t i = 0; i < _size; i++)
81 { _buffer[i] = buffer[i]; }
88 return services::Status();
91 services::Status enlarge(
size_t factor = 2,
bool copy =
false)
93 return reallocate(_size * factor, copy);
106 T *offset(
size_t elementsOffset)
const
108 DAAL_ASSERT( elementsOffset <= _size );
109 return _buffer + elementsOffset;
112 T &operator [] (
size_t index)
114 DAAL_ASSERT( index < _size );
115 return _buffer[index];
118 const T &operator [] (
size_t index)
const
120 DAAL_ASSERT( index < _size );
121 return _buffer[index];
124 services::BufferView<T> view()
const
126 return services::BufferView<T>(_buffer, _size);
130 Buffer(
const Buffer &);
131 Buffer &operator = (
const Buffer &);
daal::services::internal::Buffer
Class that provides simple memory management routines for handling blocks of continues memory...
Definition: buffer.h:44
daal::services::daal_calloc
DAAL_EXPORT void * daal_calloc(size_t size, size_t alignment=DAAL_MALLOC_DEFAULT_ALIGNMENT)
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:41
daal::services::daal_free
DAAL_EXPORT void daal_free(void *ptr)
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150