Reactos
1/*
2 * PROJECT: ReactOS Setup Library
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Generic list functions
5 * COPYRIGHT: Copyright 2008-2018 Christoph von Wittich <christoph at reactos.org>
6 */
7
8#pragma once
9
10typedef struct _GENERIC_LIST_ENTRY
11{
12 LIST_ENTRY Entry;
13 struct _GENERIC_LIST* List;
14 PVOID Data;
15 ULONG_PTR UiData; // Cache variable for any UI list that displays these items
16} GENERIC_LIST_ENTRY, *PGENERIC_LIST_ENTRY;
17
18typedef struct _GENERIC_LIST
19{
20 LIST_ENTRY ListHead;
21 ULONG NumOfEntries;
22 PGENERIC_LIST_ENTRY CurrentEntry;
23} GENERIC_LIST, *PGENERIC_LIST;
24
25
26PGENERIC_LIST
27NTAPI
28CreateGenericList(VOID);
29
30VOID
31NTAPI
32DestroyGenericList(
33 IN OUT PGENERIC_LIST List,
34 IN BOOLEAN FreeData);
35
36BOOLEAN
37NTAPI
38AppendGenericListEntry(
39 IN OUT PGENERIC_LIST List,
40 IN PVOID Data,
41 IN BOOLEAN Current);
42
43VOID
44NTAPI
45SetCurrentListEntry(
46 IN PGENERIC_LIST List,
47 IN PGENERIC_LIST_ENTRY Entry);
48
49PGENERIC_LIST_ENTRY
50NTAPI
51GetCurrentListEntry(
52 IN PGENERIC_LIST List);
53
54PGENERIC_LIST_ENTRY
55NTAPI
56GetFirstListEntry(
57 IN PGENERIC_LIST List);
58
59PGENERIC_LIST_ENTRY
60NTAPI
61GetNextListEntry(
62 IN PGENERIC_LIST_ENTRY Entry);
63
64PVOID
65NTAPI
66GetListEntryData(
67 IN PGENERIC_LIST_ENTRY Entry);
68
69ULONG_PTR
70GetListEntryUiData(
71 IN PGENERIC_LIST_ENTRY Entry);
72
73ULONG
74NTAPI
75GetNumberOfListEntries(
76 IN PGENERIC_LIST List);
77
78/* EOF */