320 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			320 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| //
 | |
| // CXL_GARC.CPP
 | |
| //
 | |
| //  Source file for ArchiveLib 1.0
 | |
| //
 | |
| //  Copyright (c) Greenleaf Software, Inc. 1994
 | |
| //  All Rights Reserved
 | |
| //
 | |
| // CONTENTS
 | |
| //
 | |
| //  newALArchive()
 | |
| //  newALArchiveFromStorage()
 | |
| //  ALArchiveAddFilesToList()        /* OBSOLETE!!! */
 | |
| //  ALEntryListAddFromDialog()
 | |
| //  ALEntryListAddFromWindow()
 | |
| //  ALEntryListAddWildCardFiles()    /* Replacement for the obsolete fn */
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This file contains the source code for the C and VB translation
 | |
| //  layer modules to support class ALArchive.  The source file
 | |
| //  has "GARC" because once upon a time class ALArchive was called
 | |
| //  ALGreenleafArchive.
 | |
| //
 | |
| //  There isn't too much to learn by looking at the translation layers, so
 | |
| //  if you really want to see some exciting C++ code, check out ARCHIVE.CPP.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //  May 24, 1994  1.0A  : First release
 | |
| //
 | |
| //
 | |
| 
 | |
| #include "arclib.h"
 | |
| #pragma hdrstop
 | |
| 
 | |
| #include "al.h"
 | |
| #include "alcxl.h"
 | |
| 
 | |
| //
 | |
| // extern "C" hALArchive newALArchive( char *name )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  name     :  This constructor automatically creates an ALFile object
 | |
| //              for the archive.  This is the name of the ALFile object.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  A handle for (pointer to) a newly created ALArchive, or 0 if
 | |
| //  the constructor failed for some reason.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This is the C/VB translation function for the C++ constructor
 | |
| //  ALArchive::ALArchive(char *).  See ARCHIVE.CPP for details on what 
 | |
| //  happens in the constructor.
 | |
| //
 | |
| //  Unlike most translation functions, this constructor doesn't have to check
 | |
| //  or cast any arguments before calling its C++ code.  It does however have
 | |
| //  to cast the result to the correct type before giving it back to the
 | |
| //  C or VB calling module.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| extern "C" hALArchive AL_FUNCTION newALArchive( char *name )
 | |
| {
 | |
|     ALArchive *archive;
 | |
| 
 | |
|     archive = new ALArchive( name );
 | |
|     return (hALArchive) archive;
 | |
| }
 | |
| 
 | |
| //
 | |
| // extern "C" hALArchive newALArchiveFromStorage( hALStorage storage )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  storage  :  A handle for (pointer to) a preconstructed storage object.
 | |
| //              This storage object will be where the archive keeps all of
 | |
| //              its stuff.  Note that you have to create and destroy this
 | |
| //              storage object yourself, unlike the previous constructor.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  A handle for (pointer to) a newly created ALArchive, or 0 if
 | |
| //  the constructor failed for some reason.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This is the C/VB translation function for the C++ constructor
 | |
| //  ALArchive::ALArchive(ALStorage&).  See ARCHIVE.CPP for details on what 
 | |
| //  happens in the constructor.
 | |
| //
 | |
| //  Like most translation functions, this one checks the type off its single
 | |
| //  argument (in debug mode), before casting and calling the C++ function.
 | |
| //  It takes the result from the C++ constructor and casts it back to
 | |
| //  correct type before giving it back to the C or VB calling module.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| extern "C" hALArchive AL_FUNCTION newALArchiveFromStorage( hALStorage storage )
 | |
| {
 | |
|     AL_ASSERT( ( (ALStorage *) storage)->GoodTag(),
 | |
|                "storage argument is not a valid ALStorageObject" );
 | |
|     ALArchive *archive;
 | |
|     archive = new ALArchive( *(ALStorage *) storage );
 | |
|     return (hALArchive) archive;
 | |
| }
 | |
| 
 | |
| //  OBSOLETE FUNCTION
 | |
| //
 | |
