campo-sirio/arch/cxl_garc.cpp

320 lines
11 KiB
C++
Raw Normal View History

//
// 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 );
}