[NTOSKRNL] Ignore IMAGE_SCN_CNT_UNINITIALIZED_DATA
[reactos.git] / base / setup / lib / inicache.h
1 /*
2 * PROJECT: ReactOS Setup Library
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: INI file parser that caches contents of INI file in memory.
5 * COPYRIGHT: Copyright 2002-2018 Royce Mitchell III
6 */
7
8 #pragma once
9
10 typedef struct _INICACHEKEY
11 {
12 PWCHAR Name;
13 PWCHAR Data;
14
15 struct _INICACHEKEY *Next;
16 struct _INICACHEKEY *Prev;
17 } INICACHEKEY, *PINICACHEKEY;
18
19
20 typedef struct _INICACHESECTION
21 {
22 PWCHAR Name;
23
24 PINICACHEKEY FirstKey;
25 PINICACHEKEY LastKey;
26
27 struct _INICACHESECTION *Next;
28 struct _INICACHESECTION *Prev;
29 } INICACHESECTION, *PINICACHESECTION;
30
31
32 typedef struct _INICACHE
33 {
34 PINICACHESECTION FirstSection;
35 PINICACHESECTION LastSection;
36 } INICACHE, *PINICACHE;
37
38
39 typedef struct _PINICACHEITERATOR
40 {
41 PINICACHESECTION Section;
42 PINICACHEKEY Key;
43 } INICACHEITERATOR, *PINICACHEITERATOR;
44
45
46 typedef enum
47 {
48 INSERT_FIRST,
49 INSERT_BEFORE,
50 INSERT_AFTER,
51 INSERT_LAST
52 } INSERTION_TYPE;
53
54 /* FUNCTIONS ****************************************************************/
55
56 NTSTATUS
57 IniCacheLoadFromMemory(
58 PINICACHE *Cache,
59 PCHAR FileBuffer,
60 ULONG FileLength,
61 BOOLEAN String);
62
63 NTSTATUS
64 IniCacheLoad(
65 PINICACHE *Cache,
66 PWCHAR FileName,
67 BOOLEAN String);
68
69 VOID
70 IniCacheDestroy(
71 PINICACHE Cache);
72
73 PINICACHESECTION
74 IniCacheGetSection(
75 PINICACHE Cache,
76 PWCHAR Name);
77
78 NTSTATUS
79 IniCacheGetKey(
80 PINICACHESECTION Section,
81 PWCHAR KeyName,
82 PWCHAR *KeyData);
83
84 PINICACHEITERATOR
85 IniCacheFindFirstValue(
86 PINICACHESECTION Section,
87 PWCHAR *KeyName,
88 PWCHAR *KeyData);
89
90 BOOLEAN
91 IniCacheFindNextValue(
92 PINICACHEITERATOR Iterator,
93 PWCHAR *KeyName,
94 PWCHAR *KeyData);
95
96 VOID
97 IniCacheFindClose(
98 PINICACHEITERATOR Iterator);
99
100
101 PINICACHEKEY
102 IniCacheInsertKey(
103 PINICACHESECTION Section,
104 PINICACHEKEY AnchorKey,
105 INSERTION_TYPE InsertionType,
106 PWCHAR Name,
107 PWCHAR Data);
108
109 PINICACHE
110 IniCacheCreate(VOID);
111
112 NTSTATUS
113 IniCacheSave(
114 PINICACHE Cache,
115 PWCHAR FileName);
116
117 PINICACHESECTION
118 IniCacheAppendSection(
119 PINICACHE Cache,
120 PWCHAR Name);
121
122 /* EOF */