text: ////////////////////////////////////////////////////////////
  //
  // LouEngine - Multiplatform Game Engine Project
  // Copyright (C) 2016-2017 Jesus Lou (loucocito@gmail.com)
  //
  // This software is provided 'as-is', without any express or implied warranty.
  // In no event will the authors be held liable for any damages arising from the use of this software.
  //
  // Permission is granted to anyone to use this software for any purpose,
  // including commercial applications, and to alter it and redistribute it freely,
  // subject to the following restrictions:
  //
  // 1. The origin of this software must not be misrepresented;
  //    you must not claim that you wrote the original software.
  //    If you use this software in a product, an acknowledgment
  //    in the product documentation would be appreciated but is not required.
  //
  // 2. Altered source versions must be plainly marked as such,
  //    and must not be misrepresented as being the original software.
  //
  // 3. This notice may not be removed or altered from any source distribution.
  //
  ////////////////////////////////////////////////////////////
  
  #pragma once
  
  #include <packer/PackerDefinitions.h>
  
  #include <stdlib.h>
  
  class CPackFile
  {
  public:
  	CPackFile() 
  		: m_buffer(nullptr) 
  	{
  	}
  
  	void InitBuffer()
  	{
  		DestroyBuffer();
  		m_buffer = malloc(m_header.m_nBytes);
  	}
  
  	void DestroyBuffer()
  	{
  		if (m_buffer)
  		{
  			free(m_buffer);
  			m_buffer = nullptr;
  		}
  	}
  
  	PackerDefinitions::SPackFileHeader& GetHeader() { return m_header; }
  	void* GetBuffer() { return m_buffer; }
  	const CStrID& GetName() { return m_header.m_nameId; }
  	unsigned GetNBytes() { return m_header.m_nBytes; }
  
  	bool IsValid() { return m_buffer != nullptr; }
  
  private:
  	PackerDefinitions::SPackFileHeader m_header;
  	void* m_buffer;
  };