forked from petrSchreiber/thinBasic_iniFile
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIniFile_thinBASICInterface.inc
More file actions
140 lines (89 loc) · 3.64 KB
/
IniFile_thinBASICInterface.inc
File metadata and controls
140 lines (89 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
'
' IniFile thinBASIC interface
'
#INCLUDE "IniFile_Implementation.inc"
' -----------------------------------------------------------------------------
FUNCTION IniFile_LoadSymbols() AS LONG
LOCAL RetCode AS LONG
LOCAL pIniFile AS LONG
pIniFile = thinBasic_Class_Add("IniFile", 0)
IF pIniFile THEN
thinBasic_Class_AddMethod(pIniFile, "_Create", %thinBasic_ReturnNone , CODEPTR(IniFile_Create))
thinBasic_Class_AddMethod(pIniFile, "SetKey", %thinBasic_ReturnString, CODEPTR(IniFile_SetKey))
thinBasic_Class_AddMethod(pIniFile, "GetKey", %thinBasic_ReturnString, CODEPTR(IniFile_GetKey))
thinBasic_Class_AddMethod(pIniFile, "GetSections", %thinBasic_ReturnString, CODEPTR(IniFile_GetSections))
thinBasic_Class_AddMethod(pIniFile, "GetKeys", %thinBasic_ReturnString, CODEPTR(IniFile_GetKeys))
FUNCTION = 0
ELSE
FUNCTION = 1
END IF
END FUNCTION
' -----------------------------------------------------------------------------
SUB IniFile_Create(BYVAL pObject AS LONG)
LOCAL fileName AS STRING
IF thinBasic_CheckOpenParens_Mandatory() THEN
thinBasic_ParseString fileName
IF thinBasic_CheckCloseParens_Mandatory() AND thinBasic_ErrorFree() THEN
REDIM oObject(1& TO 1&) AS iIniFile AT pObject
oObject(1&) = CLASS "IniFile"
oObject(1&).SetFile(fileName)
END IF
END IF
END SUB
' -----------------------------------------------------------------------------
FUNCTION IniFile_SetKey(BYVAL pObject AS LONG) AS STRING
LOCAL section, key, value AS STRING
REDIM oObject(1& TO 1&) AS iIniFile AT pObject
IF thinBasic_CheckOpenParens_Mandatory() THEN
thinBasic_ParseString section
IF thinBasic_CheckComma_Mandatory() AND thinBasic_ErrorFree() THEN
thinBasic_ParseString key
IF thinBasic_CheckComma_Mandatory() AND thinBasic_ErrorFree() THEN
thinBasic_ParseString value
IF thinBasic_CheckCloseParens_Mandatory() AND thinBasic_ErrorFree() THEN
oObject(1&).SetValue(section, key, value)
FUNCTION = value
END IF
END IF
END IF
END IF
END FUNCTION
FUNCTION IniFile_GetKey(BYVAL pObject AS LONG) AS STRING
LOCAL section, key, defaultValue AS STRING
REDIM oObject(1& TO 1&) AS iIniFile AT pObject
IF thinBasic_CheckOpenParens_Mandatory() THEN
thinBasic_ParseString section
IF thinBasic_CheckComma_Mandatory() AND thinBasic_ErrorFree() THEN
thinBasic_ParseString key
IF thinBasic_CheckComma_Optional() AND thinBasic_ErrorFree() THEN
thinBasic_ParseString defaultValue
END IF
IF thinBasic_CheckCloseParens_Mandatory() AND thinBasic_ErrorFree() THEN
FUNCTION = oObject(1&).GetValue(section, key, defaultValue)
END IF
END IF
END IF
END FUNCTION
FUNCTION IniFile_GetSections(BYVAL pObject AS LONG) AS STRING
LOCAL sectionSeparator AS STRING
REDIM oObject(1& TO 1&) AS iIniFile AT pObject
IF thinBasic_CheckOpenParens_Mandatory() THEN
thinBasic_ParseString sectionSeparator
IF thinBasic_CheckCloseParens_Mandatory() AND thinBasic_ErrorFree() THEN
FUNCTION = oObject(1&).GetSections(sectionSeparator)
END IF
END IF
END FUNCTION
FUNCTION IniFile_GetKeys(BYVAL pObject AS LONG) AS STRING
LOCAL section, keySeparator AS STRING
REDIM oObject(1& TO 1&) AS iIniFile AT pObject
IF thinBasic_CheckOpenParens_Mandatory() THEN
thinBasic_ParseString section
IF thinBasic_CheckComma_Mandatory() AND thinBasic_ErrorFree() THEN
thinBasic_ParseString keySeparator
IF thinBasic_CheckCloseParens_Mandatory() AND thinBasic_ErrorFree() THEN
FUNCTION = oObject(1&).GetSectionKeys(section, keySeparator)
END IF
END IF
END IF
END FUNCTION