|
|
#include "stdafx.h"
|
#include "vec1d.h"
|
|
|
vec1D::vec1D(unsigned int size, int offset, const float* data) : m_size(size), m_offset(offset), m_data(0)
|
{
|
m_last = (m_size + m_offset) - 1;
|
m_data = (float *)_aligned_malloc(m_size * sizeof(float), 16); //MMX alignement
|
|
for (unsigned int i = 0; i < m_size; i++)
|
{
|
if (data != 0)
|
m_data[i] = data[i];
|
else
|
m_data[i] = 0.0f;
|
}
|
|
m_data -= m_offset;
|
}
|
|
vec1D::vec1D(const vec1D& v) : m_data(0)
|
{
|
init(v);
|
}
|
|
vec1D::~vec1D()
|
{
|
close();
|
}
|
|
void vec1D::init(const vec1D& v)
|
{
|
close();
|
|
m_size = v.size();
|
m_offset = v.first();
|
const float* data = v.data();
|
|
m_last = (m_size + m_offset) - 1;
|
m_data = (float *)_aligned_malloc(m_size * sizeof(float), 16); //MMX alignement
|
|
for (unsigned int i = 0; i < m_size; i++)
|
m_data[i] = data[i];
|
|
m_data -= m_offset;
|
}
|
|
void vec1D::close()
|
{
|
if (m_data != 0)
|
{
|
m_data += m_offset;
|
_aligned_free(m_data);
|
}
|
}
|