Commit 0973c093 authored by incardon's avatar incardon

Removing old code

parent f46e3123
/*
* PreAllocHeapMemory.hpp
*
* Created on: Apr 3, 2015
* Author: i-bird
*/
#ifndef PREALLOCHEAPMEMORY_HPP_
#define PREALLOCHEAPMEMORY_HPP_
#include "HeapMemory.hpp"
/*! Preallocated memory sequence
*
* It is an allocator that respond to some allocation sequence
*
* \tparam number of allocation in the sequence
*
*/
template<unsigned int N>
class PreAllocHeapMemory : public memory
{
// Actual allocation pointer
size_t a_seq ;
// List of allowed allocation
size_t sequence[N];
// starting from 0 is the cumulative buffer of sequence
// Example sequence = 2,6,3,6
// sequence_c = 0,2,8,11
size_t sequence_c[N];
// Main class for memory allocation
HeapMemory hp;
//! Reference counter
long int ref_cnt;
public:
~PreAllocHeapMemory()
{
if (ref_cnt != 0)
std::cerr << "Error: " << __FILE__ << " " << __LINE__ << " destroying a live object" << "\n";
}
//! Default constructor
PreAllocHeapMemory()
:a_seq(0),ref_cnt(0)
{}
/*! \brief Preallocated memory sequence
*
* \param sequence of allocation size
*
*/
PreAllocHeapMemory(size_t (& sequence)[N])
:a_seq(0),ref_cnt(0)
{
size_t total_size = 0;
for (size_t i = 0 ; i < N ; i++)
{
this->sequence[i] = sequence[i];
this->sequence_c[i] = total_size;
total_size += sequence[i];
}
// Allocate the total size of memory
hp.allocate(total_size);
}
//! Increment the reference counter
virtual void incRef()
{ref_cnt++;}
//! Decrement the reference counter
virtual void decRef()
{ref_cnt--;}
//! Return the reference counter
virtual long int ref()
{
return ref_cnt;
}
//! flush the memory
virtual bool flush() {return true;};
/*! \brief Allocate a chunk of memory
*
* Allocate a chunk of memory
*
* \param sz size of the chunk of memory to allocate in byte
*
*/
virtual bool allocate(size_t sz)
{
// Check that the size match
if (sequence[a_seq] != sz)
{
std::cerr << "Error: " << __FILE__ << " " << __LINE__ << " allocation failed";
return false;
}
a_seq++;
return true;
}
/*! \brief Return a readable pointer with your data
*
* Return a readable pointer with your data
*
*/
virtual void * getPointer()
{
if (a_seq == 0)
return NULL;
return (((unsigned char *)hp.getPointer()) + sequence_c[a_seq-1]);
}
/*! \brief Return a readable pointer with your data
*
* Return a readable pointer with your data
*
*/
const virtual void * getPointer() const
{
if (a_seq == 0)
return NULL;
return (((unsigned char *)hp.getPointer()) + sequence_c[a_seq-1]);
}
/*! \brief Allocate or resize the allocated memory
*
* Resize the allocated memory, if request is smaller than the allocated, memory
* is not resized
*
* \param sz size
* \return true if the resize operation complete correctly
*
*/
virtual bool resize(size_t sz)
{
return allocate(sz);
}
/*! \brief Get the size of the allocated memory
*
* Get the size of the allocated memory
*
* \return the size of the allocated memory
*
*/
virtual size_t size() const
{
if (a_seq == 0)
return 0;
return sequence[a_seq-1];
}
/*! \brief Destroy memory
*
*/
void destroy()
{
hp.destroy();
}
/*! \brief Copy memory
*
*/
virtual bool copy(const memory & m)
{
return hp.copy(m);
}
/*! \brief Allocated Memory is never initialized
*
* \return false
*
*/
bool isInitialized()
{
return false;
}
};
#endif /* PREALLOCHEAPMEMORY_HPP_ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment