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
 | 
						|
 |