📄 outputsource_zipped.cpp
字号:
/* $Id: outputsource_zipped.cpp,v 1.6 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/IOData/outputsource_zipped.h"
/////////////////////////////////////////////////////////////////////////////
// CL_OutputSource_Zipped_Generic
class CL_OutputSource_Zipped_Generic
{
public:
CL_OutputSource *output;
bool delete_output;
int pos;
int length;
};
/////////////////////////////////////////////////////////////////////////////
// Construction:
CL_OutputSource_Zipped::CL_OutputSource_Zipped(
CL_OutputSource *output,
bool delete_output)
:
impl(new CL_OutputSource_Zipped_Generic)
{
impl->output = output;
impl->delete_output = delete_output;
impl->pos = 0;
impl->length = 0;
}
CL_OutputSource_Zipped::CL_OutputSource_Zipped(
const CL_OutputSource_Zipped ©)
:
impl(new CL_OutputSource_Zipped_Generic)
{
impl->output = copy.impl->output->clone();
impl->delete_output = true;
impl->pos = copy.impl->pos;
impl->length = copy.impl->length;
}
CL_OutputSource_Zipped::~CL_OutputSource_Zipped()
{
if (impl->delete_output) delete impl->output;
delete impl;
}
/////////////////////////////////////////////////////////////////////////////
// Attributes:
int CL_OutputSource_Zipped::tell() const
{
return impl->pos;
}
int CL_OutputSource_Zipped::size() const
{
return impl->length;
}
/////////////////////////////////////////////////////////////////////////////
// Operations:
int CL_OutputSource_Zipped::write(const void *data, int size)
{
int written = impl->output->write(data, size);
impl->pos += written;
impl->length += written;
return written;
}
void CL_OutputSource_Zipped::open()
{
impl->output->open();
impl->pos = 0;
impl->length = 0;
}
void CL_OutputSource_Zipped::close()
{
impl->output->close();
}
CL_OutputSource *CL_OutputSource_Zipped::clone()
{
return new CL_OutputSource_Zipped(*this);
}
/////////////////////////////////////////////////////////////////////////////
// Implementation:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -