[SETUPLIB][USETUP] Introduce a 'SetupLib' library. CORE-13544
[reactos.git] / base / setup / lib / genlist.h
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 2004-2018 Eric Kohl
6 * Copyright 2008-2018 Christoph von Wittich <christoph at reactos.org>
7 */
8
9 #pragma once
10
11 typedef struct _GENERIC_LIST_ENTRY
12 {
13 LIST_ENTRY Entry;
14 struct _GENERIC_LIST* List;
15 PVOID UserData;
16 CHAR Text[1]; // FIXME: UI stuff
17
18 } GENERIC_LIST_ENTRY, *PGENERIC_LIST_ENTRY;
19
20 typedef struct _GENERIC_LIST
21 {
22 LIST_ENTRY ListHead;
23 ULONG NumOfEntries;
24
25 PGENERIC_LIST_ENTRY CurrentEntry;
26 PGENERIC_LIST_ENTRY BackupEntry;
27
28 } GENERIC_LIST, *PGENERIC_LIST;
29
30
31 PGENERIC_LIST
32 CreateGenericList(VOID);
33
34 VOID
35 DestroyGenericList(
36 IN OUT PGENERIC_LIST List,
37 IN BOOLEAN FreeUserData);
38
39 BOOLEAN
40 AppendGenericListEntry(
41 IN OUT PGENERIC_LIST List,
42 IN PCHAR Text,
43 IN PVOID UserData,
44 IN BOOLEAN Current);
45
46 VOID
47 SetCurrentListEntry(
48 IN PGENERIC_LIST List,
49 IN PGENERIC_LIST_ENTRY Entry);
50
51 PGENERIC_LIST_ENTRY
52 GetCurrentListEntry(
53 IN PGENERIC_LIST List);
54
55 PGENERIC_LIST_ENTRY
56 GetFirstListEntry(
57 IN PGENERIC_LIST List);
58
59 PGENERIC_LIST_ENTRY
60 GetNextListEntry(
61 IN PGENERIC_LIST_ENTRY Entry);
62
63 PVOID
64 GetListEntryUserData(
65 IN PGENERIC_LIST_ENTRY Entry);
66
67 LPCSTR
68 GetListEntryText(
69 IN PGENERIC_LIST_ENTRY Entry);
70
71 ULONG
72 GetNumberOfListEntries(
73 IN PGENERIC_LIST List);
74
75 VOID
76 SaveGenericListState(
77 IN PGENERIC_LIST List);
78
79 VOID
80 RestoreGenericListState(
81 IN PGENERIC_LIST List);
82
83 BOOLEAN
84 GenericListHasSingleEntry(
85 IN PGENERIC_LIST List);
86
87 /* EOF */