Source code of Windows XP (NT5)
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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000.
//
// File: addprop.cxx
//
// Contents: A class to add properties from a document to the search
// data repository.
//
// History: 7-23-96 srikants Created
//
//----------------------------------------------------------------------------
#include <pch.cxx>
#pragma hdrstop
#include <ciole.hxx>
#include <drep.hxx>
#include <propspec.hxx>
#include <propfilt.hxx>
#include "addprop.hxx"
static GUID guidNull = { 0x00000000, 0x0000, 0x0000, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
static CFullPropSpec psPath( guidStorage, PID_STG_PATH);
//+---------------------------------------------------------------------------
//
// Member: CSearchAddProp::DoIt
//
// Synopsis: Adds properties to the data repository by iterating over
// the properties.
//
// History: 7-23-96 srikants Created
//
//----------------------------------------------------------------------------
void CSearchAddProp::DoIt() { //
// Add Stat properties. Do so for both directories and files.
//
{ CDocStatPropertyEnum CPEProp( &_openedDoc); AddProperties( CPEProp ); }
//
// If there are ole properties, we must add the ole properties also.
//
if ( _fAddOleProps ) { COLEPropertyEnum oleProp( &_openedDoc ); AddProperties( oleProp ); } }
//+---------------------------------------------------------------------------
//
// Method: CSearchAddProp::AddProperty
//
// Arguments:
// [var] -- Property value
// [ps] -- Property ID
// [drep] -- Data repository for filtered information
//
// History: 21-Oct-93 DwightKr Created.
// 23-Jul-96 SrikantS Adapted for search needs
//
//----------------------------------------------------------------------------
void CSearchAddProp::AddProperty( CStorageVariant const & var, CFullPropSpec & ps, CDataRepository & drep ) { //
// Don't filter paths
//
if ( ps != psPath ) { vqDebugOut(( DEB_FILTER, "Filter property 0x%x: ", ps.GetPropertyPropid() ));
#if CIDBG == 1
var.DisplayVariant(DEB_FILTER | DEB_NOCOMPNAME, 0); #endif // CIDBG == 1
vqDebugOut(( DEB_FILTER | DEB_NOCOMPNAME, "\n" ));
// output the property to the data repository
drep.PutPropName( ps ); drep.PutValue( var );
// store all property values in the property cache, though
// only some are actually stored
drep.StoreValue( ps, var ); } }
//+---------------------------------------------------------------------------
//
// Method: CSearchAddProp::AddProperties
//
// Arguments:
// [propEnum] -- iterator for properties in a file
//
// History: 27-Nov-93 DwightKr Created.
// 23-Jul-96 SrikantS Adapted for search needs
//
//----------------------------------------------------------------------------
void CSearchAddProp::AddProperties( CPropertyEnum & propEnum ) {
CFullPropSpec ps;
for ( CStorageVariant const * pvar = propEnum.Next( ps ); pvar != 0; pvar = propEnum.Next( ps ) ) { AddProperty( *pvar, ps, _drep ); } }
|