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