fbdbg  3.0
FreeBASIC Debugger
ini.bas
Go to the documentation of this file.
1 
10 
11 
12 
18 CONSTRUCTOR IniUDT()
19  VAR r = loadIni()
20  IF r THEN ?PROJ_NAME & ": " & *r
21 ?" CONSTRUCTOR IniUDT"
22 END CONSTRUCTOR
23 
24 
25 
32 PROPERTY IniUDT.Bool(BYVAL I AS INTEGER) AS gboolean
33  RETURN IIF(BIT(Flags, I), TRUE, FALSE)
34 END PROPERTY
35 
36 
37 
45 PROPERTY IniUDT.Bool(BYVAL I AS INTEGER, BYVAL V AS gboolean)
46  Flags = IIF(V, _
47  BITSET(Flags, I) _
48  , BITRESET(Flags, I))
49 END PROPERTY
50 
51 
52 
60 PROPERTY IniUDT.Flag(BYVAL I AS INTEGER) AS STRING
61  RETURN *IIF(BIT(Flags, I), @"TRUE", @"FALSE")
62 END PROPERTY
63 
64 
65 
73 PROPERTY IniUDT.Flag(BYVAL I AS INTEGER, BYVAL V AS STRING)
74  Flags = IIF(UCASE(LTRIM(V, ANY !"\t\v ")) = "TRUE", _
75  BITSET(Flags, I) _
76  , BITRESET(Flags, I))
77 END PROPERTY
78 
79 
80 
88 FUNCTION IniUDT.loadIni() AS gchar PTR
89  VAR t = "", fontsize = "", fontname = "", c = 0, w = 0, b = 1 _
90  , fnr = FREEFILE
91  IF OPEN(EXEPATH & SLASH & "fbdebugger.ini" FOR INPUT AS fnr) _
92  THEN RETURN __("Cannot open fbdebugger.ini")
93 
94  WHILE NOT EOF(fnr)
95  LINE INPUT #fnr, t
96  t = TRIM(t, ANY !"\t\v ")
97  SELECT CASE LEFT(t, 6)
98  CASE "[CFG]=" : ColForegr = CULNG(MID(t, 7))
99  CASE "[CLN]=" : ColLineNo = CULNG(MID(t, 7))
100  CASE "[CRE]=" : ColBackgr = CULNG(MID(t, 7))
101  CASE "[CBC]=" : ColBackgrCur = CULNG(MID(t, 7))
102  'CASE "[CPB]=" : ColBreak = CULNG(MID(t, 7))
103  'CASE "[CTB]=" : ColBreakTmp = CULNG(MID(t, 7))
104  CASE "[CHK]=" : ColKeyword = CULNG(MID(t, 7))
105  CASE "[CHS]=" : ColStrings = CULNG(MID(t, 7))
106  CASE "[CHP]=" : ColPrepro = CULNG(MID(t, 7))
107  CASE "[CHC]=" : ColComment = CULNG(MID(t, 7))
108  CASE "[CHN]=" : ColNumbers = CULNG(MID(t, 7))
109  CASE "[CHE]=" : ColEscape = CULNG(MID(t, 7))
110  CASE "[CHL]=" : ColCursor = CULNG(MID(t, 7))
111 
112  CASE "[POS]=" : CurPos = CULNG(MID(t, 7))
113  CASE "[DEL]=" : DelVal = CULNG(MID(t, 7))
114 
115  CASE "[FBC]=" : FbcExe = LTRIM(MID(t, 7), ANY !"\t\v ")
116  CASE "[IDE]=" : IdeExe = LTRIM(MID(t, 7), ANY !"\t\v ")
117  CASE "[FCD]=" : CmdlFbc = LTRIM(MID(t, 7), ANY !"\t\v ")
118  CASE "[LOG]=" : FnamLog = LTRIM(MID(t, 7), ANY !"\t\v ")
119  CASE "[SRC]=" : FontSrc = LTRIM(MID(t, 7), ANY !"\t\v ")
120  CASE "[JIT]=" : JitPrev = LTRIM(MID(t, 7), ANY !"\t\v ")
121  CASE "[NSS]=" : StlSchm = LTRIM(MID(t, 7), ANY !"\t\v ")
122 
123  CASE "[FSH]=" : Flag(FSH) = MID(t, 7)
124  CASE "[FVM]=" : Flag(FVM) = MID(t, 7)
125  CASE "[FSL]=" : Flag(FSL) = MID(t, 7)
126  CASE "[FFL]=" : Flag(FFL) = MID(t, 7)
127  CASE "[FLT]=" : Flag(FLT) = MID(t, 7)
128  CASE "[FPT]=" : Flag(FPT) = MID(t, 7)
129  CASE "[FTT]=" : Flag(FTT) = MID(t, 7)
130  CASE "[FLN]=" : Flag(FLN) = MID(t, 7)
131 
132  CASE "[CMD]=" : CmdExe(c) = LTRIM(MID(t, 7), ANY !"\t\v ")
133  CASE "[BRK]=" : BrkExe(c, b) = LTRIM(MID(t, 7), ANY !"\t\v ")
134  b += 1 : IF b > UBOUND(BrkExe, 2) THEN b = UBOUND(BrkExe, 2)
135  CASE "[WTC]=" : WtchExe(c, w) = LTRIM(MID(t, 7), ANY !"\t\v ")
136  w += 1 : IF w > UBOUND(WtchExe, 2) THEN w = UBOUND(WtchExe, 2)
137  CASE "[EXE]=" : t = RTRIM(MID(t, 7)) : IF DIR(t) = "" THEN EXIT SELECT
138 #IFNDEF __FB_UNIX__
139  IF 0 = INSTR(LCASE(t), ".exe") THEN /' not for UNIX '/ EXIT SELECT
140 #ENDIF
141  SavExe(c) = t : CmdExe(c) = ""
142  c += 1 : w = 0 : b = 1 : IF c > UBOUND(SavExe) THEN c = UBOUND(SavExe)
143 
144 '' for compatibility
145  CASE "[DPO]=" : CurPos = CULNG(MID(t, 7))
146  CASE "[HLK]=" : Flag(FSH) = MID(t, 7)
147  CASE "[TTP]=" : Flag(FTT) = MID(t, 7)
148  CASE "[CNK]=" : ColKeyword = CULNG(MID(t, 7)) ' tag renamed [CHK]
149  CASE "[FTN]=" : FontSrc = LTRIM(MID(t, 7), ANY !"\t\v ") & " " & fontsize
150  CASE "[FTS]=" : FontSrc = fontname & " " & LTRIM(MID(t, 7), ANY !"\t\v ")
151  CASE ELSE : ?!"unknown ini entry:\n " & t
152  END SELECT
153  WEND : CLOSE #fnr : RETURN NULL
154 END FUNCTION
155 
156 
157 
164 FUNCTION IniUDT.saveIni() AS gchar PTR
165  IF DIR("fbdebuggersav.ini") <> "" THEN _
166  IF KILL("fbdebuggersav.ini") THEN RETURN __("Cannot kill file fbdebuggersav.ini")
167  IF DIR("fbdebugger.ini") <> "" THEN _
168  IF NAME("fbdebugger.ini", "fbdebuggersav.ini") THEN RETURN __("Cannot rename file fbdebugger.ini")
169 
170  VAR fnr = FREEFILE
171  IF OPEN(EXEPATH & SLASH & "fbdebugger.ini" FOR OUTPUT AS fnr) _
172  THEN RETURN __("Cannot write file fbdebugger.ini")
173 
174  IF LEN(FbcExe) THEN
175  PRINT #fnr, "[FBC]=" & TRIM( FbcExe, ANY !"\t\v ")
176  IF LEN(CmdlFbc) THEN PRINT #fnr, "[FCD]=" & TRIM(CmdlFbc, ANY !"\t\v ")
177  ENDIF
178  IF LEN( IdeExe) THEN PRINT #fnr, "[IDE]=" & TRIM( IdeExe, ANY !"\t\v ")
179  IF LEN(FnamLog) THEN PRINT #fnr, "[LOG]=" & TRIM(FnamLog, ANY !"\t\v ")
180  IF LEN(FontSrc) THEN PRINT #fnr, "[SRC]=" & TRIM(FontSrc, ANY !"\t\v ")
181  IF LEN(JitPrev) THEN PRINT #fnr, "[JIT]=" & JitPrev
182  IF LEN(StlSchm) THEN PRINT #fnr, "[NSS]=" & StlSchm
183 
184  FOR i AS INTEGER = 0 TO UBOUND(SavExe)
185  IF LEN(SavExe(i)) THEN
186  PRINT #fnr, "[EXE]=" & SavExe(i)
187  IF LEN(CmdExe(i)) THEN PRINT #fnr, "[CMD]=" & CmdExe(i)
188 
189  FOR j AS INTEGER = 0 TO UBOUND(WtchExe, 2)
190  IF 0 = LEN(WtchExe(i,j)) THEN EXIT FOR
191  PRINT #fnr, "[WTC]=" & WtchExe(i,j)
192  NEXT
193 
194  FOR j AS INTEGER = 1 TO UBOUND(BrkExe, 2)
195  IF LEN(BrkExe(i,j)) THEN PRINT #fnr, "[BRK]=" & BrkExe(i,j)
196  NEXT
197  END IF
198  NEXT
199 
200  PRINT #fnr, "[POS]=" & CurPos
201  PRINT #fnr, "[DEL]=" & DelVal
202 
203  PRINT #fnr, "[CFG]=&h" & HEX( ColForegr, 6)
204  PRINT #fnr, "[CLN]=&h" & HEX( ColLineNo, 6)
205  PRINT #fnr, "[CRE]=&h" & HEX( ColBackgr, 6)
206  PRINT #fnr, "[CBC]=&h" & HEX(ColBackgrCur, 6)
207  'PRINT #fnr, "[CPB]=&h" & HEX( ColBreak, 6)
208  'PRINT #fnr, "[CTB]=&h" & HEX( ColBreakTmp, 6)
209  PRINT #fnr, "[CHK]=&h" & HEX( ColKeyword, 6)
210  PRINT #fnr, "[CHS]=&h" & HEX( ColStrings, 6)
211  PRINT #fnr, "[CHP]=&h" & HEX( ColPrepro, 6)
212  PRINT #fnr, "[CHC]=&h" & HEX( ColComment, 6)
213  PRINT #fnr, "[CHN]=&h" & HEX( ColNumbers, 6)
214  PRINT #fnr, "[CHE]=&h" & HEX( ColEscape, 6)
215  PRINT #fnr, "[CHL]=&h" & HEX( ColCursor, 6)
216 
217  PRINT #fnr, "[FSH]=" & Flag(FSH)
218  PRINT #fnr, "[FVM]=" & Flag(FVM)
219  PRINT #fnr, "[FSL]=" & Flag(FSL)
220  PRINT #fnr, "[FFL]=" & Flag(FFL)
221  PRINT #fnr, "[FLT]=" & Flag(FLT)
222  PRINT #fnr, "[FPT]=" & Flag(FTT)
223  PRINT #fnr, "[TTP]=" & Flag(FTT)
224  PRINT #fnr, "[FLN]=" & Flag(FLN)
225 
226  CLOSE #fnr : RETURN NULL
227 END FUNCTION
228 
229 DIM SHARED AS IniUDT PTR INI
230