blob: 70b98686cd1b387672dcf0814dfcc234f1752d2d [file] [log] [blame]
// Copyright (c) 2010 The WebM project authors. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file in the root of the source
// tree. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
#pragma once
namespace EbmlIO
{
class File
{
File(const File&);
File& operator=(const File&);
public:
File();
~File();
void SetStream(IStream*);
IStream* GetStream() const;
HRESULT SetSize(__int64);
__int64 SetPosition(__int64, STREAM_SEEK origin = STREAM_SEEK_SET);
__int64 GetPosition() const;
void Write(const void*, ULONG);
void Serialize8UInt(__int64);
void Serialize4UInt(ULONG);
void Serialize2UInt(USHORT);
void Serialize1UInt(BYTE);
static BYTE GetSerializeUIntSize(__int64);
void SerializeUInt(__int64, BYTE size);
void Serialize2SInt(SHORT);
void Serialize4Float(float);
void WriteID4(ULONG);
void WriteID3(ULONG);
void WriteID2(USHORT);
void WriteID1(BYTE);
ULONG ReadID4();
void Write8UInt(__int64);
void Write4UInt(ULONG);
void Write2UInt(USHORT);
void Write1UInt(BYTE);
void WriteUInt(__int64, ULONG size = 0);
void Write1String(const char*);
//void Write1String(const char* str, size_t len);
void Write1UTF8(const wchar_t*);
private:
IStream* m_pStream;
};
HRESULT SetSize(IStream*, __int64);
__int64 SetPosition(IStream*, __int64, STREAM_SEEK);
void Serialize(ISequentialStream*, const BYTE*, const BYTE*);
void Serialize(ISequentialStream*, const void*, ULONG);
void Write(ISequentialStream*, const void*, ULONG);
void WriteID4(ISequentialStream*, ULONG);
void WriteID3(ISequentialStream*, ULONG);
void WriteID2(ISequentialStream*, USHORT);
void WriteID1(ISequentialStream*, BYTE);
ULONG ReadID4(ISequentialStream*);
void Write8UInt(ISequentialStream*, __int64);
void Write4UInt(ISequentialStream*, ULONG);
void Write2UInt(ISequentialStream*, USHORT);
void Write1UInt(ISequentialStream*, BYTE);
void WriteUInt(ISequentialStream*, __int64, ULONG size = 0);
void Write1String(ISequentialStream*, const char*);
void Write1String(ISequentialStream*, const char*, size_t);
void Write1UTF8(ISequentialStream*, const wchar_t*);
} //end namespace EbmlIO