50 lines
1.6 KiB
C++
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
|
|
};
|
|
|