campo-sirio/al/cpp_all/storpkr.cpp
alex 714dd74636 Archive Library versione 2.00
git-svn-id: svn://10.65.10.50/trunk@5350 c028cbd2-c16b-5b4b-a496-9718f37d4682
1997-10-09 16:09:54 +00:00

210 lines
5.1 KiB
C++
Executable File

//
// STORPKR.CPP
//
// Source file for ArchiveLib 2.0
//
// Copyright (c) Greenleaf Software, Inc. 1994-1996
// All Rights Reserved
//
// CONTENTS
//
// ALStorage::ReadPkShort()
// ALStorageReadPkShort()
// ALStorage::ReadPkLong()
// ALStorageReadPkLong()
//
// DESCRIPTION
//
// This file contains the modules used to read shorts and longs
// in PKWare's endian order.
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release.
//
#include "arclib.h"
#if !defined( AL_IBM )
#pragma hdrstop
#endif
//
// NAME
//
// ALStorage::ReadPkShort()
//
// PLATFORMS/ENVIRONMENTS
//
// Console Windows PM
// C++ C VB Delphi
//
// SHORT DESCRIPTION
//
// Read a short data word using PKWare's format.
//
// C++ SYNOPSIS
//
// #include "arclib.h"
//
// int ALStorage::ReadPkShort( short &short_data );
//
// C SYNOPSIS
//
// #include "arclib.h"
//
// int ALStorageReadPkShort( hALStorage this_object, short *short_data );
//
// VB SYNOPSIS
//
// Declare Function ALStorageReadPkShort Lib "AL20LW"
// (ByVal this_object&, short_data%) As Integer
//
// DELPHI SYNOPSIS
//
// function ALStorageReadPkShort( this_object : hALStorage;
// Var short_data : Integer ) : Integer;
//
// ARGUMENTS
//
// this_object : A reference or pointer to the ALStorage object that
// contains the short word to be read. Note that the C++
// version of this call doesn't have an explicit argument
// here, since it has access to 'this' implicitly.
//
// short_data : A pointer to the short data element that is going to
// receive the word read in from the storage object.
//
// DESCRIPTION
//
// This function reads short integers in native PKWare format. It is
// complementary to the ReadGlShort, which reads data in Greenleaf
// format. Unfortunately, Greenleaf format and PKWare format are
// not identical.
//
// RETURNS
//
// An ArchiveLib status code, ranging from AL_SUCCESS to any of the
// error codes < 0.
//
// EXAMPLE
//
// SEE ALSO
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release.
//
int AL_PROTO
ALStorage::ReadPkShort( short int AL_DLL_FAR & short_data ) /* Tag public function */
{
short_data = (short int) ReadChar();
short_data |= (short int) ( ReadChar() << 8 );
return mStatus;
}
#if !defined( AL_NO_C )
extern "C" AL_LINKAGE int AL_FUNCTION
ALStorageReadPkShort( hALStorage this_object, /* Tag public function */
short int AL_DLL_FAR *short_data )
{
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadPkShort" );
AL_ASSERT( short_data != 0, "Null pointer passed to function" );
return ( (ALStorage *) this_object )->ReadPkShort( *short_data );
}
#endif
//
// NAME
//
// ALStorage::ReadPkLong()
//
// PLATFORMS/ENVIRONMENTS
//
// Console Windows PM
// C++ C VB Delphi
//
// SHORT DESCRIPTION
//
// Read a long data word using PKWare's format.
//
// C++ SYNOPSIS
//
// #include "arclib.h"
//
// int ALStorage::ReadPkLong( long &long_data );
//
// C SYNOPSIS
//
// #include "arclib.h"
//
// int ALStorageReadPkLong( hALStorage this_object, long *data );
//
// VB SYNOPSIS
//
// Declare Function ALStorageReadPkLong Lib "AL20LW"
// (ByVal this_object&, long_data&) As Integer
//
// DELPHI SYNOPSIS
//
// function ALStorageReadPkLong( this_object : hALStorage;
// Var long_data : LongInt ) : Integer;
//
// ARGUMENTS
//
// this_object : A reference or pointer to the ALStorage object that
// contains the long word to be read. Note that the C++
// version of this call doesn't have an explicit argument
// here, since it has access to 'this' implicitly.
//
// long_data : A pointer to the long data element that is going to
// receive the word read in from the storage object.
//
// DESCRIPTION
//
// This function reads long integers in native PKWare format. It is
// complementary to the ReadGlLong, which reads data in Greenleaf
// format. Unfortunately, Greenleaf format and PKWare format are
// not identical.
//
// RETURNS
//
// An ArchiveLib status code, ranging from AL_SUCCESS to any of the
// error codes < 0.
//
// EXAMPLE
//
// SEE ALSO
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release.
//
int AL_PROTO
ALStorage::ReadPkLong( long AL_DLL_FAR & long_data ) /* Tag public function */
{
long_data = (long) ReadChar();
long_data |= (long) ReadChar() << 8;
long_data |= (long) ReadChar() << 16;
long_data |= (long) ReadChar() << 24;
return mStatus;
}
#if !defined( AL_NO_C )
extern "C" AL_LINKAGE int AL_FUNCTION
ALStorageReadPkLong( hALStorage this_object, /* Tag public function */
long AL_DLL_FAR *long_data )
{
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadPkLong" );
AL_ASSERT( long_data != 0, "Null pointer passed to function" );
return ( (ALStorage *) this_object )->ReadPkLong( *long_data );
}
#endif