blob: 145a365c54e66ad85850e184cf6fc870e54f2c82 [file] [log] [blame]
drh9ccd8652013-09-13 16:36:46 +00001#!/usr/bin/tclsh
2#
3# Run this script to generate the pragma name lookup table C code.
4#
5# To add new pragmas, first add the name and other relevant attributes
6# of the pragma to the "pragma_def" object below. Then run this script
drh67e65e52015-02-02 21:34:54 +00007# to generate the ../src/pragma.h header file that contains macros and
8# the lookup table needed for pragma name lookup in the pragma.c module.
drh9ccd8652013-09-13 16:36:46 +00009# Then add the extra "case PragTyp_XXXXX:" and subsequent code for the
drh67e65e52015-02-02 21:34:54 +000010# new pragma in ../src/pragma.c.
drh9ccd8652013-09-13 16:36:46 +000011#
12
13set pragma_def {
14 NAME: full_column_names
15 TYPE: FLAG
16 ARG: SQLITE_FullColNames
mistachkindd197832013-10-21 23:17:23 +000017 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000018
19 NAME: short_column_names
20 TYPE: FLAG
21 ARG: SQLITE_ShortColNames
mistachkindd197832013-10-21 23:17:23 +000022 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000023
24 NAME: count_changes
25 TYPE: FLAG
26 ARG: SQLITE_CountRows
mistachkindd197832013-10-21 23:17:23 +000027 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000028
29 NAME: empty_result_callbacks
30 TYPE: FLAG
31 ARG: SQLITE_NullCallback
mistachkindd197832013-10-21 23:17:23 +000032 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000033
34 NAME: legacy_file_format
35 TYPE: FLAG
36 ARG: SQLITE_LegacyFileFmt
mistachkindd197832013-10-21 23:17:23 +000037 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000038
39 NAME: fullfsync
40 TYPE: FLAG
41 ARG: SQLITE_FullFSync
mistachkindd197832013-10-21 23:17:23 +000042 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000043
44 NAME: checkpoint_fullfsync
45 TYPE: FLAG
46 ARG: SQLITE_CkptFullFSync
mistachkindd197832013-10-21 23:17:23 +000047 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000048
49 NAME: cache_spill
mistachkindd197832013-10-21 23:17:23 +000050 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000051
52 NAME: reverse_unordered_selects
53 TYPE: FLAG
54 ARG: SQLITE_ReverseOrder
mistachkindd197832013-10-21 23:17:23 +000055 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000056
57 NAME: query_only
58 TYPE: FLAG
59 ARG: SQLITE_QueryOnly
mistachkindd197832013-10-21 23:17:23 +000060 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000061
62 NAME: automatic_index
63 TYPE: FLAG
64 ARG: SQLITE_AutoIndex
mistachkindd197832013-10-21 23:17:23 +000065 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000066 IF: !defined(SQLITE_OMIT_AUTOMATIC_INDEX)
67
68 NAME: sql_trace
69 TYPE: FLAG
70 ARG: SQLITE_SqlTrace
mistachkindd197832013-10-21 23:17:23 +000071 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000072 IF: defined(SQLITE_DEBUG)
73
74 NAME: vdbe_listing
75 TYPE: FLAG
76 ARG: SQLITE_VdbeListing
mistachkindd197832013-10-21 23:17:23 +000077 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000078 IF: defined(SQLITE_DEBUG)
79
80 NAME: vdbe_trace
81 TYPE: FLAG
82 ARG: SQLITE_VdbeTrace
mistachkindd197832013-10-21 23:17:23 +000083 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000084 IF: defined(SQLITE_DEBUG)
85
86 NAME: vdbe_addoptrace
87 TYPE: FLAG
88 ARG: SQLITE_VdbeAddopTrace
mistachkindd197832013-10-21 23:17:23 +000089 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000090 IF: defined(SQLITE_DEBUG)
91
92 NAME: vdbe_debug
93 TYPE: FLAG
94 ARG: SQLITE_SqlTrace|SQLITE_VdbeListing|SQLITE_VdbeTrace
mistachkindd197832013-10-21 23:17:23 +000095 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000096 IF: defined(SQLITE_DEBUG)
97
drh84e55a82013-11-13 17:58:23 +000098 NAME: vdbe_eqp
99 TYPE: FLAG
100 ARG: SQLITE_VdbeEQP
101 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
102 IF: defined(SQLITE_DEBUG)
103
drh9ccd8652013-09-13 16:36:46 +0000104 NAME: ignore_check_constraints
105 TYPE: FLAG
106 ARG: SQLITE_IgnoreChecks
mistachkindd197832013-10-21 23:17:23 +0000107 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000108 IF: !defined(SQLITE_OMIT_CHECK)
109
110 NAME: writable_schema
111 TYPE: FLAG
112 ARG: SQLITE_WriteSchema|SQLITE_RecoveryMode
mistachkindd197832013-10-21 23:17:23 +0000113 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000114
115 NAME: read_uncommitted
116 TYPE: FLAG
117 ARG: SQLITE_ReadUncommitted
mistachkindd197832013-10-21 23:17:23 +0000118 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000119
120 NAME: recursive_triggers
121 TYPE: FLAG
122 ARG: SQLITE_RecTriggers
mistachkindd197832013-10-21 23:17:23 +0000123 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000124
125 NAME: foreign_keys
126 TYPE: FLAG
127 ARG: SQLITE_ForeignKeys
mistachkindd197832013-10-21 23:17:23 +0000128 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000129 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
130
131 NAME: defer_foreign_keys
132 TYPE: FLAG
133 ARG: SQLITE_DeferFKs
mistachkindd197832013-10-21 23:17:23 +0000134 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000135 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
136
drh1421d982015-05-27 03:46:18 +0000137 NAME: cell_size_check
138 TYPE: FLAG
139 ARG: SQLITE_CellSizeCk
140
drh9ccd8652013-09-13 16:36:46 +0000141 NAME: default_cache_size
drhf63936e2013-10-03 14:08:07 +0000142 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000143 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && !defined(SQLITE_OMIT_DEPRECATED)
144
145 NAME: page_size
146 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
147
148 NAME: secure_delete
149 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
150
151 NAME: page_count
drhf63936e2013-10-03 14:08:07 +0000152 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000153 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
154
155 NAME: max_page_count
156 TYPE: PAGE_COUNT
drhf63936e2013-10-03 14:08:07 +0000157 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000158 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
159
160 NAME: locking_mode
161 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
162
163 NAME: journal_mode
drhf63936e2013-10-03 14:08:07 +0000164 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000165 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
166
167 NAME: journal_size_limit
168 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
169
170 NAME: cache_size
drh8d4482d2015-11-12 22:15:18 +0000171 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000172 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
173
174 NAME: mmap_size
175 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
176
177 NAME: auto_vacuum
drhf63936e2013-10-03 14:08:07 +0000178 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000179 IF: !defined(SQLITE_OMIT_AUTOVACUUM)
180
181 NAME: incremental_vacuum
drhf63936e2013-10-03 14:08:07 +0000182 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000183 IF: !defined(SQLITE_OMIT_AUTOVACUUM)
184
185 NAME: temp_store
186 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
187
188 NAME: temp_store_directory
189 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
190
191 NAME: data_store_directory
192 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && SQLITE_OS_WIN
193
194 NAME: lock_proxy_file
195 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && SQLITE_ENABLE_LOCKING_STYLE
196
197 NAME: synchronous
drhf63936e2013-10-03 14:08:07 +0000198 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000199 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
200
201 NAME: table_info
drhf63936e2013-10-03 14:08:07 +0000202 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000203 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
204
drh3ef26152013-10-12 20:22:00 +0000205 NAME: stats
206 FLAG: NeedSchema
207 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
208
drh9ccd8652013-09-13 16:36:46 +0000209 NAME: index_info
drhc228be52015-01-31 02:00:01 +0000210 TYPE: INDEX_INFO
211 ARG: 0
212 FLAG: NeedSchema
213 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
214
215 NAME: index_xinfo
216 TYPE: INDEX_INFO
217 ARG: 1
drhf63936e2013-10-03 14:08:07 +0000218 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000219 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
220
221 NAME: index_list
drhf63936e2013-10-03 14:08:07 +0000222 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000223 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
224
225 NAME: database_list
drhf63936e2013-10-03 14:08:07 +0000226 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000227 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
228
229 NAME: collation_list
230 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
231
232 NAME: foreign_key_list
drhf63936e2013-10-03 14:08:07 +0000233 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000234 IF: !defined(SQLITE_OMIT_FOREIGN_KEY)
235
236 NAME: foreign_key_check
drhf63936e2013-10-03 14:08:07 +0000237 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000238 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
239
240 NAME: parser_trace
drh35926802015-12-15 13:50:22 +0000241 IF: defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_PARSER_TRACE)
drh9ccd8652013-09-13 16:36:46 +0000242
243 NAME: case_sensitive_like
244
245 NAME: integrity_check
drhf63936e2013-10-03 14:08:07 +0000246 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000247 IF: !defined(SQLITE_OMIT_INTEGRITY_CHECK)
248
249 NAME: quick_check
250 TYPE: INTEGRITY_CHECK
drhf63936e2013-10-03 14:08:07 +0000251 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000252 IF: !defined(SQLITE_OMIT_INTEGRITY_CHECK)
253
254 NAME: encoding
255 IF: !defined(SQLITE_OMIT_UTF16)
256
257 NAME: schema_version
258 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000259 ARG: BTREE_SCHEMA_VERSION
drh9ccd8652013-09-13 16:36:46 +0000260 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
261
262 NAME: user_version
263 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000264 ARG: BTREE_USER_VERSION
drh9ccd8652013-09-13 16:36:46 +0000265 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
266
drh91618562014-12-19 19:28:02 +0000267 NAME: data_version
268 TYPE: HEADER_VALUE
269 ARG: BTREE_DATA_VERSION
270 FLAG: ReadOnly
271 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
272
drh9ccd8652013-09-13 16:36:46 +0000273 NAME: freelist_count
274 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000275 ARG: BTREE_FREE_PAGE_COUNT
276 FLAG: ReadOnly
drh9ccd8652013-09-13 16:36:46 +0000277 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
278
279 NAME: application_id
280 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000281 ARG: BTREE_APPLICATION_ID
drh9ccd8652013-09-13 16:36:46 +0000282 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
283
284 NAME: compile_options
285 IF: !defined(SQLITE_OMIT_COMPILEOPTION_DIAGS)
286
287 NAME: wal_checkpoint
drhf63936e2013-10-03 14:08:07 +0000288 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000289 IF: !defined(SQLITE_OMIT_WAL)
290
291 NAME: wal_autocheckpoint
292 IF: !defined(SQLITE_OMIT_WAL)
293
294 NAME: shrink_memory
295
296 NAME: busy_timeout
297
298 NAME: lock_status
299 IF: defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
300
301 NAME: key
302 IF: defined(SQLITE_HAS_CODEC)
303
304 NAME: rekey
305 IF: defined(SQLITE_HAS_CODEC)
306
307 NAME: hexkey
308 IF: defined(SQLITE_HAS_CODEC)
309
drh8ab88322013-10-07 00:36:01 +0000310 NAME: hexrekey
311 TYPE: HEXKEY
312 IF: defined(SQLITE_HAS_CODEC)
313
drh9ccd8652013-09-13 16:36:46 +0000314 NAME: activate_extensions
315 IF: defined(SQLITE_HAS_CODEC) || defined(SQLITE_ENABLE_CEROD)
drh55e85ca2013-09-13 21:01:56 +0000316
317 NAME: soft_heap_limit
drh03459612014-08-25 15:13:22 +0000318
319 NAME: threads
drh9ccd8652013-09-13 16:36:46 +0000320}
drh67e65e52015-02-02 21:34:54 +0000321
322# Open the output file
323#
324set destfile "[file dir [file dir [file normal $argv0]]]/src/pragma.h"
325puts "Overwriting $destfile with new pragma table..."
326set fd [open $destfile wb]
327puts $fd {/* DO NOT EDIT!
328** This file is automatically generated by the script at
329** ../tool/mkpragmatab.tcl. To update the set of pragmas, edit
330** that script and rerun it.
331*/}
332
333# Parse the PRAGMA table above.
334#
drh9ccd8652013-09-13 16:36:46 +0000335set name {}
336set type {}
337set if {}
drhf63936e2013-10-03 14:08:07 +0000338set flags {}
drh9ccd8652013-09-13 16:36:46 +0000339set arg 0
340proc record_one {} {
drhf63936e2013-10-03 14:08:07 +0000341 global name type if arg allbyname typebyif flags
drh9ccd8652013-09-13 16:36:46 +0000342 if {$name==""} return
drhf63936e2013-10-03 14:08:07 +0000343 set allbyname($name) [list $type $arg $if $flags]
drh9ccd8652013-09-13 16:36:46 +0000344 set name {}
345 set type {}
346 set if {}
drhf63936e2013-10-03 14:08:07 +0000347 set flags {}
drh9ccd8652013-09-13 16:36:46 +0000348 set arg 0
349}
350foreach line [split $pragma_def \n] {
351 set line [string trim $line]
352 if {$line==""} continue
353 foreach {id val} [split $line :] break
354 set val [string trim $val]
355 if {$id=="NAME"} {
356 record_one
357 set name $val
358 set type [string toupper $val]
359 } elseif {$id=="TYPE"} {
360 set type $val
361 } elseif {$id=="ARG"} {
362 set arg $val
363 } elseif {$id=="IF"} {
mistachkindd197832013-10-21 23:17:23 +0000364 lappend if $val
drhf63936e2013-10-03 14:08:07 +0000365 } elseif {$id=="FLAG"} {
366 foreach term [split $val] {
367 lappend flags $term
368 set allflags($term) 1
369 }
drh9ccd8652013-09-13 16:36:46 +0000370 } else {
371 error "bad pragma_def line: $line"
372 }
373}
374record_one
375set allnames [lsort [array names allbyname]]
376
377# Generate #defines for all pragma type names. Group the pragmas that are
378# omit in default builds (defined(SQLITE_DEBUG) and defined(SQLITE_HAS_CODEC))
379# at the end.
380#
381set pnum 0
382foreach name $allnames {
383 set type [lindex $allbyname($name) 0]
384 if {[info exists seentype($type)]} continue
385 set if [lindex $allbyname($name) 2]
386 if {[regexp SQLITE_DEBUG $if] || [regexp SQLITE_HAS_CODEC $if]} continue
387 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000388 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000389 incr pnum
390}
391foreach name $allnames {
392 set type [lindex $allbyname($name) 0]
393 if {[info exists seentype($type)]} continue
394 set if [lindex $allbyname($name) 2]
395 if {[regexp SQLITE_DEBUG $if]} continue
396 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000397 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000398 incr pnum
399}
400foreach name $allnames {
401 set type [lindex $allbyname($name) 0]
402 if {[info exists seentype($type)]} continue
403 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000404 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000405 incr pnum
406}
407
drhf63936e2013-10-03 14:08:07 +0000408# Generate #defines for flags
409#
410set fv 1
411foreach f [lsort [array names allflags]] {
drh67e65e52015-02-02 21:34:54 +0000412 puts $fd [format {#define PragFlag_%-20s 0x%02x} $f $fv]
drhf63936e2013-10-03 14:08:07 +0000413 set fv [expr {$fv*2}]
414}
415
drh9ccd8652013-09-13 16:36:46 +0000416# Generate the lookup table
417#
drh67e65e52015-02-02 21:34:54 +0000418puts $fd "static const struct sPragmaNames \173"
419puts $fd " const char *const zName; /* Name of pragma */"
420puts $fd " u8 ePragTyp; /* PragTyp_XXX value */"
421puts $fd " u8 mPragFlag; /* Zero or more PragFlag_XXX values */"
422puts $fd " u32 iArg; /* Extra argument */"
423puts $fd "\175 aPragmaNames\[\] = \173"
drh9ccd8652013-09-13 16:36:46 +0000424
425set current_if {}
426set spacer [format { %26s } {}]
427foreach name $allnames {
drhf63936e2013-10-03 14:08:07 +0000428 foreach {type arg if flag} $allbyname($name) break
drh9ccd8652013-09-13 16:36:46 +0000429 if {$if!=$current_if} {
mistachkindd197832013-10-21 23:17:23 +0000430 if {$current_if!=""} {
431 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000432 puts $fd "#endif"
mistachkindd197832013-10-21 23:17:23 +0000433 }
434 }
drh9ccd8652013-09-13 16:36:46 +0000435 set current_if $if
mistachkindd197832013-10-21 23:17:23 +0000436 if {$current_if!=""} {
437 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000438 puts $fd "#if $this_if"
mistachkindd197832013-10-21 23:17:23 +0000439 }
440 }
drh9ccd8652013-09-13 16:36:46 +0000441 }
drh9ccd8652013-09-13 16:36:46 +0000442 set typex [format PragTyp_%-23s $type,]
drhf63936e2013-10-03 14:08:07 +0000443 if {$flag==""} {
444 set flagx "0"
drh9ccd8652013-09-13 16:36:46 +0000445 } else {
drhf63936e2013-10-03 14:08:07 +0000446 set flagx PragFlag_[join $flag {|PragFlag_}]
drh9ccd8652013-09-13 16:36:46 +0000447 }
drh67e65e52015-02-02 21:34:54 +0000448 puts $fd " \173 /* zName: */ \"$name\","
449 puts $fd " /* ePragTyp: */ PragTyp_$type,"
450 puts $fd " /* ePragFlag: */ $flagx,"
451 puts $fd " /* iArg: */ $arg \175,"
drh9ccd8652013-09-13 16:36:46 +0000452}
mistachkindd197832013-10-21 23:17:23 +0000453if {$current_if!=""} {
454 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000455 puts $fd "#endif"
mistachkindd197832013-10-21 23:17:23 +0000456 }
457}
drh67e65e52015-02-02 21:34:54 +0000458puts $fd "\175;"
drh6bb64f62013-09-13 16:56:17 +0000459
460# count the number of pragmas, for information purposes
461#
462set allcnt 0
463set dfltcnt 0
464foreach name $allnames {
465 incr allcnt
466 set if [lindex $allbyname($name) 2]
467 if {[regexp {^defined} $if] || [regexp {[^!]defined} $if]} continue
468 incr dfltcnt
469}
drh67e65e52015-02-02 21:34:54 +0000470puts $fd "/* Number of pragmas: $dfltcnt on by default, $allcnt total. */"