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