windows-nt/Source/XPSP1/NT/inetsrv/query/h/mapper.hxx
2020-09-26 16:20:57 +08:00

50 lines
1.6 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1994.
//
// File: MAPPER.HXX
//
// Contents: Source Mapper
//
// Classes: CSourceMapper
//
// History: 23-Sep-94 BartoszM Created.
//
//----------------------------------------------------------------------------
#pragma once
//+---------------------------------------------------------------------------
//
// Class: CSourceMapper
//
// Purpose: Maps Text Source position into Filter Region
//
// History: 23-Sep-94 BartoszM Created.
//
// Notes: If the chunk is derived property, it can either map directly
// to the source chunk, in which case _ccLen is zero,
// or the mapping is undefined, in which case the source position
// is given by offset zero and length _ccLen.
//
//----------------------------------------------------------------------------
class CSourceMapper
{
public:
CSourceMapper () : _idChunk(0), _offSplit(0), _ccLen(0) {}
void NewChunk ( ULONG idChunk, ULONG ccBegin );
void NewDerivedChunk ( ULONG idChunkSrc, ULONG ccBeginSrc, ULONG ccLen );
void Advance ( ULONG ccProcessed );
void GetSrcRegion ( FILTERREGION& region, ULONG len, ULONG ccOffsetInBuffer );
private:
ULONG _idChunk;
ULONG _offInChunk; // Beginning of buffer is at this offset in chunk
ULONG _offSplit; // Buffer split between two chunks
ULONG _idNewChunk; // the new chunk in split buffer
ULONG _ccLen; // length of src chunk
};