Counter Strike : Global Offensive Source Code
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//======= Copyright (c) 1996-2009, Valve Corporation, All rights reserved. ======
//
//===============================================================================
#ifndef DEMOBUFFER_H
#define DEMOBUFFER_H
#ifdef _WIN32
#pragma once
#endif
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "utlbuffer.h"
#include "utllinkedlist.h"
#include <tier2/utlstreambuffer.h>
#include "interface.h"
#include "demofile/demoformat.h"
//-----------------------------------------------------------------------------
struct DemoBufferInitParams_t { virtual ~DemoBufferInitParams_t() {} // Need this to make polymorphic
};
struct StreamDemoBufferInitParams_t : public DemoBufferInitParams_t { StreamDemoBufferInitParams_t( char const* filename, char const* path, int flags, int openfileflags ) : pFilename( filename ), pszPath( path ), nFlags( flags ), nOpenFileFlags( openfileflags ) {} char const* pFilename; char const* pszPath; int nFlags; int nOpenFileFlags; };
struct MemoryDemoBufferInitParams_t : public DemoBufferInitParams_t { MemoryDemoBufferInitParams_t( int maxsize ) : nMaxSize( maxsize ) {} int nMaxSize; // TODO: make use of this parameter
};
//-----------------------------------------------------------------------------
// Demo buffer interface - allows for one implementation of the demo format
// (demofile.cpp) with a common interface for writing to disk or writing to
// a buffer in memory.
//-----------------------------------------------------------------------------
class IDemoBuffer : public IBaseInterface { public: virtual bool Init( DemoBufferInitParams_t const& params ) = 0;
virtual void NotifySignonComplete() = 0;
virtual bool IsInitialized() const = 0; virtual bool IsValid() const = 0;
virtual void WriteHeader( const void *pData, int nSize ) = 0;
virtual void NotifyBeginFrame() = 0; virtual void NotifyEndFrame() = 0;
// Change where I'm writing (put)/reading (get)
virtual void SeekPut( bool bAbsolute, int offset ) = 0; virtual void SeekGet( bool bAbsolute, int offset ) = 0;
// Where am I writing (put)/reading (get)?
virtual int TellPut( ) const = 0; virtual int TellGet( ) const = 0;
// What's the most I've ever written?
virtual int TellMaxPut( ) const = 0;
virtual char GetChar( ) = 0; virtual unsigned char GetUnsignedChar( ) = 0; virtual int GetInt( ) = 0; virtual void Get( void* pMem, int size ) = 0;
virtual void PutChar( char c ) = 0; virtual void PutUnsignedChar( unsigned char uc ) = 0; virtual void PutInt( int i ) = 0; virtual void Put( const void* pMem, int size ) = 0;
virtual void WriteTick( int nTick ) = 0;
virtual void UpdateStartTick( int& nStartTick ) const = 0; virtual void DumpToFile( char const* pFilename, const demoheader_t &header ) const = 0; };
IDemoBuffer *CreateDemoBuffer( bool bMemoryBuffer, const DemoBufferInitParams_t ¶ms );
#endif // DEMOBUFFER_H
|