📄 outputsource_memory_generic.cpp
字号:
/* $Id: outputsource_memory_generic.cpp,v 1.7 2003/07/20 22:30:53 grumbel Exp $
**
** ClanLib Game SDK
** Copyright (C) 2003 The ClanLib Team
** For a total list of contributers see the file CREDITS.
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
**
*/
#include "Core/precomp.h"
#include "API/Core/System/cl_assert.h"
#include <API/Core/IOData/outputsource.h>
#include "outputsource_memory_generic.h"
CL_OutputSource_MemoryGeneric::CL_OutputSource_MemoryGeneric(unsigned int blocksize)
{
m_blocksize = blocksize;
m_size = m_blocksize;
m_data = new unsigned char[m_blocksize];
m_pos = 0;
}
CL_OutputSource_MemoryGeneric::~CL_OutputSource_MemoryGeneric()
{
delete[] m_data;
}
void *CL_OutputSource_MemoryGeneric::get_data() const
{
return (void *) m_data;
}
int CL_OutputSource_MemoryGeneric::write(const void *data, int size)
{
if (m_pos + size > m_size) // extend array with blocksize
{
int new_size = m_size + size + m_blocksize;
unsigned char *old = m_data;
m_data = new unsigned char[new_size];
memcpy(m_data, old, m_pos);
delete[] old;
m_size = new_size;
}
memcpy(m_data + m_pos, data, size);
m_pos += size;
return size;
}
void CL_OutputSource_MemoryGeneric::open()
{
}
void CL_OutputSource_MemoryGeneric::close()
{
}
CL_OutputSource *CL_OutputSource_MemoryGeneric::clone()
{
cl_assert(false); // not implemented yet.
return NULL;
}
int CL_OutputSource_MemoryGeneric::tell() const
{
return m_pos;
}
int CL_OutputSource_MemoryGeneric::size() const
{
return m_pos;
}
void CL_OutputSource_MemoryGeneric::purge()
{
memcpy(m_data,0,m_size);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -