This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
haas:summer2015:data:projects:dln0 [2015/06/21 14:08] – l wedge | haas:summer2015:data:projects:dln0 [2015/06/21 20:51] (current) – [node operation status codes] wedge | ||
---|---|---|---|
Line 84: | Line 84: | ||
# | # | ||
# | # | ||
- | # | + | # |
- | # | + | # |
// Function prototypes | // Function prototypes | ||
Line 93: | Line 93: | ||
#endif | #endif | ||
</ | </ | ||
- | ====In inc/ | ||
- | <code c 1> | + | ====node operation status codes==== |
- | #ifndef _LIST_H | + | You'll notice the presence of a set of # |
- | #define _LIST_H | + | |
- | + | ||
- | #include " | + | |
- | + | ||
- | # | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | # | + | |
- | + | ||
- | struct list { | + | |
- | Node *first; | + | |
- | Node *last; | + | |
- | }; | + | |
- | typedef struct list List; // because we deserve nice things | + | |
- | + | ||
- | int mklist (List **); // create/ | + | |
- | int cplist (List *, List **); // duplicate list contents | + | |
- | + | ||
- | int insert (List **, Node *, Node *); // add node before given node | + | |
- | int append (List **, Node *, Node *); // add node after given node | + | |
- | + | ||
- | int display(List *, int); // display list from start to end | + | |
- | int find (List *, int, Node **); // locate node containing value | + | |
- | + | ||
- | #endif | + | |
- | </ | + | |
- | + | ||
- | The following changes have taken place: | + | |
- | + | ||
- | * **qty** has been removed from the list | + | |
- | * **getpos()**/ | + | |
- | * **searchlist()** has been renamed to **find()** (aesthetic change, to keep function names at 8 characters or less, and now supports resuming (finding additional matches). | + | |
- | * **displayf()/ | + | |
- | + | ||
- | There is now a set of status/ | + | |
- | + | ||
- | ====list operation status codes==== | + | |
- | You'll notice the presence of a set of # | + | |
They are not exclusive- in some cases, multiple states can be applied. The intent is that you will OR together all pertinent states and return that from the function. | They are not exclusive- in some cases, multiple states can be applied. The intent is that you will OR together all pertinent states and return that from the function. | ||
- | * **DLL_SUCCESS** - everything went according to plan, no errors encountered, | + | * **DLN_SUCCESS** - everything went according to plan, no errors encountered, |
- | * **DLL_MALLOC_FAIL** - memory allocation failed (considered in error) | + | * **DLN_MALLOC_FAIL** - memory allocation failed (considered in error) |
- | * **DLL_ALREADY_ALLOC** - memory has already been allocated (considered in error) | + | * **DLN_ALREADY_ALLOC** - memory has already been allocated (considered in error) |
- | * **DLL_NULL** - result is NULL (probably in error) | + | * **DLN_NULL** - result is NULL (probably in error) |
- | * **DLL_EMPTY** - result is an empty list (may or may not be in error) | + | * **DLN_DEFAULT_FAIL** - default state of unimplemented functions |
- | * **DLL_DEFAULT_FAIL** - default state of unimplemented functions (default | + | * **DLN_ERROR** - some error occurred |
- | * **DLL_FAIL** - some error occurred | + | * **DLN_INVALID** - invalid use (NULL pointer) |
+ | * **DLN_RESERVED_CODE** - reserved for future use (not used at present time) | ||
- | For example, in the case of "DLL_MALLOC_FAIL", there are actually a total of three states raised: | + | For example, in the case of "DLN_MALLOC_FAIL", there are actually a total of three states raised: |
- | * DLL_FAIL | + | * DLN_ERROR |
- | * DLL_MALLOC_FAIL | + | * DLN_MALLOC_FAIL |
- | * DLL_NULL | + | * DLN_NULL |
ALL THREE states must be returned from the function in question should such an occurrence take place. | ALL THREE states must be returned from the function in question should such an occurrence take place. | ||
+ | |||
+ | You'll notice these #defines map to numeric values, and particular ones at that. This is to our supreme advantage: if you understand how numbers work, you should have an easy time of working with these status codes. | ||
====node library==== | ====node library==== | ||
In **src/ | In **src/ | ||
Line 174: | Line 135: | ||
= Verifying Doubly-Linked Node Functionality | = Verifying Doubly-Linked Node Functionality | ||
==================================================== | ==================================================== | ||
- | | + | [mknode] Total: |
- | [cpnode] Total: | + | |
- | [rmnode] Total: | + | |
==================================================== | ==================================================== | ||
- | [RESULTS] Total: | + | [RESULTS] Total: |
==================================================== | ==================================================== | ||
lab46: | lab46: |