| // extern "C" int ALArchiveAddFilesToList( hALArchive this_object,
 | |
| //                                         hALEntryList list,
 | |
| //                                         char *pattern,
 | |
| //                                         int traverse )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  this_object  : A handle for (pointer to) a valid ALArchive object.
 | |
| //                 It isn't used since we are calling a static function.
 | |
| //
 | |
| //  list         : A handle for (pointer to) an ALEntryList.  This list
 | |
| //                 is going to get a bunch of new entries, like it or not.
 | |
| //
 | |
| //  pattern      : A list of wild-card file specs, separated by spaces,
 | |
| //                 commas, or semicolons.
 | |
| //
 | |
| //  traverse     : A flag to indicate whether the search engine should
 | |
| //                 traverse subdirectories when expanding file specs.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  An integer indicating how many entries were added to the list.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This function has been replaced by the more appropriately named
 | |
| //  ALEntryListAddWildCardFiles().
 | |
| //
 | |
| //  This function is the C/VB translation function to access the C++
 | |
| //  member function ALArchive::AddWildCardFiles().  For details on how
 | |
| //  the AddWildCardFiles() function actually works, please check out
 | |
| //  ARCHIVE.CPP, cuz that is where the real code is.
 | |
| //
 | |
| //  Like all the other translation routines, this guy just has to
 | |
| //  check the arguments to see if they are the correct type (in debug
 | |
| //  mode only), then cast and call the C++ member function.  The
 | |
| //  return value from the function is shot directly back to the C or
 | |
| //  VB calling routine.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| extern "C" int AL_FUNCTION ALArchiveAddFilesToList( hALArchive, hALEntryList list, char *pattern, int traverse )
 | |
| {
 | |
|     AL_ASSERT_OBJECT( list, ALEntryList, "ALArchiveAddFilesToList" );
 | |
|     return ALArchive::AddWildCardFiles( *( (ALEntryList *) list), pattern, traverse );
 | |
| }
 | |
| 
 | |
| 
 | |
| //
 | |
| // extern "C" int ALEntryListAddFromDialog( hALEntryList this_object,
 | |
| //                                          HWND hDlg,
 | |
| //                                          int id )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  this_object    : Handle for (pointer to) an ALEntryList object.
 | |
| //
 | |
| //  hDlg           : Windows handle for a dialog box containing the
 | |
| //                   target list box.
 | |
| //
 | |
| //  id             : The id of the list box found in the dialog box.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  The number of entries added to the list box.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This is C translation function that provides access to the C++
 | |
| //  member function ALArchive::MakeEntriesFromListBox().  Like most of the 
 | |
| //  translation functions, you don't get to see much here.  For detailed 
 | |
| //  information on what happens in the constructor, check ARCHIVE.CPP.
 | |
| //
 | |
| //  You might think that this function looks like a member of ALEntryList,
 | |
| //  not ALArchive.  Yes, it looks like it, but in fact it is a static
 | |
| //  member of ALArchive.
 | |
| //
 | |
| //  This routine first performs type checking on the passed object
 | |
| //  handle (in debug mode), then calls the member function.  It
 | |
| //  returns the integer unchanged to the calling procedure.
 | |
| //
 | |
| //  You might think that this function looks like a member of ALEntryList,
 | |
| //  not ALArchive.  Yes, it looks like it, but in fact it is a static
 | |
| //  member of ALArchive.  The fact that it is static explains why there
 | |
| //  is no ALArchive object in the argument list.
 | |
| //
 | |
| //  You can't use this dude with VB because VB doesn't use Dialog boxes,
 | |
| //  at least I don't think so.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| #if defined( AL_WINDOWS_GUI )
 | |
| extern "C" int AL_FUNCTION ALEntryListAddFromDialog( hALEntryList this_object,
 | |
|                                                      HWND hDlg,
 | |
|                                                      int id )
 | |
| {
 | |
|     AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListAddFromDialog" );
 | |
|     return ALArchive::MakeEntriesFromListBox( *(ALEntryList *) this_object, hDlg, id );
 | |
| }
 | |
