184 lines
4.5 KiB
C
184 lines
4.5 KiB
C
|
/* TMemory2.h
|
||
|
*
|
||
|
* Copyright (c) 1994-1995 by DataBeam Corporation, Lexington, KY
|
||
|
*
|
||
|
* Abstract:
|
||
|
* This is a memory class used to manage a memory buffer. During
|
||
|
* instantiation, a buffer is allocated and a prepend value is passed in.
|
||
|
* The prepend value is used during the Append() call. All Append() calls
|
||
|
* are appended after the prepend value. A running length is also
|
||
|
* maintained. This class is good to use if you are going to build up a
|
||
|
* packet over time.
|
||
|
*
|
||
|
* If a packet overruns the max. buffer size, a new buffer is allocated and
|
||
|
* used.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*
|
||
|
* Authors:
|
||
|
* James W. Lawwill
|
||
|
*/
|
||
|
|
||
|
#ifndef _TMEMORY2_
|
||
|
#define _TMEMORY2_
|
||
|
|
||
|
#define MAXIMUM_NUMBER_REALLOC_FAILURES 10
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
TMEMORY_NO_ERROR,
|
||
|
TMEMORY_NONFATAL_ERROR,
|
||
|
TMEMORY_FATAL_ERROR,
|
||
|
TMEMORY_NO_DATA
|
||
|
}
|
||
|
TMemoryError, * PTMemoryError;
|
||
|
|
||
|
class TMemory
|
||
|
{
|
||
|
public:
|
||
|
TMemory (
|
||
|
ULong total_length,
|
||
|
UShort prepend_space,
|
||
|
PTMemoryError error);
|
||
|
~TMemory (
|
||
|
Void);
|
||
|
|
||
|
TMemoryError Append (
|
||
|
HPUChar address,
|
||
|
ULong length);
|
||
|
TMemoryError GetMemory (
|
||
|
HPUChar * address,
|
||
|
FPULong length);
|
||
|
Void Reset (
|
||
|
Void);
|
||
|
|
||
|
private:
|
||
|
ULong Default_Buffer_Size;
|
||
|
HPUChar Base_Buffer;
|
||
|
HPUChar Auxiliary_Buffer;
|
||
|
ULong Length;
|
||
|
DBBoolean Auxiliary_Buffer_In_Use;
|
||
|
UShort Prepend_Space;
|
||
|
UShort Fatal_Error_Count;
|
||
|
};
|
||
|
typedef TMemory * PTMemory;
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Documentation for Public class members
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* TMemory::TMemory (
|
||
|
* ULong total_length,
|
||
|
* UShort prepend_space,
|
||
|
* PTMemoryError error);
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This is the constructor for the TMemory class.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* total_length (i) - Length of the default buffer
|
||
|
* prepend_space (i) - Space to leave blank in the buffer
|
||
|
* error (o) - Returns an error value
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None.
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* TMemory::TMemory (
|
||
|
* Void)
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This is the destructor for the object.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* None.
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None.
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* TMemoryError TMemory::Append (
|
||
|
* HPUChar address,
|
||
|
* ULong length);
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This function appends the buffer passed in to the internal buffer.
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* address (i) - Address of buffer
|
||
|
* length (i) - Length of buffer
|
||
|
*
|
||
|
* Return Value:
|
||
|
* TMEMORY_NO_ERROR - No error
|
||
|
* TMEMORY_FATAL_ERROR - Fatal error occured, can't alloc a buffer
|
||
|
* TMEMORY_NONFATAL_ERROR - Buffer was not copied but it was not a
|
||
|
* fatal error
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* TMemoryError TMemory::GetMemory (
|
||
|
* HPUChar * address,
|
||
|
* FPULong length);
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This function returns the address and used length of our internal buffer
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* address (o) - Address of our internal buffer
|
||
|
* length (i) - Length of buffer
|
||
|
*
|
||
|
* Return Value:
|
||
|
* TMEMORY_NO_ERROR - No error
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Void TMemory::Reset (
|
||
|
* Void)
|
||
|
*
|
||
|
* Functional Description:
|
||
|
* This function resets the memory object. All data in the object is lost
|
||
|
*
|
||
|
* Formal Parameters:
|
||
|
* None
|
||
|
*
|
||
|
* Return Value:
|
||
|
* None
|
||
|
*
|
||
|
* Side Effects:
|
||
|
* None.
|
||
|
*
|
||
|
* Caveats:
|
||
|
* None.
|
||
|
*/
|
||
|
|