Since at the time of this writing Booleans are not part of the C specifications, I've created my own.
typedef enum
{
DLL_FALSE,
DLL_TRUE
} DLL_Boolean;
Many functions return the typedef enumerated type DLL_Return as shown below.
typedef enum
{
DLL_NORMAL, /* normal operation */
DLL_MEM_ERROR, /* malloc error */
DLL_ZERO_INFO, /* sizeof(Info) is zero */
DLL_NULL_LIST, /* List is NULL */
DLL_NOT_FOUND, /* Record not found */
DLL_OPEN_ERROR, /* Cannot open file */
DLL_WRITE_ERROR, /* File write error */
DLL_READ_ERROR, /* File read error */
DLL_NOT_MODIFIED, /* Unmodified list */
DLL_NULL_FUNCTION /* NULL function pointer */
} DLL_Return;
The next two enumerations are used to determine the state of search inquiries: one is used to determine the origin and the other for the direction. These values are passed as arguments to the DLL_SetSearchModes function.
typedef enum
{
DLL_ORIGIN_DEFAULT, /* Use current origin setting */
DLL_HEAD, /* Set origin to head pointer */
DLL_CURRENT, /* Set origin to current pointer */
DLL_TAIL /* Set origin to tail pointer */
} DLL_SrchOrigin;
typedef enum
{
DLL_DIRECTION_DEFAULT, /* Use current direction setting */
DLL_DOWN, /* Set direction to down */
DLL_UP /* Set direction to up */
} DLL_SrchDir;
The last enumerated type is used to determine the direction of insertion or the swapping of a record. This structure is passed as an argument to two functions, DLL_InsertRecord and DLL_SwapRecord.
typedef enum
{
DLL_INSERT_DEFAULT, /* Does nothing legacy value--don't use it */
DLL_ABOVE, /* Insert new record ABOVE current record toward head */
DLL_BELOW /* Insert new record BELOW current record toward tail */
} DLL_InsertDir;
Carl J. Nobile 2012-01-17