185 lines
5.2 KiB
C++
Executable File
185 lines
5.2 KiB
C++
Executable File
//
|
|
// CXL_UTIL.CPP
|
|
//
|
|
// Source file for ArchiveLib 1.0
|
|
//
|
|
// Copyright (c) Greenleaf Software, Inc. 1994
|
|
// All Rights Reserved
|
|
//
|
|
// CONTENTS
|
|
//
|
|
// newALExpander()
|
|
// ALExpanderGetNextFile()
|
|
// ALExpanderGetNextFileVB()
|
|
// deleteALExpander()
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This file contains the C and VB interface functions for using
|
|
// the ALWildCardExpander class. This consists of only a
|
|
// constructor, destructor, and a Get Next File function.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 22, 1994 1.0A : First release
|
|
//
|
|
//
|
|
|
|
#include "arclib.h"
|
|
#pragma hdrstop
|
|
|
|
#include "al.h"
|
|
#include "alcxl.h"
|
|
|
|
//
|
|
// extern "C" hALExpander newALExpander( char *wild_spec,
|
|
// int traverse_flag,
|
|
// ALCase name_case )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// wild_spec : A sequence of wild card file specifications separated
|
|
// by spaces or semicolons.
|
|
//
|
|
// traverse_flag : set this guy if you want the wild card expansion
|
|
// to traverse all subdirectories.
|
|
//
|
|
// name_case : How the names will be returned, AL_UPPER, AL_MIXED,
|
|
// or AL_LOWER.
|
|
//
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Returns a handle for (pointer to) a newly constructed
|
|
// ALWildCardExpander object.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This ctor is used to create a new ALWildCardExpander object from
|
|
// C or VB. It operates identically to the wild card expander
|
|
// constructors defined in WILDCARD.CPP.
|
|
//
|
|
// You don't get to see much of the wild card expander code in this
|
|
// module, since this is just a translation layer. Look at WILDCARD.CPP
|
|
// for lots of neat stuff.
|
|
//
|
|
// This function passes the arguments it receives to the constructor
|
|
// with no changes. It then casts the return value to the appropriate
|
|
// handle type, and returns it to the calling procedure.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" hALExpander AL_FUNCTION newALExpander( char *wild_spec,
|
|
int recurse_flag,
|
|
ALCase name_case )
|
|
{
|
|
ALWildCardExpander *expander;
|
|
|
|
expander = new ALWildCardExpander( wild_spec, recurse_flag, name_case );
|
|
return (hALExpander) expander;
|
|
}
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALExpanderGetNextFile( hALExpander this_object )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALExpanderGetNextFileVB( hALExpander this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALWildCardExpander
|
|
// object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string containing the next expanded wild card generated by
|
|
// the wild card engine. Note that under C, you will get a pointer
|
|
// to a string that is residing inside the ALWildCardExpander
|
|
// object, which you are free to copy or duplicate. The VB translation
|
|
// function actually creates a new string using the ALCreateVBString
|
|
// function.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This function provides a C or VB translation layer that allows you to
|
|
// access the ALWildCardExpander::GetNextFile() function. The function
|
|
// operators by first checking the single handle argument for correct
|
|
// type (in debug mode). It then casts the handle to an object pointer,
|
|
// and uses that to invoke the member function. Under C, the return from
|
|
// the member function is passed directly back to the calling routine.
|
|
// Under VB, the return is first converted to a Visual Basic string, then
|
|
// returned.
|
|
//
|
|
// To see the details of ALWildCardExpander::GetNextFile(), look at
|
|
// WILDCARD.CPP.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
//
|
|
// The C translation layer.
|
|
//
|
|
extern "C" char * AL_FUNCTION
|
|
ALExpanderGetNextFile( hALExpander this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALWildCardExpander, "ALExpanderGetNextFile" );
|
|
return ( (ALWildCardExpander *) this_object )->GetNextFile();
|
|
}
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
//
|
|
// VB translation layer.
|
|
//
|
|
extern "C" long AL_FUNCTION
|
|
ALExpanderGetNextFileVB( hALExpander this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALWildCardExpander, "ALExpanderGetNextFileVB" );
|
|
char _far *ret_guy = ( (ALWildCardExpander *) this_object )->GetNextFile();
|
|
if ( ret_guy == 0 )
|
|
ret_guy = "";
|
|
return ALCreateVBString( ret_guy, (unsigned short int) _fstrlen( ret_guy ) );
|
|
}
|
|
#endif
|
|
|
|
//
|
|
// extern "C" void deleteALExpander( hALExpander this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALWildCardExpander
|
|
// object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing, this is a destructor.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This function provides a C or VB translation layer that allows you to
|
|
// access the ALWildCardExpander destructor. The function works
|
|
// by first checking the single handle argument for correct
|
|
// type (in debug mode). It then casts the handle to an object pointer,
|
|
// and uses that to invoke the destructor.
|
|
//
|
|
// To see the details of the ALWildCardExpander destructor, look at
|
|
// WILDCARD.CPP.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION deleteALExpander( hALExpander this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALWildCardExpander, "deleteALExpander" );
|
|
delete (ALWildCardExpander *) this_object;
|
|
}
|
|
|