ucx/list.h

Sat, 20 Jul 2013 11:13:26 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 20 Jul 2013 11:13:26 +0200
changeset 120
8170f658f017
parent 103
08018864fb91
permissions
-rw-r--r--

some fixes

2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 /*
103
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.
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27 */
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28
120
8170f658f017 some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 103
diff changeset
29 #ifndef UCX_LIST_H
8170f658f017 some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 103
diff changeset
30 #define UCX_LIST_H
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31
6
50b5fe7c577f Fixed fatal super bug
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
32 #include "ucx.h"
50b5fe7c577f Fixed fatal super bug
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
33 #include <stddef.h>
50b5fe7c577f Fixed fatal super bug
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
34
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 #ifdef __cplusplus
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36 extern "C" {
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 #endif
26
59f147baea31 added test framework and foreach macro
Mike Becker <universe@uap-core.de>
parents: 23
diff changeset
38
5
a1740117e2b7 added list specification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 2
diff changeset
39 typedef struct UcxList UcxList;
a1740117e2b7 added list specification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 2
diff changeset
40 struct UcxList {
a1740117e2b7 added list specification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 2
diff changeset
41 void *data;
a1740117e2b7 added list specification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 2
diff changeset
42 UcxList *next;
a1740117e2b7 added list specification
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 2
diff changeset
43 };
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44
87
bd444539cced some fixes + ucx_(d)list_contains
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
45 UcxList *ucx_list_clone(UcxList *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
46 int ucx_list_equals(const UcxList *l1, const UcxList *l2,
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
47 cmp_func fnc, void *data);
18
69636f81db31 added clone and equals to lists
Mike Becker <universe@uap-core.de>
parents: 12
diff changeset
48
12
fe50a85e69e7 Added list tests2
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 9
diff changeset
49 void ucx_list_free(UcxList *l);
6
50b5fe7c577f Fixed fatal super bug
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
50 UcxList *ucx_list_append(UcxList *l, void *data);
50b5fe7c577f Fixed fatal super bug
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 5
diff changeset
51 UcxList *ucx_list_prepend(UcxList *l, void *data);
93
a6a99e721660 removed brain-afk code
Mike Becker <universe@uap-core.de>
parents: 87
diff changeset
52 UcxList *ucx_list_concat(UcxList *l1, UcxList *l2);
67
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
53 UcxList *ucx_list_last(const UcxList *l);
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
54 UcxList *ucx_list_get(const UcxList *l, int index);
27e67e725d35 added some qualifiers + removed pointer alias in mergesort
Mike Becker <universe@uap-core.de>
parents: 36
diff changeset
55 size_t ucx_list_size(const UcxList *l);
87
bd444539cced some fixes + ucx_(d)list_contains
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
56 int ucx_list_contains(UcxList *l, void *elem, cmp_func fnc, void *cmpdata);
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
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
58 UcxList *ucx_list_sort(UcxList *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
59
23
ccc294fafb9b added ucx_list_remove
Mike Becker <universe@uap-core.de>
parents: 18
diff changeset
60 /* list specific functions */
ccc294fafb9b added ucx_list_remove
Mike Becker <universe@uap-core.de>
parents: 18
diff changeset
61 UcxList *ucx_list_remove(UcxList *l, UcxList *e);
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63 #ifdef __cplusplus
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 }
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 #endif
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66
120
8170f658f017 some fixes
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 103
diff changeset
67 #endif /* UCX_LIST_H */
2
79646375a420 Added some source files
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68

mercurial