2025-04-27 07:49:33 -04:00

39 lines
987 B
C++

#pragma once
#include "parser.h"
class CMMFParser
{
protected:
class CMarsDocument* m_pMarsDocument;
DWORD m_dwDocSize;
BYTE* m_rgDocBuff;
CComBSTR m_bstrFirstPlace;
CMMFParser( CMarsDocument *pMarsDocument );
~CMMFParser()
{
if(m_rgDocBuff) LocalFree( m_rgDocBuff );
}
HRESULT DoPlace ( BYTE*& rgBuffer );
HRESULT DoPanel ( BYTE*& rgBuffer );
HRESULT DoPlaces ( BYTE*& rgBuffer );
HRESULT DoPanels ( BYTE*& rgBuffer );
HRESULT DoMarsApp( BYTE* rgBuffer );
template <class T> void Extract( BYTE*& rgBuffer, T& pRet )
{
::CopyMemory( &pRet, rgBuffer, sizeof(T) );
rgBuffer += sizeof(T);
}
public:
HRESULT ReadFile( const CComPtr<IStream>& spis );
static HRESULT ReadMMFStreamCookie( const CComPtr<IStream>& spis );
static HRESULT MMFToMars( LPCWSTR pszMMFUrl, class CMarsDocument* pMarsDocument );
};