// // STORGLR.CPP // // Source file for ArchiveLib 2.0 // // Copyright (c) Greenleaf Software, Inc. 1994-1996 // All Rights Reserved // // CONTENTS // // ALStorage::ReadGlShort() // ALStorageReadGlShort() // ALStorage::ReadGlLong() // ALStorageReadGlLong() // // DESCRIPTION // // This file contains the modules used to read shorts and longs // in Greenleaf's endian order. // // REVISION HISTORY // // February 14, 1996 2.0A : New release. // #include "arclib.h" #if !defined( AL_IBM ) #pragma hdrstop #endif // // NAME // // ALStorage::ReadGlShort() // // PLATFORMS/ENVIRONMENTS // // Console Windows PM // C++ C VB Delphi // // SHORT DESCRIPTION // // Read a short word in Greenleaf format from a storage object. // // C++ SYNOPSIS // // #include "arclib.h" // // int ALStorage::ReadGlShort( short int & short_data ); // // C SYNOPSIS // // #include "arclib.h" // // int ALStorageReadGlShort( hALStorage this_object, // short int AL_DLL_FAR *short_data ); // // VB SYNOPSIS // // Declare Function ALStorageReadGlShort Lib "AL20LW" // (ByVal this_object&, short_data%) As Integer // // DELPHI SYNOPSIS // // function ALStorageReadGlShort( this_object : hALStorage; // Var short_data : Integer ) : Integer; // // ARGUMENTS // // this_object : A reference or pointer to the ALStorage object that // has the short word we are going to 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 reference to a 16 bit integer that is going to // have data read in from this storage object. // // DESCRIPTION // // In order to make sure our archives can be read and written on all sorts // of systems, we have a few functions that are used to read numerical // data in a portable fashion. This function reads short integers in // little endian format (which is not native Intel format). The // complementary function, WriteGlShort(), writes short integers out // using the same format. // // RETURNS // // AL_SUCCESS if all goes well. Otherwise, some error code < AL_STATUS. // // EXAMPLE // // SEE ALSO // // ALStorage::ReadGlLong(), ALStorage::WriteGlShort() // // REVISION HISTORY // // February 14, 1996 2.0A : New release. // int AL_PROTO ALStorage::ReadGlShort( short int AL_DLL_FAR & short_data ) /* Tag public function */ { short_data = (short int) ( ReadChar() << 8 ); short_data |= (short int) ReadChar(); return mStatus; } #if !defined( NO_AL_C ) extern "C" AL_LINKAGE int AL_FUNCTION ALStorageReadGlShort( hALStorage this_object, /* Tag public function */ short int AL_DLL_FAR *short_data ) { AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadGlShort" ); AL_ASSERT( short_data != 0, "Null pointer passed to function" ); return ( (ALStorage *) this_object )->ReadGlShort( *short_data ); } #endif // // NAME // // ALStorage::ReadGlLong() // // PLATFORMS/ENVIRONMENTS // // Console Windows PM // C++ C VB Delphi // // SHORT DESCRIPTION // // Read a long word in Greenleaf format from a storage object. // // C++ SYNOPSIS // // #include "arclib.h" // // int ALStorage::ReadGlLong( long int & long_data ); // // C SYNOPSIS // // #include "arclib.h" // // int ALStorageReadGlLong( hALStorage this_object, // long int AL_DLL_FAR *long_data ); // // VB SYNOPSIS // // Declare Function ALStorageReadGlLong Lib "AL20LW" // (ByVal this_object&, long_data&) As Integer // // DELPHI SYNOPSIS // // function ALStorageReadGlLong( this_object : hALStorage; // Var long_data : Long Int ) : Integer; // // ARGUMENTS // // this_object : A reference or pointer to the ALStorage object that // has the long word we are going to 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 reference to a 32 bit integer that is going to // have data read in from this storage object. // // DESCRIPTION // // In order to make sure our archives can be read and written on all sorts // of systems, we have a few functions that are used to read numerical // data in a portable fashion. This function reads long integers in // little endian format (which is not native Intel format). The // complementary function, WriteGlLong(), writes long integers out // using the same format. // // RETURNS // // AL_SUCCESS if all goes well. Otherwise, some error code < AL_STATUS. // // EXAMPLE // // SEE ALSO // // ALStorage::WriteGlLong(), ALStorage::ReadGlShort() // // REVISION HISTORY // // February 14, 1996 2.0A : New release. // int AL_PROTO ALStorage::ReadGlLong( long & long_data ) /* Tag public function */ { long_data = (long) ReadChar() << 24; long_data |= (long) ReadChar() << 16; long_data |= (long) ReadChar() << 8; long_data |= ReadChar(); return mStatus; } #if !defined( NO_AL_C ) extern "C" AL_LINKAGE int AL_FUNCTION ALStorageReadGlLong( hALStorage this_object, /* Tag public function */ long int AL_DLL_FAR *long_data ) { AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadGlLong" ); AL_ASSERT( long_data != 0, "Null pointer passed to function" ); return ( (ALStorage *) this_object )->ReadGlLong( *long_data ); } #endif