2433 lines
80 KiB
C++
Executable File
2433 lines
80 KiB
C++
Executable File
//
|
|
// CXL_SOBJ.CPP
|
|
//
|
|
// Source file for ArchiveLib 1.0
|
|
//
|
|
// Copyright (c) Greenleaf Software, Inc. 1994
|
|
// All Rights Reserved
|
|
//
|
|
// CONTENTS
|
|
//
|
|
// deleteALStorage()
|
|
// ALStorageSetMonitor()
|
|
// ALStorageDelete()
|
|
// ALStorageSetName()
|
|
// ALStorageCompare()
|
|
// ALStorageGetSize()
|
|
// ALStoragePackedAttributes()
|
|
// ALStorageSetFromDosAttributes()
|
|
// ALStorageSetFromPackedAtts()
|
|
// ALStorageWildCardMatch()
|
|
// ALStorageChangeExtension()
|
|
// ALStorageChangeExtensionVB()
|
|
// ALStorageChangeTrailingChar()
|
|
// ALStorageChangeTrailingCharVB()
|
|
// ALStorageGetName()
|
|
// ALStorageGetNameVB()
|
|
// ALStorageGetOldName()
|
|
// ALStorageGetOldNameVB()
|
|
// ALStorageGetStatusCode()
|
|
// ALStorageSetError()
|
|
// ALStorageGetStatusString()
|
|
// ALStorageGetStatusStringVB()
|
|
// ALStorageGetStatusDetail()
|
|
// ALStorageGetStatusDetailVB()
|
|
// ALStorageGetUnixTime()
|
|
// ALStorageToJulian()
|
|
// ALStorageFromJulian()
|
|
// ALStorageSetTimeDateFromStruc()
|
|
// ALStorageGetStrucFromTimeDate()
|
|
// ALStorageSetTimeDateFromUnix()
|
|
// ALStorageIsOpen()
|
|
// ALStorageReadChar()
|
|
// ALStorageReadShort()
|
|
// ALStorageReadLong()
|
|
// ALStorageWriteLong()
|
|
// ALStorageWriteShort()
|
|
// ALStorageWriteString()
|
|
// ALStorageInitCrc32()
|
|
// ALStorageTell()
|
|
// ALStorageReadBuffer()
|
|
// ALStorageWriteBuffer()
|
|
// ALStorageGetCrc32()
|
|
// ALStorageClose()
|
|
// ALStorageCreate()
|
|
// ALStorageFlushBuffer()
|
|
// ALStorageLoadBuffer()
|
|
// ALStorageOpen()
|
|
// ALStorageRename()
|
|
// ALStorageRenameToBackup()
|
|
// ALStorageSeek()
|
|
// ALStorageUnRename()
|
|
// ALStorageWriteChar()
|
|
// ALStorageGetType()
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This file contains all of the C/VB translation routines to support
|
|
// class ALStorage. There are very few functions that you will need
|
|
// to call for classes derived from ALStorage (other than constructors)
|
|
// so this file should contain most of the stuff you need.
|
|
//
|
|
// All of these translation/wrapper functions are markedly unenlightening.
|
|
// The real details for most of the code can be found in STORAGE.CPP.
|
|
// When you want to know what a derived class is doing, try looking in
|
|
// in MEMSTORE.CPP or FILESTOR.CPP.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
//
|
|
|
|
#include "arclib.h"
|
|
#pragma hdrstop
|
|
|
|
#include "al.h"
|
|
#include "alcxl.h"
|
|
|
|
//
|
|
// extern "C" void deleteALStorage( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// is going to be destroyed.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing, this is a destructor.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ destructor ALStorage::~ALStorage(). This function checks its
|
|
// single handle argument for correct type (in debug mode), then casts
|
|
// and calls the dtor.
|
|
//
|
|
// Note that since the destructor is virtual, you will actually be
|
|
// going to the destructor for your derive class.
|
|
//
|
|
// The ALStorage destructor does a fair amount of work, so you might
|
|
// want to check it out in STORAGE.CPP.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION deleteALStorage( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "deleteALStorage" );
|
|
delete (ALStorage *) this_object;
|
|
}
|
|
|
|
//
|
|
// extern "C" void ALStorageSetMonitor( hALStorage this_object,
|
|
// hALMonitor monitor )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// is have a new monitor assigned to it.
|
|
//
|
|
// monitor : A handle for (pointer to) an ALMonitor object. This
|
|
// object is going to be assigned to the storage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ data member ALStorage::mpMonitor. This function checks its
|
|
// two handle arguments for correct type (in debug mode), then casts
|
|
// and assigns.
|
|
//
|
|
// Normally, assignment of monitor objects to storage objects is done
|
|
// inside the member functions of ALArchiveBase. However, if you want
|
|
// to use a monitor for some operation you are performing on your own,
|
|
// such as a batch file copy, you will have to use this function (along
|
|
// with a couple of others) to get things to work properly.
|
|
//
|
|
// Note that 0 is a valid value for a monitor.
|
|
//
|
|
// To see how the monitor actually works, check out ARCHIVEB.CPP,
|
|
// and BARGRAPH.CPP or WINMON.CPP.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION ALStorageSetMonitor( hALStorage this_object,
|
|
hALMonitor monitor )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetMonitor" );
|
|
if ( monitor )
|
|
AL_ASSERT_OBJECT( monitor, ALMonitor, "ALStorageSetMonitor" );
|
|
( (ALStorage *) this_object )->mpMonitor = (ALMonitor *) monitor;
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageDelete( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// is going to have its underlying physical object deleted.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS, or some other error code.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALStorage::Delete(). This function checks its
|
|
// handle argument for correct type (in debug mode), then casts
|
|
// and calls Delete().
|
|
//
|
|
// Delete() is used to delete the underlying physical object associated
|
|
// with a storage object, for example, a disk file. The implementation
|
|
// of this function will vary widely across derived classes.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStorage::Delete(). See FILESTOR.CPP and MEMSTORE.CPP for an
|
|
// in-depth look at the whole deal.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageDelete( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageDelete" );
|
|
return ( (ALStorage *) this_object)->Delete();
|
|
}
|
|
|
|
//
|
|
// extern "C" void ALStorageSetName( hALStorage this_object,
|
|
// char *object_name )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// is going to have its name changed.
|
|
//
|
|
// object_name : The new name.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALName::operator =(char*), for the mName member
|
|
// of objects of class ALStorage. This function checks its single
|
|
// handle argument for correct type (in debug mode), then casts
|
|
// and assigns.
|
|
//
|
|
// This function changes the name in the ALStorage object, but it doesn't
|
|
// change the underlying name of the physical object (if there is one.)
|
|
// To do that, you need to call ALStorageRename().
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName. See OBJNAME.CPP for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION ALStorageSetName( hALStorage this_object,
|
|
char *object_name )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetName" );
|
|
( (ALStorage *) this_object )->mName = object_name;
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageCompare( hALStorage this_object,
|
|
// hALStorage test_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// is going to be half of the comparison.
|
|
//
|
|
// test_object : A handle for (pointer to) the storage object that
|
|
// is going to be the other half of the comparison.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if they match, AL_COMPARE_ERROR if they don't, some other
|
|
// code < AL_SUCCESS if a bad thing happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALStorage::Compare(). This function checks its two
|
|
// handle arguments for correct type (in debug mode), then casts
|
|
// and calls ALStorage::Compare().
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStorage::Compare(). See STORCMP.CPP for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageCompare( hALStorage this_object,
|
|
hALStorage test_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageCompare" );
|
|
AL_ASSERT_OBJECT( test_object, ALStorage, "ALStorageCompare" );
|
|
return ( (ALStorage *) this_object )->Compare( *(ALStorage *) test_object );
|
|
}
|
|
|
|
//
|
|
// extern "C" long ALStorageGetSize( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get this size of.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// The long size of the storage object if it is known. -1 if it
|
|
// isn't known. Some other error code < 0 if things went haywire.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALStorage::GetSize(). This function checks its
|
|
// handle argument for correct type (in debug mode), then casts
|
|
// and calls ALStorage::GetSize(). It returns the long integer
|
|
// result back to the calling procedure unchanged.
|
|
//
|
|
// GetSize() is not a virtual function, it simply provides access to
|
|
// the mlSize member of ALStorage. However, mlSize will be updated
|
|
// many of the member functions of ALStorage and derived classes.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStorage::GetSize(). See STORAGE.H for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" long AL_FUNCTION ALStorageGetSize( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetSize" );
|
|
return ( (ALStorage *) this_object)->GetSize();
|
|
}
|
|
|
|
//
|
|
// extern "C" unsigned short int ALStoragePackedAttributes(
|
|
// hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// has the packed attributes you are interested int.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// An unsigned short containing the packed attributes of the storage
|
|
// object. The attributes are packed in our own internal format
|
|
// (which is documented).
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALFileAttributes::PackedAttributes() for the
|
|
// mAttributes data member of class ALStorage. This function checks its
|
|
// handle argument for correct type (in debug mode), then casts
|
|
// and calls the C++ function. It returns the unsigned short
|
|
// result back to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALFileAttributes::PackedAttributes. See FILEATTR.H for the details
|
|
// on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" unsigned short int AL_FUNCTION
|
|
ALStoragePackedAttributes( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStoragePackedAttributes" );
|
|
return ( (ALStorage *) this_object)->mAttributes.PackedAttributes();
|
|
}
|
|
|
|
//
|
|
// extern "C" void
|
|
// ALStorageSetFromDosAttributes( hALStorage this_object,
|
|
// unsigned short int dos_attributes )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// attributes you want to set.
|
|
//
|
|
// dos_attributes : A set of file attributes in the format you normally
|
|
// get from MS-DOS functions such as _dos_getfileattr().
|
|
// RETURNS
|
|
//
|
|
// Nothing, a void guy.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to set the
|
|
// value of the ALStorage data member mAttributes by way of the
|
|
// ALFileAttributes::SetFromDosAttributes() member function. This function
|
|
// checks the handle argument for correct type (in debug mode), then casts
|
|
// and calls the C++ function.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALFileAttributes::SetFromDosAttributes(). See FILEATTR.CPP for the
|
|
// details on that.
|
|
//
|
|
// Doesn't compile in AL_FLAT_MODEL, because file attributes are handled
|
|
// completely differently in Win32s/NT.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
#if !defined( AL_WIN32S )
|
|
extern "C" void AL_FUNCTION ALStorageSetFromDosAttributes( hALStorage this_object, unsigned short int dos_attributes )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetFromDosAttributes" );
|
|
( (ALStorage *) this_object)->mAttributes.SetFromDosAttributes( dos_attributes );
|
|
}
|
|
#endif
|
|
|
|
//
|
|
// extern "C" void
|
|
// ALStorageSetFromPackedAtts( hALStorage this_object,
|
|
// unsigned short int packed_attributes )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// attributes you want to set.
|
|
//
|
|
// packed_attributes : A set of file attributes in the format used
|
|
// internally by ArchiveLib.
|
|
// RETURNS
|
|
//
|
|
// Nothing, a void guy.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to set the
|
|
// value of the ALStorage data member mAttributes by way of the
|
|
// ALFileAttributes::SetFromPackedAttributes() member function. This
|
|
// function checks the handle argument for correct type (in debug mode),
|
|
// then casts and calls the C++ function.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALFileAttributes::SetFromPackedAttributes(). See FILEATTR.CPP for the
|
|
// details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION ALStorageSetFromPackedAtts( hALStorage this_object, unsigned short int packed_attributes )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetFromPackedAtts" );
|
|
( (ALStorage *) this_object )->mAttributes.SetFromPackedAttributes( packed_attributes );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageWildCardMatch( hALStorage this_object,
|
|
// char *pattern )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// name you want to test.
|
|
//
|
|
// pattern : A regular expression that will be tested for a match.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// 1 for a match, 0 for not.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALName::WildCardMatch() C++ member function for the mName data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName::WildCardMatch(). See OBJNAME.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageWildCardMatch( hALStorage this_object, char AL_DLL_FAR *pattern )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWildCardMatch" );
|
|
return ( (ALStorage *) this_object )->mName.WildCardMatch( pattern );
|
|
}
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageChangeExtension( hALStorage this_object,
|
|
// char *new_extension )
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageChangeExtensionVB( hALStorage this_object,
|
|
// char *new_extension )
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// name you want to test.
|
|
//
|
|
// new_extension : A new three letter (maybe) extension you want
|
|
// to apply to the object name.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the file name after the
|
|
// new extension has been applied to it.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALName::ChangeExtension() C++ member function for the mName data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName::ChangeExtension(). See OBJNAME.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageChangeExtension( hALStorage this_object,
|
|
char AL_DLL_FAR *new_extension )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageChangeExtension" );
|
|
return ( (ALStorage *) this_object )->mName.ChangeExtension( new_extension );
|
|
}
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION
|
|
ALStorageChangeExtensionVB( hALStorage this_object,
|
|
char AL_DLL_FAR *new_extension )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageChangeExtensionVB" );
|
|
char _far * p = ( (ALStorage *) this_object )->mName.ChangeExtension( new_extension );
|
|
return ALCreateVBString( p, (unsigned short int) _fstrlen( p ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageChangeTrailingChar( hALStorage this_object,
|
|
// char new_char )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageChangeTrailingCharVB( hALStorage this_object,
|
|
// char new_char )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// name you want to test.
|
|
//
|
|
// new_char : A new final character you want to apply to the
|
|
// object name. Often a "funny" character, like '~'.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the file name after the
|
|
// new final character has been applied to it.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALName::ChangeTrailingChar() C++ member function for the mName data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName::ChangeTrailingChar(). See OBJNAME.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageChangeTrailingChar( hALStorage this_object, char new_char )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageChangeTrailingChar" );
|
|
return ( (ALStorage *) this_object )->mName.ChangeTrailingChar( new_char );
|
|
}
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION
|
|
ALStorageChangeTrailingCharVB( hALStorage this_object, char new_char )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageChangeTrailingChar" );
|
|
char _far * p = ( (ALStorage *) this_object )->mName.ChangeTrailingChar( new_char );
|
|
return ALCreateVBString( p, (unsigned short int) _fstrlen( p ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageGetName( hALStorage this_object )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageGetNameVB( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// name you want.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the file name.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALName::GetSafeName() C++ member function for the mName data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName::GetSafeName(). See OBJNAME.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageGetName( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetName" );
|
|
return (char AL_DLL_FAR *) ( (ALStorage *) this_object )->mName.GetSafeName();
|
|
}
|
|
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION ALStorageGetNameVB( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetName" );
|
|
const char _far *p = ( (ALStorage *) this_object )->mName.GetSafeName();
|
|
return ALCreateVBString( p, (unsigned short int) _fstrlen( p ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageGetOldName( hALStorage this_object )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageGetOldNameVB( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// old name you want.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the old file name.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALName::GetSafeOldName() C++ member function for the mName data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALName::GetSafeOldName(). See OBJNAME.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageGetOldName( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetOldName" );
|
|
return (char AL_DLL_FAR *) ( (ALStorage *) this_object )->mName.GetSafeOldName();
|
|
}
|
|
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION ALStorageGetOldNameVB( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetOldNameVB" );
|
|
const char _far *p = ( (ALStorage *) this_object )->mName.GetSafeOldName();
|
|
return ALCreateVBString( p, (unsigned short int) _fstrlen( p ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
// extern "C" int ALStorageGetStatusCode( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// status code you want.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// The integer value of the status code. Values of AL_SUCCESS are good,
|
|
// values < AL_SUCCESS are bad.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALStatus::GetStatusCode() C++ member function for the mStatus data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// There really isn't too much to know about this function. It just
|
|
// returns the current integer status code to the calling routine.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageGetStatusCode( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStatusCode" );
|
|
return ( (ALStorage *) this_object)->mStatus.GetStatusCode();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageSetError( hALArchive this_object,
|
|
// int error,
|
|
// char *text )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// 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 ALStorage object. 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 ALStorageSetError( hALStorage this_object,
|
|
int error,
|
|
char AL_DLL_FAR *text )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetError" );
|
|
( (ALStorage *) this_object )->mStatus.SetError( error, text );
|
|
return error;
|
|
}
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageGetStatusString( hALStorage this_object )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageGetStatusStringVB( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// status string you want to get.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the status string. This
|
|
// is the short translation string, not the detailed message.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALStatus::GetStatusString() C++ member function for the mStatus data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStatus::GetStatusString(). See STATUS.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageGetStatusString( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStatusString" );
|
|
const char *status = ( (ALStorage *) this_object)->mStatus.GetStatusString();
|
|
if ( status == 0 )
|
|
status = "";
|
|
return (char AL_DLL_FAR *) status;
|
|
}
|
|
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION ALStorageGetStatusStringVB( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStatusStringVB" );
|
|
const char _far *status = ( (ALStorage *) this_object)->mStatus.GetStatusString();
|
|
if ( status == 0 )
|
|
status = "";
|
|
return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
// C TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" char * ALStorageGetStatusDetail( hALStorage this_object )
|
|
//
|
|
// VB TRANSLATION FUNCTION
|
|
//
|
|
// extern "C" long ALStorageGetStatusDetailVB( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object whose
|
|
// status detail string you want to get.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A string pointer (or VB string) containing the status string. This
|
|
// is the detailed status message, not the short translated string.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to call the
|
|
// ALStatus::GetStatusDetail() C++ member function for the mStatus data
|
|
// member of class ALStorage. This function checks the handle argument for
|
|
// correct type (in debug mode), then casts and calls the C++ function.
|
|
//
|
|
// Note that the VB version of this function is almost identical. However,
|
|
// instead of returning a pointer to a character string, this routine calls
|
|
// ALVBCreateString() to build a VB string, which it returns to the
|
|
// calling module. Don't use the VB function from C, it will blow up.
|
|
// Don't use the C function from VB, because it returns a string pointer,
|
|
// which VB doesn't know how to deal with.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStatus::GetStatusDetail(). See STATUS.CPP for more information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" char AL_DLL_FAR * AL_FUNCTION
|
|
ALStorageGetStatusDetail( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStatusDetail" );
|
|
const char *status = ( (ALStorage *) this_object )->mStatus.GetStatusDetail();
|
|
if ( status == 0 )
|
|
status = "";
|
|
return (char AL_DLL_FAR *) status;
|
|
}
|
|
|
|
|
|
#if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS_GUI ) && !defined( AL_FLAT_MODEL )
|
|
|
|
extern "C" long AL_FUNCTION
|
|
ALStorageGetStatusDetailVB( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStatusDetailVB" );
|
|
const char _far *status = ( (ALStorage *) this_object)->mStatus.GetStatusDetail();
|
|
if ( status == 0 )
|
|
status = "";
|
|
return ALCreateVBString( status, (unsigned short int) _fstrlen( status ) );
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
// extern "C" long ALStorageGetUnixTime( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to retrieve the time/date stamp
|
|
// for this object.
|
|
// RETURNS
|
|
//
|
|
// The time/date of the object in unix format. Unix format is
|
|
// the format that is actually stored in an archive directory
|
|
// to record the object's time stamp.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::GetUnixTime(), as applied the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::GetUnixTime()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" long AL_FUNCTION
|
|
ALStorageGetUnixTime( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetUnixTime" );
|
|
return ( (ALStorage *) this_object)->mTimeDate.GetUnixTime();
|
|
}
|
|
|
|
//
|
|
// extern "C" long ALStorageToJulian( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to retrieve the time/date stamp
|
|
// for this object, in Julian date format.
|
|
// RETURNS
|
|
//
|
|
// The date of the object in julian date format.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::ToJulian(), as applied the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::ToJulian()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" long AL_FUNCTION
|
|
ALStorageToJulian( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageToJulian" );
|
|
return ( (ALStorage *) this_object)->mTimeDate.ToJulian();
|
|
}
|
|
|
|
//
|
|
// extern "C" void ALStorageFromJulian( hALStorage this_object, long jdn )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to set the date stamp
|
|
// for this object, using Julian date format.
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::FromJulian(), as applied the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::FromJulian()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION
|
|
ALStorageFromJulian( hALStorage this_object, long jdn )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageFromJulian" );
|
|
( (ALStorage *) this_object)->mTimeDate.FromJulian( jdn );
|
|
}
|
|
|
|
//
|
|
// extern "C" void
|
|
// ALStorageSetTimeDateFromStruc( hALStorage this_object,
|
|
// struct tm AL_DLL_FAR * time_struct )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to set the time/date stamp
|
|
// for this object, using C RTL time_struct format
|
|
// as our source.
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::SetTimeDate(), as applied the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::SetTimeDate()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// I don't think this function will be of any value to VB programmers.
|
|
// The only place to get this time date structure is from the C run
|
|
// time library.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION
|
|
ALStorageSetTimeDateFromStruc( hALStorage this_object,
|
|
struct tm AL_DLL_FAR * time_struct )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetTimeDateFromStruc" );
|
|
AL_ASSERT( time_struct != 0, "Null tm struct passed to ALStorageSetTimeDateFromStruc" );
|
|
( (ALStorage *) this_object )->mTimeDate.SetTimeDate( time_struct );
|
|
}
|
|
|
|
//
|
|
// extern "C" void
|
|
// ALStorageGetStrucFromTimeDate( hALStorage this_object,
|
|
// struct tm * time_struct )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to get the time/date stamp
|
|
// for this object, with the result going into
|
|
// the time date struct used by the C run time library.
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::GetTimeDate(), as applied the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::GetTimeDate()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// I don't think this function will be of any value to VB programmers.
|
|
// The only place to get this time date structure is from the C run
|
|
// time library.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION
|
|
ALStorageGetStrucFromTimeDate( hALStorage this_object,
|
|
struct tm AL_DLL_FAR * time_struct )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetStrucFromTimeDate" );
|
|
AL_ASSERT( time_struct != 0, "Null tm struct passed to ALStorageGetStrucFromTimeDate" );
|
|
( (ALStorage *) this_object )->mTimeDate.GetTimeDate( time_struct );
|
|
}
|
|
|
|
//
|
|
// extern "C" void
|
|
// ALStorageSetTimeDateFromUnix( hALStorage this_object,
|
|
// long unix_time )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
// We are going to set the time/date stamp
|
|
// for this object, using the Unix format time/date
|
|
// format as a source.
|
|
//
|
|
// unix_time : The time date in UNIX format.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALTimeDate::SetTimeDate(), as applied to the mTimeDate data member
|
|
// of the ALStorage object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the appropriate
|
|
// member function, with lots of casting.
|
|
//
|
|
// You won't learn much about much about the way ALTimeDate::SetTimeDate()
|
|
// works by looking at this function. See TIMEDATE.CPP for the
|
|
// details.
|
|
//
|
|
// The UNIX time/date format is what ArchiveLib uses internally in archives
|
|
// created using ALArchiveBase.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION
|
|
ALStorageSetTimeDateFromUnix( hALStorage this_object, long unix_time )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSetTimeDateFromUnix" );
|
|
( (ALStorage *) this_object )->mTimeDate.SetTimeDate( unix_time );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageIsOpen( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// 1 if the object is open, 0 if it is closed.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::IsOpen().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::IsOpen()
|
|
// works by looking at this function. See STORAGE.CPP for the
|
|
// details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageIsOpen( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageIsOpen" );
|
|
return ( (ALStorage *) this_object )->IsOpen();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageReadChar( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A byte from 0 to 255 if any valid characters are present,
|
|
// AL_END_OF_FILE if there aren't any, or an error code < AL_SUCCESS
|
|
// if the file is now in an error state.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::ReadChar().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::ReadChar()
|
|
// works by looking at this function. See STORAGE.H for the
|
|
// details.
|
|
//
|
|
// In C++, this function is implemented as an inline function, and it is
|
|
// pretty fast. Normally it just has to get a byte from the I/O buffer.
|
|
// This isn't the case when using this translation function, so you lose
|
|
// some efficiency. The best way to solve the efficiency problem is to
|
|
// try to structure your code to use ReadBuffer() instead.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageReadChar( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadChar" );
|
|
return ( (ALStorage *) this_object )->ReadChar();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageReadShort( hALStorage this_object,
|
|
// short int *data )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// data : Pointer to a short int that is going to receive
|
|
// the short int read in from the storage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the short int was read in properly. An error code
|
|
// < AL_SUCCESS if something bad happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::ReadPortableShort().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::ReadPortableShort()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// This function is designed for reading data that needs to be stored
|
|
// in a system independent fashion.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION
|
|
ALStorageReadShort( hALStorage this_object, short int AL_DLL_FAR *data )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadShort" );
|
|
AL_ASSERT( data != 0, "Null pointer passed to function" );
|
|
return ( (ALStorage *) this_object )->ReadPortableShort( *data );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageReadLong( hALStorage this_object,
|
|
// long *data )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// data : Pointer to a long int that is going to receive
|
|
// the long int read in from the storage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the long int was read in properly. An error code
|
|
// < AL_SUCCESS if something bad happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::ReadPortableLong().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::ReadPortableLong()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// This function is designed for reading data that needs to be stored
|
|
// in a system independent fashion.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION
|
|
ALStorageReadLong( hALStorage this_object, long AL_DLL_FAR *data )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadLong" );
|
|
AL_ASSERT( data != 0, "Null pointer passed to function" );
|
|
return ( (ALStorage *) this_object )->ReadPortableLong( *data );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageWriteLong( hALStorage this_object,
|
|
// long data )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// data : A long int that is going to be written out to
|
|
// to the storage object in a system independent manner.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the long int was written out properly. An error code
|
|
// < AL_SUCCESS if something bad happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::WritePortableLong().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::WritePortableLong()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// This function is designed for writing data that needs to be stored
|
|
// in a system independent fashion.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageWriteLong( hALStorage this_object,
|
|
long data )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWriteLong" );
|
|
return ( (ALStorage *) this_object)->WritePortableLong( data );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageWriteShort( hALStorage this_object,
|
|
// short data )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// data : A short int that is going to be written out to
|
|
// to the storage object in a system independent manner.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the short int was written out properly. An error code
|
|
// < AL_SUCCESS if something bad happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::WritePortableShort().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::WritePortableShort()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// This function is designed for writing data that needs to be stored
|
|
// in a system independent fashion.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageWriteShort( hALStorage this_object,
|
|
short int data )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWriteShort" );
|
|
return ( (ALStorage *) this_object)->WritePortableShort( data );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageWriteString( hALStorage this_object,
|
|
// char *string )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// string : A string that we are going to write out to the
|
|
// storage object in a system independent manner.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the string was written out properly. An error code
|
|
// < AL_SUCCESS if something bad happened.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::WriteString().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::WriteString()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// This function is designed for writing variable length blocks of data
|
|
// to archives in a consistent fashion.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageWriteString( hALStorage this_object,
|
|
char AL_DLL_FAR *string )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWriteString" );
|
|
AL_ASSERT( string != 0, "Passing null string in ALStorageWriteString()" );
|
|
return ( (ALStorage *) this_object )->WriteString( string );
|
|
}
|
|
|
|
//
|
|
// extern "C" void ALStorageInitCrc32( hALStorage this_object,
|
|
// long seed )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// seed : The initial value for the 32 bit CRC. In C++, the
|
|
// default parameter is 0xffffffffL. This is a good
|
|
// one to use, and it gives you ARJ/PKWARE compatibility.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// Nothing.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::InitCrc32().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::InitCrc32()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" void AL_FUNCTION ALStorageInitCrc32( hALStorage this_object,
|
|
long seed )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageInitCrc32" );
|
|
( (ALStorage *) this_object )->InitCrc32( seed );
|
|
}
|
|
|
|
//
|
|
// extern "C" long ALStorageTell( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A long value indicating where the read/write pointer to the storage
|
|
// object is presently located.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Tell(). It works a lot like the C RTL tell() or
|
|
// ftell() functions.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The long result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::Tell()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" long AL_FUNCTION ALStorageTell( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageTell" );
|
|
return ( (ALStorage *) this_object )->Tell();
|
|
}
|
|
|
|
//
|
|
// extern "C" size_t
|
|
// ALStorageReadBuffer( hALStorage this_object,
|
|
// unsigned char *buffer,
|
|
// size_t length )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// buffer : A pointer to a buffer. Specified as unsigned
|
|
// char, but the type doesn't really matter.
|
|
//
|
|
// length : The number of bytes you want to read into the buffer.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A number >= 0 indicates that number of byte were read into the buffer.
|
|
// A number <0 is a status code corresponding to an error.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::ReadBuffer(). It works a lot like the C RTL read() or
|
|
// fread() functions.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The short int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::ReadBuffer()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" size_t AL_FUNCTION
|
|
ALStorageReadBuffer( hALStorage this_object,
|
|
unsigned char AL_DLL_FAR *buffer,
|
|
size_t length )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageReadBuffer" );
|
|
AL_ASSERT( buffer != 0, "Passed a null buffer to ALStorageReadBuffer" );
|
|
return ( (ALStorage * ) this_object )->ReadBuffer( buffer, length );
|
|
}
|
|
|
|
//
|
|
// extern "C" size_t
|
|
// ALStorageWriteBuffer( hALStorage this_object,
|
|
// unsigned char *buffer,
|
|
// size_t length )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// buffer : A pointer to a buffer. Specified as unsigned
|
|
// char, but the type doesn't really matter.
|
|
//
|
|
// length : The number of bytes you want to write from the buffer.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A number >= 0 indicates that number of bytes were written to the object.
|
|
// A number <0 is a status code corresponding to an error.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::WriteBuffer(). It works a lot like the C RTL write() or
|
|
// fwrite() functions.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The short int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::WriteBuffer()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" size_t AL_FUNCTION
|
|
ALStorageWriteBuffer( hALStorage this_object,
|
|
unsigned char AL_DLL_FAR *buffer,
|
|
size_t length )
|
|
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWriteBuffer" );
|
|
AL_ASSERT( buffer != 0, "Passed a null buffer to ALStorageWriteBuffer" );
|
|
return ( (ALStorage * ) this_object )->WriteBuffer( buffer, length );
|
|
}
|
|
|
|
//
|
|
// extern "C" long ALStorageGetCrc32( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A long value corresponding to the current CRC-32 of the storage
|
|
// object. A value of -1 indicates that the CRC is unknown.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::GetCrc32(). This is just a simple access routine
|
|
// used to get the value of a private data member.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The long result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::GetCrc32()works by looking at this function.
|
|
// See STORAGE.CPP for the details.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" long AL_FUNCTION ALStorageGetCrc32( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetCrc32" );
|
|
return ( (ALStorage *) this_object )->GetCrc32();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageClose( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A value of AL_SUCCESS if the object was closed properly. A value
|
|
// of < AL_SUCCESS indicates an error state of some sort.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Close(). This is virtual function that will generally
|
|
// be implemented by a derived class.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::Close()works by looking at this function.
|
|
// See MEMSTORE.CPP or FILESTOR.CPP for the details. The base
|
|
// class version in STORAGE.CPP has good information as well.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageClose( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageClose" );
|
|
return ( (ALStorage *) this_object )->Close();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageCreate( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A value of AL_SUCCESS if the object was created properly. A value
|
|
// of < AL_SUCCESS indicates an error state of some sort.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Create(). This is virtual function that will generally
|
|
// be implemented by a derived class.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::Create()works by looking at this function.
|
|
// See MEMSTORE.CPP or FILESTOR.CPP for the details. The base
|
|
// class version in STORAGE.CPP has good information as well.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageCreate( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageCreate" );
|
|
return ( (ALStorage *) this_object )->Create();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageFlushBuffer( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A value of AL_SUCCESS if flush operation worked properly. A return
|
|
// of < AL_SUCCESS indicates an error state of some sort.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::FlushBuffer(). This is virtual function that will generally
|
|
// be implemented by a derived class. FlushBuffer() is used internally
|
|
// by ALStorage to flush the buffer when a write operation overflows
|
|
// the I/O buffer. It can be called externally to force the buffer out
|
|
// to the physical storage medium.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::FlushBuffer()works by looking at this function.
|
|
// See MEMSTORE.CPP or FILESTOR.CPP for the details. The base
|
|
// class version in STORAGE.CPP has good information as well.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
extern "C" int AL_FUNCTION ALStorageFlushBuffer( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageFlushBuffer" );
|
|
return ( (ALStorage *) this_object )->FlushBuffer();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageLoadBuffer( hALStorage this_object,
|
|
// long address )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// address : The address that we want to load data from.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// An integer >= 0 if the load operation worked properly. A return
|
|
// of < AL_SUCCESS indicates an error state of some sort.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::LoadBuffer(). This is virtual function that will generally
|
|
// be implemented by a derived class. LoadBuffer() is used internally
|
|
// by ALStorage to refresh the I/O buffer when a read operation underflows
|
|
// the I/O buffer. It can be called externally to force a load from a
|
|
// specific address, equivalent to a Seek() call.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way
|
|
// ALStorage::LoadBuffer()works by looking at this function.
|
|
// See MEMSTORE.CPP or FILESTOR.CPP for the details. The base
|
|
// class version in STORAGE.CPP has good information as well.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageLoadBuffer( hALStorage this_object,
|
|
long address )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageLoadBuffer" );
|
|
return ( (ALStorage *) this_object )->LoadBuffer( address );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageOpen( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the open operation worked properly. A return
|
|
// of < AL_SUCCESS indicates an error state of some sort.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Open(). This is virtual function that will generally
|
|
// be implemented by a derived class. Open() opens the physical storage
|
|
// device associated with the ALStorageObject, and reads any storage
|
|
// time date stamp and other attributes.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::Open()
|
|
// works by looking at this function. See MEMSTORE.CPP or FILESTOR.CPP
|
|
// for the details. The base class version in STORAGE.CPP also has
|
|
// some useful information.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageOpen( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageOpen" );
|
|
return ( (ALStorage *) this_object )->Open();
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageRename( hALStorage this_object,
|
|
// char *new_name,
|
|
// int delete_on_clash )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// new_name : The new name you want to assign to the storage
|
|
// object. You can pass a parameter of 0 here to
|
|
// indicate that you have already assigned the new
|
|
// name to the mName member of the storage object.
|
|
//
|
|
// delete_on_clash : If it turns out that the storage object name is
|
|
// already in use, you have a clash. This can happen,
|
|
// for example, when renaming a file to a backup.
|
|
// Setting this flag indicates that if there is a clash,
|
|
// you want to delete the clashing file and let
|
|
// your object use the name.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the rename operation worked properly. AL_RENAME_ERROR
|
|
// may be returned by derived classes if specific problems occur.
|
|
// Additional error codes < AL_SUCCESS may be returned if some other
|
|
// error was detected.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Rename(). This is virtual function that will generally
|
|
// be implemented by a derived class. Rename() operates on the operating
|
|
// system level to reassign the name of an object, such as a file.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::Rename()
|
|
// works by looking at this function. See FILESTOR.CPP for the details.
|
|
// MEMSTORE.CPP doesn't really have any useful info, since ALMemory
|
|
// objects don't have a name defined at the O/S level.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageRename( hALStorage this_object,
|
|
char *new_name,
|
|
int delete_on_clash )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageRename" );
|
|
AL_ASSERT( new_name != 0, "NULL new_name in ALStorageRename" );
|
|
return ( (ALStorage *) this_object )->Rename( new_name, delete_on_clash );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageRenameToBackup( hALStorage this_object,
|
|
// int delete_on_clash )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// delete_on_clash : If it turns out that the new storage name is
|
|
// already in use, you have a clash. This can happen,
|
|
// for example, when renaming a file to a backup.
|
|
// Setting this flag indicates that if there is a clash,
|
|
// you want to delete the clashing file and let
|
|
// your object use the name.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the rename operation worked properly. AL_RENAME_ERROR
|
|
// may be returned by derived classes if specific problems occur.
|
|
// Additional error codes < AL_SUCCESS may be returned if some other
|
|
// error was detected.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::RenameToBackup(). This is virtual function that will
|
|
// generally be implemented by a derived class. RenameToBackup()
|
|
// operates on the operating system level to reassign the name of an object, such as a file.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::RenameToBackup()
|
|
// works by looking at this function. See FILESTOR.CPP for the details.
|
|
// MEMSTORE.CPP doesn't really have any useful info, since ALMemory
|
|
// objects don't have a name defined at the O/S level. It just approves of
|
|
// all name change requests.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageRenameToBackup( hALStorage this_object,
|
|
int delete_on_clash )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageRenameToBackup" );
|
|
return ( (ALStorage *) this_object )->RenameToBackup( delete_on_clash );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageSeek( hALStorage this_object,
|
|
// long address )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// address : The address to seek to within the storage object.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the seek operation worked properly. AL_SEEK_ERROR
|
|
// may be returned by derived classes if specific problems occur.
|
|
// Additional error codes < AL_SUCCESS may be returned if some other
|
|
// error was detected.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::Seek(). This is virtual function that will
|
|
// generally be implemented by a derived class. ALStorage::Seek() often
|
|
// operates on the operating system level to seek to a position in a
|
|
// physical or O/S object.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::Seek()
|
|
// works by looking at this function. See FILESTOR.CPP and MEMSTORE.CPP
|
|
// for some insight.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
extern "C" int AL_FUNCTION ALStorageSeek( hALStorage this_object,
|
|
long address )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageSeek" );
|
|
return ( (ALStorage *) this_object )->Seek( address );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageUnRename( hALStorage this_object,
|
|
// int delete_on_clash )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// delete_on_clash : If it turns out that the new storage name is
|
|
// already in use, you have a clash. This can happen,
|
|
// for example, when renaming a file to a backup.
|
|
// Setting this flag indicates that if there is a clash,
|
|
// you want to delete the clashing file and let
|
|
// your object use the name.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// AL_SUCCESS if the rename operation worked properly. AL_RENAME_ERROR
|
|
// may be returned by derived classes if specific problems occur.
|
|
// Additional error codes < AL_SUCCESS may be returned if some other
|
|
// error was detected.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::UnRename(). This is virtual function that will
|
|
// generally be implemented by a derived class. ALStorage::UnRename()
|
|
// operates on the operating system level to reassign the name of an object,
|
|
// such as a file.
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), the handle is cast to the correct type, and
|
|
// a call is made to the C++ member function. The int result from
|
|
// the member function is returned unchanged to the calling C or VB
|
|
// procedure.
|
|
//
|
|
// You won't learn much about much about the way ALStorage::UnRename()
|
|
// works by looking at this function. See FILESTOR.CPP for the details.
|
|
// MEMSTORE.CPP doesn't really have any useful info, since ALMemory
|
|
// objects don't have a name defined at the O/S level. It just approves of
|
|
// all name change requests.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageUnRename( hALStorage this_object,
|
|
int delete_on_clash )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageUnRename" );
|
|
return ( (ALStorage *) this_object )->UnRename( delete_on_clash );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageWriteChar( hALStorage this_object,
|
|
// int c )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) an ALStorage object.
|
|
//
|
|
// c : A character to write.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A byte from 0 to 255 if the write was successful. Various error
|
|
// codes < AL_SUCCESS if the write failed.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB wrapper function for the C++ member function
|
|
// ALStorage::WriteChar().
|
|
//
|
|
// All that happens here is that the handle argument is checked for correct
|
|
// type (when in debug mode), and a call is made to the member function.
|
|
// The integer result is returned to the calling procedure as is.
|
|
//
|
|
// You won't learn much about much about the way ALStorage:WriteChar()
|
|
// works by looking at this function. See STORAGE.H for the
|
|
// details.
|
|
//
|
|
// In C++, this function is implemented as an inline function, and it is
|
|
// pretty fast. Normally it just has to put a byte into the I/O buffer.
|
|
// This isn't the case when using this translation function, so you lose
|
|
// some efficiency. The best way to solve the efficiency problem is to
|
|
// try to structure your code to use WriteBuffer() instead.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 24, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageWriteChar( hALStorage this_object,
|
|
int c )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageWriteChar" );
|
|
return ( (ALStorage *) this_object )->WriteChar( c );
|
|
}
|
|
|
|
//
|
|
// extern "C" int ALStorageGetType( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get the type of.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// The integer storage type, as defined in ALDEFS.H. AL_MEMORY_OBJECT
|
|
// and AL_FILE_OBJECT are popular choices. AL_UNDEFINED is possible
|
|
// as well.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ data member ALStorage::miStorageObjectType. This function checks
|
|
// its handle argument for correct type (in debug mode), then casts
|
|
// and accesses ALStorage::miStorageObjectType. It returns the integer
|
|
// result back to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALStorage::miStorageObjectType. See STORAGE.H for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageGetType( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetType" );
|
|
return ( (ALStorage *) this_object )->miStorageObjectType;
|
|
}
|
|
|
|
//
|
|
// extern "C" unsigned short int
|
|
// ALStorageGetDosTime( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get the DOS time for.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// An unsigned int that has the file access time in the format
|
|
// used by _dos_setfileattr().
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALTimeDate::GetDosTime for the mTimeDate
|
|
// member of class ALStorage. This function checks its handle argument for
|
|
// correct type (in debug mode), then casts and calls
|
|
// ALTimeDate::GetDosTime. It returns the short integer result back
|
|
// to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALTimeDate::GetDosTime. See TIMEDATE.CPP for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
#if !defined( AL_WIN32S )
|
|
|
|
extern "C" unsigned short int AL_FUNCTION
|
|
ALStorageGetDosTime( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetDosTime" );
|
|
return ( (ALStorage *) this_object )->mTimeDate.GetDosTime();
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
// extern "C" unsigned short int
|
|
// ALStorageGetDosDate( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get the DOS date for.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// An unsigned int that has the file access date in the format
|
|
// used by _dos_setfileattr().
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALTimeDate::GetDosDate for the mTimeDate
|
|
// member of class ALStorage. This function checks its handle argument for
|
|
// correct type (in debug mode), then casts and calls
|
|
// ALTimeDate::GetDosDate. It returns the short integer result back
|
|
// to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALTimeDate::GetDosDate. See TIMEDATE.CPP for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
#if !defined( AL_WIN32S )
|
|
|
|
extern "C" unsigned short int AL_FUNCTION
|
|
ALStorageGetDosDate( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetDosDate" );
|
|
return ( (ALStorage *) this_object )->mTimeDate.GetDosDate();
|
|
}
|
|
|
|
#endif
|
|
|
|
//
|
|
// extern "C" int ALStorageValidTimeDate( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to check for validity.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A true or false, to indicate whether a valid time has been
|
|
// loaded into the mTimeDate member of the ALStorage object.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALTimeDate::Valid() for the mTimeDate
|
|
// member of class ALStorage. This function checks its handle argument for
|
|
// correct type (in debug mode), then casts and calls
|
|
// ALTimeDate::Valid(). It returns the integer result back
|
|
// to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALTimeDate::Valid(). See TIMEDATE.H for the details on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
extern "C" int AL_FUNCTION ALStorageValidTimeDate( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageValidTimeDate" );
|
|
return ( (ALStorage *) this_object )->mTimeDate.Valid();
|
|
}
|
|
|
|
|
|
//
|
|
// extern "C" DWORD ALStorageGetWin32Attributes( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get the Win32s file attributes for.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A DWORD containing the Win32s attributes for the selected
|
|
// storage object. The attributes are in the format needed
|
|
// by the SetFileAttributes() function.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALFileAttributes::GetWin32Attributes() for the
|
|
// mAttributes member of class ALStorage. This function checks its handle
|
|
// argument for correct type (in debug mode), then casts and calls
|
|
// ALAttributes::GetWin32Attributes(). It returns the long result back
|
|
// to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALAttributes::GetWin32Attributes). See FILEATTR.CPP for the details
|
|
// on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
#if defined( AL_WIN32S )
|
|
extern "C" DWORD AL_FUNCTION
|
|
ALStorageGetWin32Attributes( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetWin32Attributes" );
|
|
return ( (ALStorage *) this_object )->mAttributes.GetWin32Attributes();
|
|
}
|
|
#endif
|
|
|
|
//
|
|
// extern "C" unsigned short int
|
|
// ALStorageGetDosAttributes( hALStorage this_object )
|
|
//
|
|
// ARGUMENTS:
|
|
//
|
|
// this_object : A handle for (pointer to) the storage object that
|
|
// you want to get the DOS file attributes for.
|
|
//
|
|
// RETURNS
|
|
//
|
|
// A short int containing the DOS attributes for the selected
|
|
// storage object. The attributes are returned in the format
|
|
// needed by the _dos_setfileattr() function.
|
|
//
|
|
// DESCRIPTION
|
|
//
|
|
// This is the C/VB translation routine that allows you to access the
|
|
// C++ member function ALFileAttributes::GetDosAttributes() for the
|
|
// mAttributes member of class ALStorage. This function checks its handle
|
|
// argument for correct type (in debug mode), then casts and calls
|
|
// ALAttributes::GetDosAttributes(). It returns the short result back
|
|
// to the calling procedure unchanged.
|
|
//
|
|
// The C/VB translation code doesn't offer much insight into the operation
|
|
// of ALAttributes::GetDosAttributes). See FILEATTR.CPP for the details
|
|
// on that.
|
|
//
|
|
// REVISION HISTORY
|
|
//
|
|
// May 25, 1994 1.0A : First release
|
|
//
|
|
|
|
#if !defined( AL_WIN32S )
|
|
extern "C" unsigned short int AL_FUNCTION
|
|
ALStorageGetDosAttributes( hALStorage this_object )
|
|
{
|
|
AL_ASSERT_OBJECT( this_object, ALStorage, "ALStorageGetDosAttributes" );
|
|
return ( (ALStorage *) this_object )->mAttributes.GetDosAttributes();
|
|
}
|
|
#endif
|
|
|