-// Distributed under the MIT license. Copyright (c) 2010, Ivan Vashchaev\r
-\r
-#include <stdlib.h>\r
-#include <algorithm>\r
-#include "block_allocator.h"\r
-\r
-block_allocator::block_allocator(size_t blocksize): m_head(0), m_blocksize(blocksize)\r
-{\r
-}\r
-\r
-block_allocator::~block_allocator()\r
-{\r
- while (m_head)\r
- {\r
- block *temp = m_head->next;\r
- ::free(m_head);\r
- m_head = temp;\r
- }\r
-}\r
-\r
-void block_allocator::swap(block_allocator &rhs)\r
-{\r
- std::swap(m_blocksize, rhs.m_blocksize);\r
- std::swap(m_head, rhs.m_head);\r
-}\r
-\r
-void *block_allocator::malloc(size_t size)\r
-{\r
- if ((m_head && m_head->used + size > m_head->size) || !m_head)\r
- {\r
- // calc needed size for allocation\r
- size_t alloc_size = std::max(sizeof(block) + size, m_blocksize);\r
-\r
- // create new block\r
- char *buffer = (char *)::malloc(alloc_size);\r
- block *b = reinterpret_cast<block *>(buffer);\r
- b->size = alloc_size;\r
- b->used = sizeof(block);\r
- b->buffer = buffer;\r
- b->next = m_head;\r
- m_head = b;\r
- }\r
-\r
- void *ptr = m_head->buffer + m_head->used;\r
- m_head->used += size;\r
- return ptr;\r
-}\r
-\r
-void block_allocator::free()\r
-{\r
- block_allocator(0).swap(*this);\r
-}\r
+// Distributed under the MIT license. Copyright (c) 2010, Ivan Vashchaev
+
+#include <stdlib.h>
+#include <algorithm>
+#include "block_allocator.h"
+
+block_allocator::block_allocator(size_t blocksize): m_head(0), m_blocksize(blocksize)
+{
+}
+
+block_allocator::~block_allocator()
+{
+ while (m_head)
+ {
+ block *temp = m_head->next;
+ ::free(m_head);
+ m_head = temp;
+ }
+}
+
+void block_allocator::swap(block_allocator &rhs)
+{
+ std::swap(m_blocksize, rhs.m_blocksize);
+ std::swap(m_head, rhs.m_head);
+}
+
+void *block_allocator::malloc(size_t size)
+{
+ if ((m_head && m_head->used + size > m_head->size) || !m_head)
+ {
+ // calc needed size for allocation
+ size_t alloc_size = std::max(sizeof(block) + size, m_blocksize);
+
+ // create new block
+ char *buffer = (char *)::malloc(alloc_size);
+ block *b = reinterpret_cast<block *>(buffer);
+ b->size = alloc_size;
+ b->used = sizeof(block);
+ b->buffer = buffer;
+ b->next = m_head;
+ m_head = b;
+ }
+
+ void *ptr = m_head->buffer + m_head->used;
+ m_head->used += size;
+ return ptr;
+}
+
+void block_allocator::free()
+{
+ block_allocator(0).swap(*this);
+}