25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
26 * POSSIBILITY OF SUCH DAMAGE. |
26 * POSSIBILITY OF SUCH DAMAGE. |
27 */ |
27 */ |
28 |
28 |
29 #include "cx/linked_list.h" |
29 #include "cx/linked_list.h" |
30 #include <stddef.h> |
|
31 |
30 |
32 /* LOW LEVEL LINKED LIST FUNCTIONS */ |
31 /* LOW LEVEL LINKED LIST FUNCTIONS */ |
33 |
32 |
34 #define CX_LL_PTR(cur, off) ((void**)(((char*)cur)+off)) |
33 #define CX_LL_PTR(cur, off) ((void**)(((char*)cur)+off)) |
35 |
34 |
36 void *cx_linked_list_last(void **begin, void **end, off_t loc_next) { |
35 void *cx_linked_list_last(void **begin, void **end, ptrdiff_t loc_next) { |
37 if (end != NULL) { |
36 if (end != NULL) { |
38 return *end; |
37 return *end; |
39 } else { |
38 } else { |
40 if (begin == NULL || *begin == NULL) |
39 if (begin == NULL || *begin == NULL) |
41 return NULL; |
40 return NULL; |
48 |
47 |
49 return last; |
48 return last; |
50 } |
49 } |
51 } |
50 } |
52 |
51 |
53 int cx_linked_list_add(void **begin, void **end, off_t loc_next, off_t loc_prev, void *newnode) { |
52 int cx_linked_list_add(void **begin, void **end, ptrdiff_t loc_next, ptrdiff_t loc_prev, void *newnode) { |
54 // TODO: how do we report error messages? |
53 // TODO: how do we report error messages? |
55 if (loc_next < 0 || (begin == NULL && end == NULL)) { |
54 if (loc_next < 0 || (begin == NULL && end == NULL)) { |
56 return 1; |
55 return 1; |
57 } |
56 } |
58 |
57 |