205 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			205 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
/*
 | 
						|
 * ARCLIST.H
 | 
						|
 *
 | 
						|
 *  Header file for ArchiveLib 2.0
 | 
						|
 *
 | 
						|
 *  Copyright (c) 1994-1996 Greenleaf Software, Inc.
 | 
						|
 *  All Rights Reserved
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 * This header file contains the definitions for class ALEntryList.
 | 
						|
 * ALEntryList objects contain lists of objects that are either going
 | 
						|
 * to be inserted into an archive, or already reside there.
 | 
						|
 *
 | 
						|
 * CLASS DEFINITIONS:
 | 
						|
 *
 | 
						|
 *  ALEntryList         : A description of entries in an Archive.
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  May 26, 1994  1.0A  : First release
 | 
						|
 *
 | 
						|
 *  February 14, 1996  2.0A : New release
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _ARCLIST_H
 | 
						|
#define _ARCLIST_H
 | 
						|
 | 
						|
#if defined( __cplusplus )
 | 
						|
 | 
						|
/*
 | 
						|
 * Forward declarations.
 | 
						|
 */
 | 
						|
 | 
						|
class AL_CLASS_TYPE ALMonitor;
 | 
						|
 | 
						|
/*
 | 
						|
 * class ALEntryList
 | 
						|
 *
 | 
						|
 * DESCRIPTION
 | 
						|
 *
 | 
						|
 *  This class is simply a list of ALEntry objects.  There are
 | 
						|
 *  quite a few member functions that operate on this list.
 | 
						|
 *  ALEntryList objects are passed as arguments to many of the
 | 
						|
 *  archive functions, such as ReadDirectory(), Create(), Extract(),
 | 
						|
 *  and more.
 | 
						|
 *
 | 
						|
 * DATA MEMBERS
 | 
						|
 *
 | 
						|
 *  mpListHead   : The head of the list is a dummy entry that is a
 | 
						|
 *                 placeholder.
 | 
						|
 *
 | 
						|
 *  &mrMonitor   : A reference to the monitor associated with this list.
 | 
						|
 *                 The monitor will take care of generating all the
 | 
						|
 *                 user interface activity to go with this list.
 | 
						|
 *
 | 
						|
 *  mToolKit     : The toolkit that is used to create new compressors,
 | 
						|
 *                 decompressors, and storage objects as requested.
 | 
						|
 *
 | 
						|
 *  mStatus      : A standard status member, the status of the whole list.
 | 
						|
 *
 | 
						|
 * MEMBER FUNCTIONS
 | 
						|
 *
 | 
						|
 *  ALEntryList()         : The constructor
 | 
						|
 *  ALEntryList()         : Copy constructor
 | 
						|
 *  ~ALEntryList()        : The destructor.
 | 
						|
 *  operator new()        : Memory allocation for the class, only used
 | 
						|
 *                          when the ctor is in a DLL.
 | 
						|
 *  SetMarkState()        : Set the marks of items in the list to 1 or 0
 | 
						|
 *  GetFirstEntry()       : A list iterator function, starts the iteration
 | 
						|
 *  SetMarks()            : Set some of the marks in the list
 | 
						|
 *  ClearMarks(           : Clear some of the marks in the list
 | 
						|
 *  DeleteUnmarked()      : Delete list entries that aren't marked
 | 
						|
 *  ToggleMarks()         : Toggle every mark in the list
 | 
						|
 *  UnmarkDuplicates()    : Use this to avoid processing duplicates
 | 
						|
 *  AddWildCardFiles()    : Add a batch of files to the entry list
 | 
						|
 *  ClearError()          : Reset the mStatus member
 | 
						|
 *  MakeEntriesFromListBox: Add a batch of files to the entry list
 | 
						|
 *  FillListBox()         : Fill a list box up with a list
 | 
						|
 *  SetMarksFromListBox() : Use list feedback to set marks
 | 
						|
 *
 | 
						|
 * REVISION HISTORY
 | 
						|
 *
 | 
						|
 *  May 26, 1994  1.0A  : First release
 | 
						|
 *
 | 
						|
 *  February 14, 1996  2.0: New release
 | 
						|
 */
 | 
						|
