📄 mmuslist.cpp
字号:
/*\t*******************************************************************/
/* Creation Date ....... Tue 08-10-1993 21:57:27 */
/* Filename ........... mmuslist.cpp */
/* Project ............. Memory Management */
/* Author ............. Matthew J. W. Ratcliff */
/* Language ........... C++ */
/* Operating System ... DOS/Windows */
/* Processor .......... MMU - Memory Management Utilities */
/* Function: String linked list package. */
/* This subclasses MMUslist to create a linked list */
/* specific to null terminated strings! */
/*\t*******************************************************************/
/*\r********************************************************************
** Revision History
***********************************************************************/
/*
Date By Change Description
dd-mmm-yy nnn text
--------- ---- -----------------------------------------------
10-Aug-93 MJWR Sublcass MMUllist to create a linked list
package specific to null terminated C string
storage.
**\r*/
/*\i********************************************************************
** Module Include Files
***********************************************************************/
/*********************** System Include Files *************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/********************** Constant Include Files ************************/
#include "liidSys.h"
#include "mmplist.h"
/***************** External Variable Include Files ********************/
/***************** External Procedure Include Files *******************/
#include "liustrg.h"
#include "mmulist.h"
#include "mmuslist.h"
/*\i*/
/*\m********************************************************************
** Module Declarations
***********************************************************************/
/************************* Module Constants ***************************/
/************************* Module Variables ***************************/
/************************* Module Procedures **************************/
/*\m*/
/*\p********************************************************************
** **
** **
NAME: MMUslist::InsertBeforeHead
PURPOSE: to insert a new string before the head of the list.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlErr FNC (SUCCEEDED_ / FAILED_) error return **
**\p*******************************************************************/
STAT_TYPE MMUslist::InsertBeforeHead( char *pasBufPtr )
{ /* MMUslist::InsertBeforeHead procedure */
/******************* Local Variable Declarations **********************/
STAT_TYPE mmlErr;
/************************* Procedure Body *****************************/
if (pasBufPtr)
{
mmlErr = MMUllist::InsertBeforeHead( (INT32)strlen(pasBufPtr)+1,
(void *)pasBufPtr );
}
else
{
mmlErr = FAILED_;
// bad parameter
}
return(mmlErr);
} /* MMUslist::InsertBeforeHead end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::AppendAfterTail
PURPOSE: to insert a new entry after the end of the list.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlErr FNC (SUCCEEDED_ / FAILED_) error return **
**\p*******************************************************************/
STAT_TYPE MMUslist::AppendAfterTail( char *pasBufPtr )
{ /* MMUslist::AppendAfterTail procedure */
/******************* Local Constant Declarations **********************/
/* Proc name for error log */
//CHARPTR MML_PROC_NAME = "MMUslist::AppendAfterTail";
/******************* Local Variable Declarations **********************/
STAT_TYPE mmlErr;
/************************* Procedure Body *****************************/
if (pasBufPtr)
{
mmlErr = MMUllist::AppendAfterTail( (INT32)strlen(pasBufPtr)+1,
(void *)pasBufPtr );
}
else
{ // parameter error
mmlErr = FAILED_;
}
return(mmlErr);
} /* MMUslist::AppendAfterTail end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::InsertBeforeCurrent
PURPOSE: to insert a new entry before the current entry in
the list.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlErr FNC (SUCCEEDED_ / FAILED_) error return **
**\p*******************************************************************/
STAT_TYPE MMUslist::InsertBeforeCurrent( char *pasBufPtr )
{ /* MMUslist::InsertBeforeCurrent procedure */
/******************* Local Variable Declarations **********************/
STAT_TYPE mmlErr;
/************************* Procedure Body *****************************/
if (pasBufPtr)
{
mmlErr = MMUllist::InsertBeforeCurrent( (INT32)strlen(pasBufPtr)+1,
(void *)pasBufPtr );
}
else
{
mmlErr = FAILED_; // parameter error
}
return(mmlErr);
} /* MMUslist::InsertBeforeCurrent end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::First
PURPOSE: to return the address of the first data item
in the list. On error return NULL.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::First( )
{ /* MMUslist::First procedure */
/******************* Local Constant Declarations **********************/
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::First();
if (mmlDatum)
{
mmlDat = (char *)mmlDatum->body;
}
return(mmlDat);
} /* MMUslist::First end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::Last
PURPOSE: to return the address of the last string
in the list. On error return NULL.
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::Last( )
{ /* MMUslist::Last procedure */
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::Last();
if (mmlDatum)
{
mmlDat = (char *)mmlDatum->body;
}
return(mmlDat);
} /* MMUslist::Last end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::Next
PURPOSE: to return the address of the next data item
in the list. On error return NULL.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::Next( )
{ /* MMUslist::Next procedure */
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::Next();
if (mmlDatum)
{
mmlDat = (char *)mmlDatum->body;
}
return(mmlDat);
} /* MMUslist::Next end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::Prev
PURPOSE: to return the address of the previous data item
in the list. On error return NULL.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::Prev( )
{ /* MMUslist::Prev procedure */
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::Prev();
if (mmlDatum)
{
mmlDat = (char *)mmlDatum->body;
}
return(mmlDat);
} /* MMUslist::Prev end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::Current
PURPOSE: to return the address of the current data item
in the list. On error return NULL.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::Current( )
{ /* MMUslist::Current procedure */
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::Current();
if (mmlDatum)
{
mmlDat = (char *)mmlDatum->body;
}
return(mmlDat);
} /* MMUslist::Current end */
/*\p********************************************************************
** **
** **
NAME: MMUslist::Indexed
PURPOSE: to return the address of the indexed data item
in the list. On error return NULL.
** **
** **
** INTERFACE DEFINITION: **
** variable def. expected/description **
** ------------ ----- ------------------------------------- **
** mmlDat FNC char *, address of data buffer **
**\p*******************************************************************/
char *MMUslist::Indexed( INT32 pasIndex )
{ /* MMUslist::Indexed procedure */
/******************* Local Variable Declarations **********************/
MMP_DATA_TY *mmlDatum;
char *mmlDat = NULL;
/************************* Procedure Body *****************************/
mmlDatum = MMUllist::Indexed( pasIndex );
if (mmlDatum)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -