campo-sirio/arch/cxl_cmpo.cpp

443 lines
14 KiB
C++
Executable File

//
// CXL_CMPO.CPP
//
// Source file for ArchiveLib 1.0
//
// Copyright (c) Greenleaf Software, Inc. 1994
// All Rights Reserved
//
// CONTENTS
//
// newALCompressed()
// deleteALCompressed()
// ALCompressedInsert()
// ALCompressedExtract()
// ALCompresssedGetStatusCode()
// ALCompressedSetError()
// ALCompressedGetStatusString()
// ALCompressedGetStatusStringVB()
// ALCompressedGetStatusDetail()
// ALCompressedGetStatusDetailVB()
//
// DESCRIPTION
//
// This file contains all the C/VB translation routines to support
// operations on ALCompressedObject objects. These routines are all
// going to be short and sweet, so don't expect too much explanation.
// The meat can all be found in CMPOBJ.CPP
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
//
#include "arclib.h"
#pragma hdrstop
#include "al.h"
#include "alcxl.h"
//
// extern "C" hALCompressed newALCompressed( hALStorage storage,
// hALEngine engine )
//
// ARGUMENTS:
//
// storage : A handle for (pointer to) an ALStorage object that is
// going to hold the compressed object.
//
// engine : A handle for (pointer to) an ALCompressionEngine that will
// be used to insert and extract objects from the the storage
// object.
//
// RETURNS
//
// A handle for (pointer to) a newly created ALCompressedObject, or 0 if
// the constructor failed.
//
// DESCRIPTION
//
// This is the C/VB translation function for the C++ constructor
// ALCompressedObject::ALCompressedObject(). See CMPOBJ.CPP for
// details on what happens in the member function.
//
// In the translation function, we just check the arguments for
// correct type (in the debug version) and call the function, returning
// the result to the calling function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" hALCompressed AL_FUNCTION
newALCompressed( hALStorage storage,
hALEngine engine )
{
AL_ASSERT_OBJECT( storage, ALStorage, "newALCompressed" );
AL_ASSERT_OBJECT( engine, ALCompressionEngine, "newALCompressed" );
return (hALCompressed) new ALCompressedObject( *(ALStorage *) storage, *(ALCompressionEngine *) engine );
}
//
// extern "C" void deleteALCompressed( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject
// that is going to be destroyed.
//
// RETURNS
//
// Nothing, this is a destructor.
//
// DESCRIPTION
//
// This is the C/VB translation function for the C++ destructor
// ALCompressedObject::~ALCompressedObject(). See CMPOBJ.CPP for
// details on what happens in the member function.
//
// In the translation function, we just check the arguments for
// correct type (in the debug version) and call the function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" void AL_FUNCTION deleteALCompressed( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "deleteALCompressed" );
delete (ALCompressedObject *) this_object;
}
//
// extern "C" int ALCompressedInsert( hALCompressed this_object,
// hALStorage input_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject
// that is going to have a storage object inserted
// int it.
//
// input_object : A handle for (pointer to) a storage object that is
// going to get compressed into this_object.
//
// RETURNS
//
// AL_SUCCESS for success, or < AL_SUCCESS for one of many failures
//
// DESCRIPTION
//
// This is the C/VB translation function for the C++ function
// ALCompressedObject::Insert(). See CMPOBJ.CPP for more details
// on what happens in the member function.
//
// In the translation function, we just check the arguments for
// correct type (in the debug version) and call the function. We
// return the integer result of the function directly to the calling
// function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION ALCompressedInsert( hALCompressed this_object,
hALStorage input_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedInsert" );
AL_ASSERT_OBJECT( input_object, ALStorage, "ALCompressedInsert" );
return ( (ALCompressedObject *) this_object )->Insert( * (ALStorage *) input_object );
}
//
// extern "C" int ALCompressedExtract( hALCompressed this_object,
// hALStorage output_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject
// that is going to have a storage object extracted
// from it.
//
// output_object: A handle for (pointer to) a storage object that is
// going to receive the uncompressed object.
//
// RETURNS
//
// AL_SUCCESS for success, or < AL_SUCCESS for one of many failures
//
// DESCRIPTION
//
// This is the C/VB translation function for the C++ function
// ALCompressedObject::Extract(). See CMPOBJ.CPP for more details
// on what happens in the member function.
//
// In the translation function, we just check the arguments for
// correct type (in the debug version) and call the function. We
// return the integer result of the function directly to the calling
// function.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION ALCompressedExtract( hALCompressed this_object,
hALStorage output_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedExtract" );
AL_ASSERT_OBJECT( output_object, ALStorage, "ALCompressedExtract" );
return ( (ALCompressedObject *) this_object )->Extract( * (ALStorage *) output_object );
}
//
// extern "C" int ALCompressedGetStatusCode( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject.
//
// RETURNS
//
// An integer that contains the current status code for the object.
// Note that values of < 0 always indicate an error conditions.
//
// DESCRIPTION
//
// This is the C/VB wrapper function for the C++ function
// ALName::GetStatusCode() as implemented for objects of type
// ALCompressedObject. For details on how the member
// function actually works, take a look at OBJNAME.CPP.
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION
ALCompressedGetStatusCode( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedGetStatusCode" );
return ( (ALCompressedObject *) this_object )->mStatus.GetStatusCode();
}
//
// extern "C" int ALCompressedSetError( hALCompressed this_object,
// int error,
// char *text )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject.
// We are going to set the object's status member
// so that it is in an error state.
//
// error : The error code to apply to the object. Values from
// ALDEFS.H are good, but it really doesn't matter as
// long as you use a negative number.
//
// text : The text of the error message you want to associate with
// this error.
//
// RETURNS
//
// Returns the error code that you passed it.
//
// DESCRIPTION
//
// This is the C/VB wrapper function for the C++ member function
// ALName::SetError(), as applied to an ALCompressedObject. For more
// details on how the function actually works, check out OBJNAME.CPP.
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" int AL_FUNCTION ALCompressedSetError( hALCompressed this_object,
int error_code,
char AL_DLL_FAR *text )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedSetError" );
( (ALCompressedObject *) this_object )->mStatus.SetError( error_code, text );
return error_code;
}
//
// extern "C" char *ALCompressedGetStatusString( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject.
// We want to get the string translation of the error
// code for this object.
//
// RETURNS
//
// Always returns a pointer to a short string translation of the
// current error code.
//
// DESCRIPTION
//
// This is the C wrapper function for the C++ function
// ALName::GetStatusString(), as implemented for class ALCompressedObject.
// Note that we need a completely different function in order to
// return strings to VB programmers, this function is only good for C!
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" char AL_DLL_FAR * AL_FUNCTION
ALCompressedGetStatusString( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedGetStatusString" );
const char *status = ( (ALCompressedObject *) this_object )->mStatus.GetStatusString();
if ( status == 0 )
status = "";
return (char AL_DLL_FAR *) status;
}
//
// extern "C" long ALCompressedGetStatusStringVB( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject.
// We want to get the string translation of the error
// code for this object.
//
// RETURNS
//
// Always returns a VB handle (pointer?) to a short string translation of
// the current error code for the ALCompressedObject.
//
// DESCRIPTION
//
// This is the VB wrapper function for the C++ function
// ALName::GetStatusString(), as implemented for class ALCompressedObject.
// Note that we need a completely different function to return strings
// to C programmers. In this case, we use a special VB translation routine
// to convert a C string to one that is nice and easy for VB to use.
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// 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 ALCompressedGetStatusStringVB( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedGetStatusStringVB" );
const char _far *status = ( (ALCompressedObject *) this_object )->mStatus.GetStatusString();
if ( status == 0 )
status = "";
return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) );
}
#endif
//
// extern "C" char *ALCompressedGetStatusDetail( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedObject.
// We want to get the detailed string describing this
// object's current status.
//
// RETURNS
//
// Always returns a pointer to a status detail message.
//
// DESCRIPTION
//
// This is the C wrapper function for the C++ function
// ALName::GetStatusDetail(), as implemented for class ALCompressedObject.
// Note that we need a completely different function in order to
// return strings to VB programmers.
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// REVISION HISTORY
//
// May 24, 1994 1.0A : First release
//
extern "C" char AL_DLL_FAR * AL_FUNCTION
ALCompressedGetStatusDetail( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedGetStatusDetail" );
const char *status = ( (ALCompressedObject *) this_object )->mStatus.GetStatusDetail();
if ( status == 0 )
status = "";
return (char AL_DLL_FAR *) status;
}
//
// extern "C" long ALCompressedGetStatusDetailVB( hALCompressed this_object )
//
// ARGUMENTS:
//
// this_object : A handle for (pointer to) an ALCompressedobject.
// We want to get the detailed status message for
// this object.
//
// RETURNS
//
// Always returns a VB handle (pointer?) to a translation of
// the current status detail for the ALCompressedObject.
//
// DESCRIPTION
//
// This is the VB wrapper function for the C++ function
// ALName::GetStatusDetail(), as implemented for class ALCompressedObject.
// Note that we need a completely different function to return strings
// to C programmers. In this case, we use a special VB translation routine
// to convert a C string to one that is nice and easy for VB to use.
//
// All that happens here is that the arguments are checked for correct
// type (when in debug mode), and a call is made to the appropriate
// member function, with lots of casting.
//
// 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
ALCompressedGetStatusDetailVB( hALCompressed this_object )
{
AL_ASSERT_OBJECT( this_object, ALCompressedObject, "ALCompressedGetStatusDetailVB" );
const char _far *status = ( (ALCompressedObject *) this_object )->mStatus.GetStatusDetail();
if ( status == 0 )
status = "";
return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) );
}
#endif