ucx/dlist.h

Mon, 15 Jul 2013 14:25:50 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 15 Jul 2013 14:25:50 +0200
changeset 111
c8c59d7f4536
parent 103
08018864fb91
child 120
8170f658f017
permissions
-rw-r--r--

new map foreach macro

103
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
1 /*
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
3 *
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
4 * Copyright 2013 Olaf Wintermann. All rights reserved.
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
5 *
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
6 * Redistribution and use in source and binary forms, with or without
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
7 * modification, are permitted provided that the following conditions are met:
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
8 *
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
10 * notice, this list of conditions and the following disclaimer.
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
11 *
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
14 * documentation and/or other materials provided with the distribution.
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
15 *
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
08018864fb91 added license and copyright notice to all files
Mike Becker <universe@uap-core.de>
parents: 93
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #ifndef DLIST_H
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 #define DLIST_H
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31
7
68091406d1cf added dlist to makefile, implemented first functions, discarded some fails
Mike Becker <universe@uap-core.de>
parents: 4
diff changeset
32 #include "ucx.h"
68091406d1cf added dlist to makefile, implemented first functions, discarded some fails
Mike Becker <universe@uap-core.de>
parents: 4
diff changeset
33 #include <stddef.h>
68091406d1cf added dlist to makefile, implemented first functions, discarded some fails
Mike Becker <universe@uap-core.de>
parents: 4
diff changeset
34
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35 #ifdef __cplusplus
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 extern "C" {
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 #endif
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 typedef struct UcxDlist UcxDlist;
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40 struct UcxDlist {
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 void *data;
93
a6a99e721660 removed brain-afk code
Mike Becker <universe@uap-core.de>
parents: 87
diff changeset
42 UcxDlist *next;
a6a99e721660 removed brain-afk code
Mike Becker <universe@uap-core.de>
parents: 87
diff changeset
43 UcxDlist *prev;
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44 };
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45
87
bd444539cced some fixes + ucx_(d)list_contains
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
46 UcxDlist *ucx_dlist_clone(UcxDlist *l, copy_func fnc, void* data);
67
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
47 int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2,
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
48 cmp_func fnc, void* data);
18
69636f81db31 added clone and equals to lists
Mike Becker <universe@uap-core.de>
parents: 8
diff changeset
49
8
9cd2b2460db0 completed dlist
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
50 void ucx_dlist_free(UcxDlist *l);
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 UcxDlist *ucx_dlist_append(UcxDlist *l, void *data);
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data);
93
a6a99e721660 removed brain-afk code
Mike Becker <universe@uap-core.de>
parents: 87
diff changeset
53 UcxDlist *ucx_dlist_concat(UcxDlist *l1, UcxDlist *l2);
67
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
54 UcxDlist *ucx_dlist_last(const UcxDlist *l);
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
55 UcxDlist *ucx_dlist_get(const UcxDlist *l, int index);
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
56 size_t ucx_dlist_size(const UcxDlist *l);
87
bd444539cced some fixes + ucx_(d)list_contains
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
57 int ucx_dlist_contains(UcxDlist *l, void *elem, cmp_func fnc, void *cmpdata);
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58
36
a9d656e4f7ce changed API of sort algorithms (no further hint for the algorithms used in preparation for the upcomming change from qsort to natural merge sort)
Mike Becker <universe@uap-core.de>
parents: 35
diff changeset
59 UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data);
35
fdabd1240b69 added mkdir for build directory to makefile + added qsort for list and dlist
Mike Becker <universe@uap-core.de>
parents: 27
diff changeset
60
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61 /* dlist specific functions */
67
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
62 UcxDlist *ucx_dlist_first(const UcxDlist *l);
22
76cdd8209f1f added ucx_dlist_remove and tests + fixed makefile error
Mike Becker <universe@uap-core.de>
parents: 18
diff changeset
63 UcxDlist *ucx_dlist_remove(UcxDlist *l, UcxDlist *e);
4
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65 #ifdef __cplusplus
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
66 }
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
67 #endif
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
68
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
69 #endif /* DLIST_H */
dbc31727b38e added dlist specification
Mike Becker <universe@uap-core.de>
parents:
diff changeset
70

mercurial