class AL_CLASS_TYPE ALEntryList {  /* Tag public class */
 | 
						|
/*
 | 
						|
 * Constructors, destructors, friends
 | 
						|
 */
 | 
						|
    friend class AL_CLASS_TYPE ALEntry;
 | 
						|
 | 
						|
    public :
 | 
						|
        AL_PROTO ALEntryList( ALMonitor AL_DLL_FAR * = 0,
 | 
						|
                              ALToolKit toolkit = FullTools() );
 | 
						|
        AL_PROTO ~ALEntryList();
 | 
						|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
 | 
						|
        void AL_DLL_FAR * AL_PROTO operator new( size_t size );
 | 
						|
#endif
 | 
						|
/*
 | 
						|
 * The copy constructor and assignment operator are not supported.  I
 | 
						|
 * declare them here because I don't want the compiler to generate
 | 
						|
 * default versions for me.
 | 
						|
 */
 | 
						|
    protected :
 | 
						|
        AL_PROTO operator=( ALEntryList AL_DLL_FAR & );
 | 
						|
/*
 | 
						|
 * Warning!  ALEntryList is one of the few objects in archivelib that
 | 
						|
 * has a copy constructor.  I need this in a few of the archiving
 | 
						|
 * routines, because I have to make a new list that will hold all of
 | 
						|
 * the current entries in an archive.
 | 
						|
 */
 | 
						|
 | 
						|
    public :
 | 
						|
        AL_PROTO ALEntryList( ALEntryList AL_DLL_FAR & );
 | 
						|
/*
 | 
						|
 * Member Functions
 | 
						|
 */
 | 
						|
    protected :
 | 
						|
        int AL_PROTO SetMarkState( const char AL_DLL_FAR *name, short int state );
 | 
						|
 | 
						|
    public :
 | 
						|
        ALEntry AL_DLL_FAR * AL_PROTO GetFirstEntry();
 | 
						|
        int AL_PROTO SetMarks( const char AL_DLL_FAR *pattern = 0 );
 | 
						|
        int AL_PROTO ClearMarks( const char AL_DLL_FAR *pattern = 0 );
 | 
						|
        int AL_PROTO DeleteUnmarked();
 | 
						|
        int AL_PROTO ToggleMarks();
 | 
						|
        void AL_PROTO UnmarkDuplicates( ALEntryList AL_DLL_FAR &list,
 | 
						|
                                        const char AL_DLL_FAR *error_message = 0 );
 | 
						|
        int AL_PROTO AddWildCardFiles( const char AL_DLL_FAR *pattern = "*.*",
 | 
						|
                                       int traverse_flag = 0 );
 | 
						|
        void AL_PROTO ClearError();
 | 
						|
/*
 | 
						|
 * A windows utility function
 | 
						|
 */
 | 
						|
#if defined( AL_WINDOWS ) || defined( AL_OS2 )
 | 
						|
        int AL_PROTO MakeEntriesFromListBox( HWND hDlg, int list_box_id = -1 );
 | 
						|
        int AL_PROTO FillListBox( HWND hDlg, int list_box_id = -1 );
 | 
						|
        int AL_PROTO SetMarksFromListBox( HWND hDlg, int list_box_id = -1 );
 | 
						|
#endif
 | 
						|
    public :
 | 
						|
/*
 | 
						|
 * Data members
 | 
						|
 */
 | 
						|
    protected :
 | 
						|
        ALEntry *mpListHead; /* The head is never used */
 | 
						|
 | 
						|
    public :
 | 
						|
        ALMonitor AL_DLL_FAR &mrMonitor;
 | 
						|
        ALToolKit mToolKit;
 | 
						|
        ALStatus mStatus;
 | 
						|
        AL_CLASS_TAG( _ALEntryListTag );
 | 
						|
};
 | 
						|
 | 
						|
#include "arclist.inl"
 | 
						|
 | 
						|
#else /* #if defined( __cplusplus ) */
 | 
						|
 | 
						|
AL_LINKAGE hALEntryList AL_FUNCTION
 | 
						|
newALEntryList( hALMonitor monitor, hALToolKit toolkit );
 | 
						|
AL_LINKAGE int AL_FUNCTION
 | 
						|
ALEntryListAddWildCardFiles( hALEntryList this_object,
 | 
						|
                             char AL_DLL_FAR *pattern,
 | 
						|
                             int traverse );
 | 
						|
AL_LINKAGE void AL_FUNCTION ALEntryListClearError( hALEntryList this_object );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALEntryListSetMarks( hALEntryList this_object,
 | 
						|
                                                char AL_DLL_FAR *wild_name );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALEntryListClearMarks( hALEntryList this_object,
 | 
						|
                                                  char AL_DLL_FAR *wild_name );
 | 
						|
AL_LINKAGE void AL_FUNCTION deleteALEntryList( hALEntryList this_object );
 | 
						|
AL_LINKAGE hALEntry AL_FUNCTION ALEntryListGetFirstEntry( hALEntryList this_object );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALEntryListDeleteUnmarked( hALEntryList this_object );
 | 
						|
AL_LINKAGE int AL_FUNCTION ALEntryListToggleMarks( hALEntryList this_object );
 | 
						|
AL_LINKAGE void AL_FUNCTION
 | 
						|
ALEntryListUnmarkDuplicates( hALEntryList this_object,
 | 
						|
                             hALEntryList list,
 | 
						|
                             char AL_DLL_FAR *error_message );
 | 
						|
AL_LINKAGE int AL_FUNCTION
 | 
						|
ALEntryListGetStatusCode( hALEntryList this_object );
 | 
						|
AL_LINKAGE char AL_DLL_FAR * AL_FUNCTION
 | 
						|
ALEntryListGetStatusString( hALEntryList this_object );
 | 
						|
AL_LINKAGE char AL_DLL_FAR * AL_FUNCTION
 | 
						|
ALEntryListGetStatusDetail( hALEntryList this_object );
 | 
						|
 | 
						|
#if defined( AL_OS2 )  || defined( AL_WINDOWS )
 | 
						|
 | 
						|
AL_LINKAGE int AL_FUNCTION
 | 
						|
ALEntryListSetMarksFromListBox( hALEntryList this_object, HWND hDlg, int list_box_id );
 | 
						|
AL_LINKAGE int AL_FUNCTION
 | 
						|
ALEntryListFillListBox( hALEntryList this_object,
 | 
						|
                        HWND hDlg,
 | 
						|
                        int list_box_id );
 | 
						|
AL_LINKAGE int AL_FUNCTION
 | 
						|
ALEntryListMakeEntriesFromListBox( hALEntryList this_object,
 | 
						|
                                   HWND hDlg,
 | 
						|
                                   int list_box_id );
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* #if defined( __cplusplus ) */
 | 
						|
 | 
						|
#endif /* #ifdef _ARCLIST_H         */
 | 
						|
 |