| #endif
 | |
| //
 | |
| // extern "C" int ALEntryListAddFromWindow( hALEntryList this_object,
 | |
| //                                          HWND hwnd )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  this_object    : Handle for (pointer to) an ALEntryList object.
 | |
| //
 | |
| //  hwnd           : Windows handle for a the list box control.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  The number of entries added to the list box.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This is C translation function that provides access to the C++
 | |
| //  member function ALArchive::MakeEntriesFromListBox().  Like most of the 
 | |
| //  translation functions, you don't get to see much here.  For detailed 
 | |
| //  information on what happens in the constructor, check ARCHIVE.CPP.
 | |
| //
 | |
| //  You might think that this function looks like a member of ALEntryList,
 | |
| //  not ALArchive.  Yes, it looks like it, but in fact it is a static
 | |
| //  member of ALArchive.  The fact that it is static explains why there
 | |
| //  is no ALArchive argument in the picture.
 | |
| //
 | |
| //  This routine first performs type checking on the passed object
 | |
| //  handle (in debug mode), then calls the member function.  It
 | |
| //  returns the integer unchanged to the calling procedure.
 | |
| //
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| #if defined( AL_WINDOWS_GUI )
 | |
| extern "C" int AL_FUNCTION ALEntryListAddFromWindow( hALEntryList this_object,
 | |
|                                                       HWND hwnd )
 | |
| {
 | |
|     AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListAddFromWindow" );
 | |
|     return ALArchive::MakeEntriesFromListBox( *(ALEntryList *) this_object, hwnd );
 | |
| }
 | |
| #endif
 | |
| 
 | |
| //
 | |
| // extern "C" int ALEntryListAddWildCardFiles( hALEntryList this_object, 
 | |
| //                                             char *pattern, 
 | |
| //                                             int traverse )
 | |
| //
 | |
| // ARGUMENTS:
 | |
| //
 | |
| //  this_object  : A handle for (pointer to) an ALEntryList.  This list
 | |
| //                 is going to get a bunch of new entries, like it or not.
 | |
| //
 | |
| //  pattern      : A list of wild-card file specs, separated by spaces,
 | |
| //                 commas, or semicolons.
 | |
| //
 | |
| //  traverse     : A flag to indicate whether the search engine should
 | |
| //                 traverse subdirectories when expanding file specs.
 | |
| //
 | |
| // RETURNS
 | |
| //
 | |
| //  An integer indicating how many entries were added to the list.
 | |
| //
 | |
| // DESCRIPTION
 | |
| //
 | |
| //  This function is the C/VB translation function to access the C++
 | |
| //  member function ALArchive::AddWildCardFiles().  For details on how
 | |
| //  the AddWildCardFiles() function actually works, please check out
 | |
| //  ARCHIVE.CPP, cuz that is where the real code is.  You might notice
 | |
| //  that there is no ALArchive object passed to this function.  That
 | |
| //  is because this function is a static member function of ALArchive,
 | |
| //  we just need its ability to create ALFile objects.
 | |
| //
 | |
| //  Like all the other translation routines, this guy just has to
 | |
| //  check the arguments to see if they are the correct type (in debug
 | |
| //  mode only), then cast and call the C++ member function.  The
 | |
| //  return value from the function is shot directly back to the C or
 | |
| //  VB calling routine.
 | |
| //
 | |
| // REVISION HISTORY
 | |
| //
 | |
| //   May 24, 1994  1.0A  : First release
 | |
| //
 | |
| 
 | |
| extern "C" int AL_FUNCTION 
 | |
| ALEntryListAddWildCardFiles( hALEntryList this_object, 
 | |
|                              char AL_DLL_FAR *pattern, 
 | |
|                              int traverse )
 | |
| {
 | |
|     AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListAddWildCardFiles" );
 | |
|     return ALArchive::AddWildCardFiles( *( (ALEntryList *) this_object), pattern, traverse );
 | |
| }
 | |
| 
 |