1
2/*
3* Licensed Materials - Property of IBM
4*
5* trousers - An open source TCG Software Stack
6*
7* (C) Copyright International Business Machines Corp. 2006
8*
9*/
10
11#include <stdio.h>
12#include <stdlib.h>
13#include <list.h>
14
15#include "tsplog.h"
16
17list_ptr list_new( void) {
18	list_ptr list = (list_ptr)malloc( sizeof( list_struct));
19
20	if( list == NULL) return NULL;
21	list->head = NULL;
22	return list;
23}
24
25void list_add(list_ptr list, void *obj) {
26	list->current = (node_t *) malloc (sizeof(struct _list_t));
27	if (list->current == NULL) {
28		LogError("[list_add] malloc of %d bytes failed", sizeof(struct _list_t));
29		return;
30	}
31	if( list->head == NULL) {
32		list->head = list->current;
33	} else
34		list->previous->next = list->current;
35	list->current->obj = obj;
36	list->current->next = NULL;
37	list->previous = list->current;
38}
39
40void list_dump(list_ptr list) {
41	node_t *current;
42
43	if( list->head == NULL) // if head has not been altered
44		puts("no data"); // list is empty
45	else {
46		current = list->head; // go to first node
47		do {
48			printf("%d\n", (int)current->obj); // print value at current node
49			current = current->next; // traverse through the list
50		} while(current != NULL); // until current node is NULL
51	}
52}
53
54void list_freeall(list_ptr list) {
55	node_t *current = list->head; // go to first node
56	node_t *next;
57
58	if( list->head != NULL) {
59		current = list->head; // go to first node
60		do {
61			next = current->next;
62			free(current);
63			current = next;
64		} while(current != NULL); // until current node is NULL
65	}
66}
67