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

255 lines
5.7 KiB
C++
Executable File

//
// OBJNAME.INL
//
// Source file for ArchiveLib 2.0
// Inline function definitions
//
// Copyright (c) Greenleaf Software, Inc. 1994-1996
// All Rights Reserved
//
// CONTENTS
//
// ALName::GetName()
// ALName::GetOldName()
// operator<<( ostream& stream, const ALName &object )
//
// DESCRIPTION
//
// Inline functions for class ALGlCompressor and ALGlDecompressor.
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release
//
// NAME
//
// ALName::GetName()
//
// PLATFORMS/ENVIRONMENTS
//
// Console Windows PM
// C++
//
// SHORT DESCRIPTION
//
// Retrieve a character pointer from an object name
//
// C++ SYNOPSIS
//
// #include "arclib.h"
//
// const char * ALName::GetName() const
//
// C SYNOPSIS
//
// None.
//
// VB SYNOPSIS
//
// None.
//
// DELPHI SYNOPSIS
//
// None.
//
// ARGUMENTS
//
// None.
//
// DESCRIPTION
//
// To help make my life a little easier, storage object names are
// stored in the ALName class, instead of as raw strings. But sometimes
// you need a standard C character pointer, instead of an ALName object.
// For example, if you are calling a function such as fopen() that
// expects a character pointer. When that happens, we can use this
// function to retrieve a pointer to the real string inside the object.
// It returns a constant character pointer, which means you aren't allowed
// to jack with the contents of the string, good thing.
//
// Why is there no C translation version of this function? C can't deal
// with ALName objects very well, so I provide functions that return
// the name from a storage object directly, without having to track down
// the mName member of ALStorage first.
//
// RETURNS
//
// A character pointer pointing to the string inside the object. Note
// that under some circumstances, this could be a NULL pointer. ALName
// objects by default are created with no string at all.
//
// EXAMPLE
//
// SEE ALSO
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release
//
inline const char AL_DLL_FAR * AL_INLINE_PROTO
ALName::GetName() const /* Tag public function */
{
return mszName;
}
//
// NAME
//
// ALName::GetOldName()
//
// PLATFORMS/ENVIRONMENTS
//
// Console Windows PM
// C++
//
// SHORT DESCRIPTION
//
// Retrieve a character pointer from an old object name
//
// C++ SYNOPSIS
//
// #include "arclib.h"
//
// const char * ALName::GetOldName() const
//
// C SYNOPSIS
//
// None.
//
// VB SYNOPSIS
//
// None.
//
// DELPHI SYNOPSIS
//
// None.
//
// ARGUMENTS
//
// None.
//
// DESCRIPTION
//
// To help make my life a little easier, storage object names are
// stored in the ALName class, instead of as raw strings. But sometimes
// you need a standard C character pointer, instead of an ALName object.
// For example, if you are calling a function such as fopen() that
// expects a character pointer. When that happens, we can use this
// function to retrieve a pointer to the real string inside the object.
// It returns a constant character pointer, which means you aren't allowed
// to jack with the contents of the string, good thing.
//
// This function returns the old name contained in the ALName object,
// instead of the name itself. The old name gets updated whenever the
// main name changes.
//
// Why is there no C translation version of this function? C can't deal
// with ALName objects very well, so I provide functions that return
// the name from a storage object directly, without having to track down
// the mName member of ALStorage first.
//
// RETURNS
//
// A character pointer pointing to the string inside the object. Note
// that under some circumstances, this could be a NULL pointer. ALName
// objects by default are created with no string at all.
//
// EXAMPLE
//
// SEE ALSO
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release
//
inline const char AL_DLL_FAR * AL_INLINE_PROTO
ALName::GetOldName() const /* Tag public function */
{
return mszOldName;
}
//
// NAME
//
// ostream& operator<<( ostream&, const ALName &)
//
// PLATFORMS/ENVIRONMENTS
//
// Console Windows PM
// C++
//
// SHORT DESCRIPTION
//
// Sends an ALName object to an output stream.
//
// C++ SYNOPSIS
//
// #include "arclib.h"
//
// ostream& operator<<( ostream& stream,
// const ALName &object )
//
// C SYNOPSIS
//
// None.
//
// VB SYNOPSIS
//
// None.
//
// DELPHI SYNOPSIS
//
// None.
//
// ARGUMENTS
//
// stream : An I/O stream.
//
// object : A reference to an ALName object.
//
// DESCRIPTION
//
// This stream operator makes it easy to send ALName objects
// to an output stream. I need to define this function as inline,
// because it is tough to use far references to ostreams from a DLL.
// There are other problems associated with using this function
// in a DLL, and I don't understand them all.
//
// RETURNS
//
// A reference to the stream provided as an operator.
//
// EXAMPLE
//
// SEE ALSO
//
// REVISION HISTORY
//
// February 14, 1996 2.0A : New release
//
inline ostream&
operator<<( ostream& stream, const ALName AL_DLL_FAR &object ) /* Tag public function */
{
#if defined( AL_USING_DLL ) && !defined( AL_LARGE_MODEL ) && !defined( AL_FLAT_MODEL )
const char _far *p = (STRINGF) object;
char *near_string = new char[ _fstrlen( p ) + 1 ];
if ( near_string ) {
_fstrcpy( near_string, p );
stream << near_string;
delete near_string;
} else
stream << "Memory allocation failure!";
#else
stream << (STRINGF) object;
#endif
return stream;
}