714dd74636
git-svn-id: svn://10.65.10.50/trunk@5350 c028cbd2-c16b-5b4b-a496-9718f37d4682
143 lines
4.1 KiB
C++
Executable File
143 lines
4.1 KiB
C++
Executable File
//
|
|
// LISTUNMD.CPP
|
|
//
|
|
// Source file for ArchiveLib 2.0
|
|
//
|
|
// Copyright (c) Greenleaf Software, Inc. 1994-1996
|
|
// All Rights Reserved
|
|
//
|
|
// CONTENTS
|
|
//
|
|
// ALEntryList::UnmarkDuplicates()
|
|
// ALEntryListUnmarkDuplicates()
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// February 14, 1996 2.0A : New release
|
|
//
|
|
|
|
#include "arclib.h"
|
|
#if !defined( AL_IBM )
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
//
|
|
// NAME
|
|
//
|
|
// ALEntryList::UnmarkDuplicates()
|
|
//
|
|
// PLATFORMS/ENVIRONMENTS
|
|
//
|
|
// Console Windows PM
|
|
// C++ C VB Delphi
|
|
//
|
|
// SHORT DESCRIPTION
|
|
//
|
|
// Clean the duplicates from a list.
|
|
//
|
|
// C++ SYNOPSIS
|
|
//
|
|
// #include "arclib.h"
|
|
//
|
|
// void ALEntryList::UnmarkDuplicates( ALEntryList &list,
|
|
// const char *error_message = 0 );
|
|
//
|
|
// C SYNOPSIS
|
|
//
|
|
// #include "arclib.h"
|
|
//
|
|
// void ALEntryListUnmarkDuplicates( hALEntryList this_object,
|
|
// hALEntryList list,
|
|
// char *error_message );
|
|
//
|
|
// VB SYNOPSIS
|
|
//
|
|
// Declare Sub ALEntryListUnmarkDuplicates Lib "AL20LW"
|
|
// (ByVal this_object&, ByVal list&, ByVal error_message&)
|
|
//
|
|
// DELPHI SYNOPSIS
|
|
//
|
|
// procedure ALEntryListUnmarkDuplicates( this_object : hALEntryList;
|
|
// list : hALEntryList;
|
|
// error_message : PChar );
|
|
//
|
|
// ARGUMENTS
|
|
//
|
|
// this_object : A reference or pointer to the ALEntryList object that
|
|
// is going to be modified . Note that the C++
|
|
// version of this call doesn't have an explicit argument
|
|
// here, since it has access to 'this' implicitly.
|
|
//
|
|
// list : The list that is going to be compared to this.
|
|
//
|
|
// error_message : Each entry in this that turns out to have a duplicate
|
|
// entry in the list argument will not only be unmarked,
|
|
// it will also have its error status set, but only if
|
|
// an error message is provided.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// I think this function is a little confusing. At first blush, you would
|
|
// probably expect this function to scan all the items in a single list,
|
|
// and unmark any object that turn out to have duplicates elsewhere
|
|
// in the list. Unfortunately, it doesn't work that way.
|
|
//
|
|
// Instead, this function goes through the list specified by this, and
|
|
// checks to see if each entry in this appears in the list specified by
|
|
// the list parameter. This means that we are working with two different
|
|
// lists, which certainly offers plenty of chances to get confused.
|
|
//
|
|
// Anyway, each entry in this that turns out to have a duplicate gets its
|
|
// mark cleared. If the calling program specifies an error message,
|
|
// the entry also gets its mStatus error member set to flag this as an
|
|
// error.
|
|
//
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// EXAMPLE
|
|
//
|
|
// SEE ALSO
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// February 14, 1996 2.0A : New Release
|
|
//
|
|
|
|
void AL_PROTO
|
|
ALEntryList::UnmarkDuplicates( ALEntryList &list, /* Tag public function */
|
|
const char AL_DLL_FAR *error_message /* = 0 */ )
|
|
{
|
|
ALEntry *job = GetFirstEntry();
|
|
while ( job ) {
|
|
if ( job->GetMark() ) {
|
|
if ( job->Duplicate( list ) ) {
|
|
job->ClearMark();
|
|
if ( error_message && error_message[ 0 ] != '\0' )
|
|
job->mpStorageObject->mStatus.SetError(
|
|
AL_DUPLICATE_ENTRY,
|
|
error_message );
|
|
}
|
|
}
|
|
job = job->GetNextEntry();
|
|
}
|
|
}
|
|
|
|
#if !defined( AL_NO_C )
|
|
|
|
extern "C" AL_LINKAGE void AL_FUNCTION
|
|
ALEntryListUnmarkDuplicates( hALEntryList this_object, /* Tag public function */
|
|
hALEntryList list,
|
|
char AL_DLL_FAR *error_message )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListUnmarkDuplicates" );
|
|
AL_ASSERT_OBJECT( list, ALEntryList, "ALEntryListUnmarkDuplicates" );
|
|
( (ALEntryList *) this_object )->UnmarkDuplicates( * (ALEntryList *) list, error_message );
|
|
}
|
|
|
|
|
|
#endif
|
|
|