campo-sirio/arch/cxl_entr.cpp

705 lines
21 KiB
C++
Executable File

//
// CXL_ENTR.CPP
//
// Source file for ArchiveLib 1.0
//
// Copyright (c) Greenleaf Software, Inc. 1994
// All Rights Reserved
//
// CONTENTS
//
// newALEntry()
// deleteALEntry()
// ALEntryDuplicate()
// ALEntryGetNextEntry()
// ALEntrySetMark()
// ALEntryClearMark()
// ALEntrySetMarkState()
// ALEntryGetStorage()
// ALEntrySetStorage()
// ALEntrySetComment()
// ALEntryGetCompressedSize()
// ALEntryGetCrc32()
// ALEntryGetMark()
// ALEntryCompressionRatio()
// ALEntryGetComment()
// ALEntryGetCommentVB()
// ALEntryGetEngine()
// ALEntrySetEngine()
//
// DESCRIPTION
//
// This file contains the C/VB translation layer for the ALEntry class.
// These functions all provide mapping to equivalent member functions
// or data members in class ALEntry. Since there isn't much code
// involved in the translation, it is recommended that you look in
// ARCENTRY.CPP for details on how the ALEntry class really works.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
//
#include "arclib.h"
#pragma hdrstop
#include "al.h"
#include "alcxl.h"
//
// extern "C" hALEntry newALEntry( hALEntryList list,
// hALStorage storage,
// hALEngine engine )
//
// ARGUMENTS:
//
// list : A handle for (pointer to) the ALEntryList that is
// going get this ALEntry.
//
// storage : A handle for (pointer to) the storage object that is
// being described in this ALEntry object.
//
// engine : A handle for (pointer to) the compression engine that
// will be/was used to compress/expand the storage object.
//
// RETURNS
//
// A handle for (pointer to) a freshly constructed ALEntry object. In the
// case of a really horrible error, this might be a 0.
//
// DESCRIPTION
//
// This C/VB function provides a translation layer so that those two
// languages can access the C++ constructor ALEntry::ALEntry().
// For details on what exactly happens in the ALEntry ctor, check out
// the source module in ARCENTRY.CPP.
//
// Like most of the translation layer functions, this guy works by simply
// performing type checking on the arguments (in debug mode), and calling
// the function. The result is then cast properly and returned to the
// calling routine.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" hALEntry AL_FUNCTION newALEntry( hALEntryList list,
hALStorage storage,
hALEngine engine )
{
AL_ASSERT_OBJECT( list, ALEntryList, "newALEntry" );
AL_ASSERT_OBJECT( storage, ALStorage, "newALEntry" );
AL_ASSERT_OBJECT( engine, ALCompressionEngine, "newALEntry" );
return (hALEntry) new ALEntry( *( (ALEntryList *) list ),
(ALStorage * ) storage,
(ALCompressionEngine *) engine );
}
//
// extern "C" void deleteALEntry( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) a valid ALEntry object.
//
// RETURNS
//
// Nothing, this is a destructor.
//
// DESCRIPTION
//
// This C/VB function provides a translation layer so that those two
// languages can access the C++ destructor ALEntry::~ALEntry().
// For details on what exactly happens in the ALEntry dtor, check out
// the source module in ARCENTRY.CPP.
//
// Like most of the translation layer functions, this guy works by simply
// performing type checking on the arguments (in debug mode), and calling
// the function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION deleteALEntry( hALEntry entry )
{
AL_ASSERT_OBJECT( entry, ALEntry, "deleteALEntry" );
delete (ALEntry *) entry;
}
//
// extern "C" int ALEntryDuplicate( hALEntry this_object, hALEntryList list )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// list : A handle for (pointer to) an ALEntryList object.
//
// RETURNS
//
// 1 if the entry is duplicated somewhere in the list, 0 if not.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::Duplicate(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return
// from the member function is passed right back to the calling routine.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION
ALEntryDuplicate( hALEntry this_object, hALEntryList list )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryDuplicate" );
AL_ASSERT_OBJECT( list, ALEntryList, "ALEntryDuplicate" );
return ( (ALEntry *) this_object )->Duplicate( * (ALEntryList *) list );
}
//
// extern "C" hALEntry ALEntryGetNextEntry( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A valid handle for (pointer to) an ALEntry if there are more
// objects in the list. If not, 0.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::GetNextEntry(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return
// from the member function is passed right back to the calling routine
// after being cast to the appropriate C/VB type.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" hALEntry AL_FUNCTION ALEntryGetNextEntry( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetNextEntry" );
return (hALEntry) ( ((ALEntry *) this_object )->GetNextEntry() );
}
//
// extern "C" void ALEntrySetMark( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// Nothing.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::SetMark(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION ALEntrySetMark( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntrySetMark" );
((ALEntry *) this_object )->SetMark();
}
//
// extern "C" void ALEntryClearMark( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// Nothing.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::ClearMark(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION ALEntryClearMark( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryClearMark" );
((ALEntry *) this_object )->ClearMark();
}
//
// extern "C" void ALEntrySetMarkState( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// Nothing.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::SetMarkState(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION ALEntrySetMarkState( hALEntry this_object,
short int new_state )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntrySetMarkState" );
((ALEntry *) this_object )->SetMarkState( new_state );
}
//
// extern "C" hALStorage ALEntryGetStorage( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A valid handle for (pointer to) an ALStorage object. It is possible
// to get a return value of 0, since an ALEntry is not required to have
// a valid ALStorage object attached to it.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ data member ALEntry::mpStorageObject. For more information on
// what this data member actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and gets the data member. The data member
// is passed right back to the calling routine after being cast to the
// appropriate C/VB type.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" hALStorage AL_FUNCTION ALEntryGetStorage( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetStorage" );
return (hALStorage) ( (ALEntry *) this_object )->mpStorageObject;
}
//
// extern "C" void ALEntrySetStorage( hALEntry this_object,
// hALStorage storage )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// storage : A handle for (pointer to) an ALStorage object that
// will now be attached to the ALEntry object. Note
// that a value of 0 is acceptable.
//
// RETURNS
//
// Nothing.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ data member ALEntry::mpStorageObject. For more information on
// what this data member actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and accesses the data member.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION ALEntrySetStorage( hALEntry this_object,
hALStorage storage )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntrySetStorage" );
if ( storage != 0 )
AL_ASSERT_OBJECT( storage, ALStorage, "ALEntrySetStorage" );
( (ALEntry *) this_object )->mpStorageObject = (ALStorage *) storage;
}
//
// extern "C" int ALEntrySetComment( hALEntry this_object, char *comment )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// comment : A pointer to a character string that is going to be
// copied into the ALEntry object.
//
// RETURNS
//
// AL_SUCCESS if things went okay, or a code < AL_SUCCESS if not.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ data member ALEntry::mpStorageObject. For more information on
// what this data member actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and accesses the data member.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION
ALEntrySetComment( hALEntry this_object, char *comment )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntrySetComment" );
if ( comment == 0 )
comment = "";
return ( (ALEntry *) this_object )->SetComment( comment );
}
//
// extern "C" long ALEntryGetCompressedSize( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A long value, indicating the compressed size. Note that this information
// will only be available after reading a directory, or performing an
// operation that compresses the file.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member ALEntry::GetCompressedSize. For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" long AL_FUNCTION ALEntryGetCompressedSize( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetCompressedSize" );
return ( (ALEntry *) this_object )->GetCompressedSize();
}
//
// extern "C" long ALEntryGetCrc32( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A long value, indicating the object's CRC. Note that this information
// will only be available after reading a directory, or performing an
// operation that compresses the file.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::GetCrc32(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" long AL_FUNCTION ALEntryGetCrc32( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetCrc32" );
return ( (ALEntry *) this_object )->GetCrc32();
}
//
// extern "C" int ALEntryGetMark( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A 1 or 0, indicating the object's mark state.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::GetMark(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION ALEntryGetMark( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetMark" );
return ( (ALEntry *) this_object )->GetMark();
}
//
// extern "C" int ALEntryCompressionRatio( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A number usually ranging from 0 to 100. Less than 0 indicates
// an error.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ member function ALEntry::CompressionRatio(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION ALEntryCompressionRatio( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryCompressionRatio" );
return ( (ALEntry *) this_object )->CompressionRatio();
}
//
// extern "C" char *ALEntryGetComment( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A pointer to a C character string. The pointer is the value of the
// string pointer embedded in the class object.
//
// DESCRIPTION
//
// This function provides a translation layer for C to access the
// C++ member function ALEntry::GetComment(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// C strings aren't happy in VB, so there is a special function just to
// convert strings to vB format. Don't call this function from
// Visual Basic, there is an easier way!
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" char *AL_FUNCTION ALEntryGetComment( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetComment" );
return (char *) ( (ALEntry *) this_object )->GetComment();
}
//
// extern "C" long ALEntryGetCommentVB( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A Visual Basic character string. The string is a copy of the
// string pointer embedded in the class object.
//
// DESCRIPTION
//
// This function provides a translation layer for VB to access the
// C++ member function ALEntry::GetComment(). For more information on
// what this member function actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and calls the member function. The return data
// from the member function is passed back directly to the calling module.
//
// C strings aren't happy in VB, so this function converts the C
// character pointer to a super-special VB 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 ALEntryGetCommentVB( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetComment" );
char _far *p = (char _far *) ( (ALEntry *) this_object )->GetComment();
return ALCreateVBString( p, (unsigned short int) _fstrlen( p ) );
}
#endif
//
// extern "C" hALEngine ALEntryGetEngine( hALEntry this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// RETURNS
//
// A valid handle for (pointer to) an ALCompressionEngine object. It is
// possible to get a return value of 0, since an ALEntry is not required to
// have a valid ALCompressionEngine object attached to it.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ data member ALEntry::mpCompressionEngine. For more information on
// what this data member actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and gets the data member. The data member
// is passed right back to the calling routine after being cast to the
// appropriate C/VB type.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" hALEngine AL_FUNCTION ALEntryGetEngine( hALEntry this_object )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntryGetEngine" );
return (hALEngine) ( (ALEntry *) this_object )->mpCompressionEngine;
}
//
// extern "C" void ALEntrySetEngine( hALEntry this_object, hALEngine engine )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALEntry object.
//
// engine : A handle for (pointer to) an ALcompressionEngine
// will now be attached to the ALEntry object. Note
// that a value of 0 is acceptable.
//
// RETURNS
//
// Nothing.
//
// DESCRIPTION
//
// This function provides a translation layer for C and VB to access the
// C++ data member ALEntry::mpCompressionEngine. For more information on
// what this data member actually does, see ARCENTRY.CPP.
//
// Like most of the translation functions, this routine checks the
// arguments for correct type (in debug mode), then casts this_object
// to the desired class, and accesses the data member.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION ALEntrySetEngine( hALEntry this_object, hALEngine engine )
{
AL_ASSERT_OBJECT( this_object, ALEntry, "ALEntrySetEngine" );
if ( engine != 0 )
AL_ASSERT_OBJECT( engine, ALCompressionEngine, "ALEntrySetEngine" );
( (ALEntry *) this_object )->mpCompressionEngine = (ALCompressionEngine *) engine;
}