User Tools

Site Tools


haas:spring2015:data:projects:dll0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
haas:spring2015:data:projects:dll0 [2015/04/02 12:43] – [Errata] wedgehaas:spring2015:data:projects:dll0 [2015/04/04 22:59] (current) – [Errata] wedge
Line 13: Line 13:
   * __revision 1__: looks like I forgot to include the node unit tests, here they are (20150331)   * __revision 1__: looks like I forgot to include the node unit tests, here they are (20150331)
     * there was a mild typo in the **inc/node.h** header file (FIXED)     * there was a mild typo in the **inc/node.h** header file (FIXED)
 +      * the parameter to mknode() was incorrectly an int, it should be a char
     * updated unit-mklist to check for proper list return status codes     * updated unit-mklist to check for proper list return status codes
 +    * updated unit-display to check for proper list return status codes
 +  * __revision 2__: updated unit tests to support error condition status (20150402)
 +    * unit-display had a typo (FIXED)
 +    * unit-insert is now ready to go
 +    * unit-append should also be good to go
 +    * quieted compiler warnings for unit-cplist and unit-find (still need to finish)
 +  * __revision 3__: updated more unit tests to support error condition status (20150403)
 +    * unit-find is now operational and conformant to error condition status checking
 +    * there was a bug with checking for a DLL_SUCCESS result, this resulted in fixes to:
 +      * unit-display
 +      * unit-insert
 +      * unit-append
 +    * I've disabled the cplist unit test and verify-list does not try to run it (so you won't be impeded by its current unfinished state)
 +    * new options in base Makefile:
 +      * "reupdate", which re-applies last revision
 +      * "reupdate-all", which re-applies all revisions, from 1 to current
 +      * various backend infrastructure tweaks (because I deserve nice things)
 +  * __revision 4__: unit-cplist is now fully operational (20150404)
 +    * also did some house cleaning in list unit Makefile
 =====Objective===== =====Objective=====
 In this project, we take our first opportunity to undergo a complete code re-write of linked list functionality, while we implement our first doubly linked list. In this project, we take our first opportunity to undergo a complete code re-write of linked list functionality, while we implement our first doubly linked list.
  
 +=====Procedure to Obtain dll0=====
 +As this is a rewrite, dll0 is not based on any of the code you have written up to this point. As such, the transition process is slightly different:
 +
 +<cli>
 +lab46:~/src/data/sll3$ make get-dll0
 +...
 +</cli>
 +
 +The "get-" functionality is distinct from the "upgrade-" you have been using to transition between the sll* projects. When you upgrade, your existing code is copied over, because the next project builds upon what you did previously.
 +
 +But when you "get" dll0, you are getting an entirely new project skeleton- NONE of your existing code is copied over (the structure has changed enough where copying your own code would have been rather problematic).
 +
 +Once you run "**make get-dll0**" you should have a **dll0** directory that you can access and commence working on just as you have with the other project directories.
 =====Project Overview===== =====Project Overview=====
  
Line 35: Line 68:
 typedef struct node Node; typedef struct node Node;
  
-Node *mknode(int   );     // allocate new node containing value+Node *mknode(char  );     // allocate new node containing value
 Node *cpnode(Node *);     // duplicate node Node *cpnode(Node *);     // duplicate node
 Node *rmnode(Node *);     // deallocate node Node *rmnode(Node *);     // deallocate node
Line 88: Line 121:
  
 There is now a set of status/error codes that will be utilized as list function return values, so we can better report particular failures. There is now a set of status/error codes that will be utilized as list function return values, so we can better report particular failures.
 +
 +====list operation status codes====
 +You'll notice the presence of a set of #define's in the list header file. These are intended to be used to report on various states of list status after performing various operations.
 +
 +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, average case
 +  * **DLL_MALLOC_FAIL** - memory allocation failed (considered in error)
 +  * **DLL_ALREADY_ALLOC** - memory has already been allocated (considered in error)
 +  * **DLL_NULL** - result is NULL (probably in error)
 +  * **DLL_EMPTY** - result is an empty list (may or may not be in error)
 +  * **DLL_DEFAULT_FAIL** - default state of unimplemented functions (default error)
 +  * **DLL_FAIL** - some error occurred
 +
 +For example, in the case of "DLL_MALLOC_FAIL", there are actually a total of three states raised:
 +  * DLL_FAIL (a problem has occurred)
 +  * DLL_MALLOC_FAIL (a problem has occurred when using malloc())
 +  * DLL_NULL (no memory allocated, so list cannot be anything but NULL)
 +
 +ALL THREE states must be returned from the function in question should such an occurrence take place.
 ====list library==== ====list library====
 In **src/node/**, you will find skeletons of what was previously there, ready for you to re-implement. In **src/node/**, you will find skeletons of what was previously there, ready for you to re-implement.
Line 101: Line 154:
  
   * **unit-mklist.c** - unit test for **mklist()** library function   * **unit-mklist.c** - unit test for **mklist()** library function
 +  * **unit-cplist.c** - unit test for **cplist()** library function
   * **unit-append.c** - unit test for **append()** library function   * **unit-append.c** - unit test for **append()** library function
   * **unit-insert.c** - unit test for **insert()** library function   * **unit-insert.c** - unit test for **insert()** library function
Line 152: Line 206:
 =    Verifying Doubly-Linked List Functionality    = =    Verifying Doubly-Linked List Functionality    =
 ==================================================== ====================================================
-  [mklist] Total:   5, Matches:   5, Mismatches:   0 +  [mklist] Total:  11, Matches:  11, Mismatches:   0 
-  [cplist] Total:  30, Matches:  30, Mismatches:   0 +  [cplist] Total:  17, Matches:  17, Mismatches:   0 
-  [append] Total:  11, Matches:  11, Mismatches:   0 +  [append] Total:  22, Matches:  22, Mismatches:   0 
-  [insert] Total:  11, Matches:  11, Mismatches:   0 +  [insert] Total:  22, Matches:  22, Mismatches:   0 
- [display] Total:   6, Matches:   6, Mismatches:   0 + [display] Total:  12, Matches:  12, Mismatches:   0 
-    [find] Total:  11, Matches:  11, Mismatches:   0+    [find] Total:  28, Matches:  28, Mismatches:   0
 ==================================================== ====================================================
- [RESULTS] Total: 102, Matches: 102, Mismatches:   0+ [RESULTS] Total: 112, Matches: 112, Mismatches:   0
 ==================================================== ====================================================
 lab46:~/src/data/dll0$  lab46:~/src/data/dll0$ 
haas/spring2015/data/projects/dll0.1427978633.txt.gz · Last modified: 2015/04/02 12:43 by wedge