// // CXL_LIST.CPP // // Source file for ArchiveLib 1.0 // // Copyright (c) Greenleaf Software, Inc. 1994 // All Rights Reserved // // CONTENTS // // newALEntryList() // ALEntryListGetFirstEntry() // ALEntryListUnmarkDuplicates() // ALEntryListSetMarksFromDialog() // ALEntryListSetMarksFromWindow() // ALEntryListFillListBoxWindow() // ALEntryListFillListBoxDialog() // deleteALEntryList() // ALEntryListSetMarks() // ALEntryListClearMarks() // ALEntryListDeleteUnmarked() // ALEntryListToggleMarks() // ALEntryListGetStatusCode() // ALEntryListGetStatusString() // ALEntryListGetStatusDetail() // ALEntryListGetStatusStringVB() // ALEntryListGetStatusDetailVB() // // DESCRIPTION // // This file contains the translation layer for C and VB to the // ALEntryList class. The translation routines are all real short // functions that mostly cast things. If you want to see what is // going on in ALEntryList, take a look at ARCENTRY.CPP for the // details. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // // #include "arclib.h" #pragma hdrstop #include "al.h" #include "alcxl.h" // // extern "C" hALEntryList newALEntryList( hALMonitor monitor ) // // ARGUMENTS: // // monitor : A handle for (pointer to) an ALMonitor object. // The monitor will stay attached to the list, and will // be used to provide feedback during all archiving operations. // // RETURNS // // A handle for (pointer to) an ALEntryList object. It is possible to get // back a 0 if the constructor fails for lack of memory. Not likely // though. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // constructor ALEntryList::ALEntryList(). Like most of the translation // functions, you don't get to see much here. For detailed information // on what happens in the constructor, check ARCENTRY.CPP. // // This routine first performs type checking on all the passed object // handles (in debug mode), then calls the constructor. The returned // object pointer is then cast to a C/VB compatible type and returned // to the calling routine. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" hALEntryList AL_FUNCTION newALEntryList( hALMonitor monitor ) { if ( monitor != 0 ) AL_ASSERT( ((ALMonitor *) monitor)->GoodTag(), "monitor argument is not a valid ALMonitor" ); ALEntryList *list = new ALEntryList( (ALMonitor *) monitor ); return (hALEntryList) list; } // // extern "C" hALEntry ALEntryListGetFirstEntry( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // A handle for (pointer to) an ALEntry object. If there are no // entries in the list you will get back a 0. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::GetFirstEntry(). This routine is // the first one called when iterating through an entire list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. The returned // object pointer is then cast to a C/VB compatible type and returned // to the calling routine. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" hALEntry AL_FUNCTION ALEntryListGetFirstEntry( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListGetFirstEntry" ); return (hALEntry) ( ((ALEntryList *) this_object )->GetFirstEntry() ); } // // extern "C" void ALEntryListUnmarkDuplicates( hALEntryList this_object, // hALEntryList list, // char *error_message ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // list : Handle for (pointer to) another ALEntryList object. // (can be the same one, no problem). // // error_message : A character string giving an error message that // will be attached to each entry that turns out // to be a duplicate and gets unmarked. // // RETURNS // // Nothing. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::UnmarkDuplicates(). This routine is // used to remove the marks from any ALEntry objects in the list that // are duplicated in another list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handles (in debug mode), then calls the member function. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" void AL_FUNCTION ALEntryListUnmarkDuplicates( hALEntryList this_object, hALEntryList list, char *error_message ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListUnmarkDuplicates" ); AL_ASSERT_OBJECT( list, ALEntryList, "ALEntryListUnmarkDuplicates" ); ( (ALEntryList *) this_object )->UnmarkDuplicates( * (ALEntryList *) list, error_message ); } // // extern "C" int ALEntryListSetMarksFromDialog( 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 a list box // control. // // id : The id of the list box in the dialog. The routine // will set marks in the ALEntryList based on the // names are set in the list box. // // RETURNS // // The number of entries marked in the list box. // // DESCRIPTION // // This is C translation function that provides access to the C++ // member function ALEntryList::SetMarksFromListBox(). This function is // used to set marks in an ALEntryList based on selections made // in a list box. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // Note that since this routine looks to a dialog for its input, // it isn't useful to VB. // // 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 ALEntryListSetMarksFromDialog( hALEntryList this_object, HWND hDlg, int id ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListSetMarksFromDialog" ); return ( (ALEntryList *) this_object)->SetMarksFromListBox( hDlg, id ); } #endif // // extern "C" int ALEntryListSetMarksFromWindow( hALEntryList this_object, // HWND hWnd ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // hWnd : Windows handle for a list box that contains names // that are marked. // RETURNS // // The number of entries marked in the list box. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::SetMarksFromListBox(). This function is // called to transfer the marks a user makes in a list box into // the ALEntryList. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 ALEntryListSetMarksFromWindow( hALEntryList this_object, HWND hWnd ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListSetMarksFromWindow" ); return ( (ALEntryList *) this_object )->SetMarksFromListBox( hWnd ); } #endif // // extern "C" int ALEntryListFillListBoxWindow( hALEntryList this_object, // HWND hWnd ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // hWnd : Windows handle for a list box that is going to get // filled up. // RETURNS // // The number of entries placed in the list box. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::SetMarksFromListBox(). This function // is used to transfer the selections a user made in a list box into // marks in the list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 ALEntryListFillListBoxWindow( hALEntryList this_object, HWND hWnd ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListFillListBoxWindow" ); return ( (ALEntryList *) this_object )->FillListBox( hWnd ); } #endif // // extern "C" int ALEntryListFillListBoxDialog( hALEntryList this_object, // HWND hDlg, // int list_box_id ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // HDlg : Windows handle for a dialog box containing a list box // control. // // id : The id of the list box in the dialog. The routine // will fill up this list box with the names of all // the marked files in this_object. // // RETURNS // // The number of entries added to the list box. // // DESCRIPTION // // This is C translation function that provides access to the C++ // member function ALEntryList::FillListBox(). This routine is called // to fill a list box with the names of storage objects in the list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // Note that since this routine wants to use a list box that is // embedded in a dialog box, it isn't much use to VB. // // 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 ALEntryListFillListBoxDialog( hALEntryList this_object, HWND hDlg, int list_box_id ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListFillListBoxDialog" ); return ( (ALEntryList *) this_object )->FillListBox( hDlg, list_box_id ); } #endif // // extern "C" void deleteALEntryList( hALEntryList this_object ) // // ARGUMENTS: // // this_object : A handle for (pointer to) an ALEntryList object. // // RETURNS // // None, a destructor. // // DESCRIPTION // // This is the C/VB translation routine for the ALEntryList destructor. // You don't see much exciting code in this routine, so if you want to // see exactly what is going on in the destructor, take a look at // ARCENTRY.CPP. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" void AL_FUNCTION deleteALEntryList( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "deleteALEntryList" ); delete (ALEntryList *) this_object; } // // extern "C" int ALEntryListSetMarks( hALEntryList this_object, // char *pattern ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // pattern : A regular expression (wildcard) that will be used as // a pattern to set marks in the list. // // RETURNS // // The number of entries marked in the list. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::SetMarks(). This function is used // to set marks for ALEntry objects in the list that match the wild // card pattern. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 // extern "C" int AL_FUNCTION ALEntryListSetMarks( hALEntryList this_object, char AL_DLL_FAR *pattern ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListSetMarks" ); return ( (ALEntryList *) this_object )->SetMarks( pattern ); } // // extern "C" int ALEntryListClearMarks( hALEntryList this_object, // char *pattern ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // pattern : A regular expression (wildcard) that will be used as // a pattern to clear marks in the list. // // RETURNS // // The number of entries cleared in the list. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::ClearMarks(). It is used to clear // the marks of entries in the list that match the wildcard pattern. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 // extern "C" int AL_FUNCTION ALEntryListClearMarks( hALEntryList this_object, char AL_DLL_FAR *pattern ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListClearMarks" ); return ( (ALEntryList *) this_object )->ClearMarks( pattern ); } // // extern "C" int ALEntryListDeleteUnmarked( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // // RETURNS // // The number of entries deleted from the list. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::DeleteUnmarked(). This function is used // to delete ALEntry objects from the list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 // extern "C" int AL_FUNCTION ALEntryListDeleteUnmarked( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListDeleteUnmarked" ); return ( (ALEntryList *) this_object )->DeleteUnmarked(); } // // extern "C" int ALEntryListToggleMarks( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The number of entries whose marks were toggled. // // DESCRIPTION // // This is C/VB translation function that provides access to the C++ // member function ALEntryList::ToggleMarks(). This function is used // toggle the marks of *every* entry in the list. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // 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 // extern "C" int AL_FUNCTION ALEntryListToggleMarks( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListToggleMarks" ); return ( (ALEntryList *) this_object )->ToggleMarks(); } // // extern "C" int ALEntryListGetStatusCode( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The current status integer for the ALEntryList object. // // DESCRIPTION // // This is a C/VB translation function that provides access to the C++ // member function ALStatus::GetStatusCode(), for the mStatus data // member for the ALEntryList object. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. It // returns the status integer unchanged to the calling procedure. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" int AL_FUNCTION ALEntryListGetStatusCode( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListGetStatusCode" ); return ( (ALEntryList *) this_object )->mStatus.GetStatusCode(); } // // extern "C" char * ALEntryListGetStatusString( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The current status string translation for the ALEntryList object. // // Note that this return type is just not very good for VB people. // They should use the VB specific function to get a real VB string // back. // // DESCRIPTION // // This is C translation function that provides access to the C++ // member function ALStatus::GetStatusString(), for the mStatus data // member for the ALEntryList object. This is the short string // translation, not the status detail. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. It // then casts and returns the status string. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" char AL_DLL_FAR * AL_FUNCTION ALEntryListGetStatusString( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListGetStatusString" ); const char *status = ( (ALEntryList *) this_object)->mStatus.GetStatusString(); if ( status == 0 ) status = ""; return (char AL_DLL_FAR *) status; } // // extern "C" char * ALEntryListGetStatusDetail( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The current status string detail for the ALEntryList object. // // Note that this return type is just not very good for VB people. // They should use the VB specific function to get a real VB string // back. // // DESCRIPTION // // This is C translation function that provides access to the C++ // member function ALStatus::GetStatusDetail(), for the mStatus data // member for the ALEntryList object. This is the detailed message, // not to be confused with the short translation. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. It // then casts and returns the status string. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // extern "C" char AL_DLL_FAR * AL_FUNCTION ALEntryListGetStatusDetail( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListGetStatusString" ); const char *status = ( (ALEntryList *) this_object )->mStatus.GetStatusDetail(); if ( status == 0 ) status = ""; return (char AL_DLL_FAR *) status; } // // extern "C" long ALEntryListGetStatusStringVB( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The current status string translation for the ALEntryList object. // // Note that this function performs a translation of the string type to // a VB string. It won't do you much good to call this from a C program. // // DESCRIPTION // // This is VB translation function that provides access to the C++ // member function ALStatus::GetStatusString(), for the mStatus data // member for the ALEntryList object. This is the short string // translation, not the status detail. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. It // then converts and returns the status string. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // #if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL ) extern "C" long AL_FUNCTION ALEntryListGetStatusStringVB( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryLisGetStatusStringVB" ); const char _far *status = ( (ALEntryList *) this_object )->mStatus.GetStatusString(); if ( status == 0 ) status = ""; return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) ); } #endif // // extern "C" long ALEntryListGetStatusDetailVB( hALEntryList this_object ) // // ARGUMENTS: // // this_object : Handle for (pointer to) an ALEntryList object. // // RETURNS // // The current status detail string for the ALEntryList object. // // Note that this function performs a translation of the string type to // a VB string. It won't do you much good to call this from a C program. // // DESCRIPTION // // This is VB translation function that provides access to the C++ // member function ALStatus::GetStatusDetail(), for the mStatus data // member for the ALEntryList object. This is the detailed status // string, not the short status translation. // // Like most of the translation functions, you don't get to see much here. // For detailed information on what happens in the member function, check // ARCENTRY.CPP. // // This routine first performs type checking on the passed object // handle (in debug mode), then calls the member function. It // then converts and returns the status string. // // REVISION HISTORY // // May 24, 1994 1.0A : First release // #if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL ) extern "C" long AL_FUNCTION ALEntryListGetStatusDetailVB( hALEntryList this_object ) { AL_ASSERT_OBJECT( this_object, ALEntryList, "ALEntryListGetStatusDetailVB" ); const char _far *status = ( (ALEntryList *) this_object )->mStatus.GetStatusDetail(); if ( status == 0 ) status = ""; return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) ); } #endif