blob: bbdf9da754ab21ee899d2e6817591e31abec6a02 [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
50 TYPE: FLAG
51 ARG: SQLITE_CacheSpill
mistachkindd197832013-10-21 23:17:23 +000052 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000053
54 NAME: reverse_unordered_selects
55 TYPE: FLAG
56 ARG: SQLITE_ReverseOrder
mistachkindd197832013-10-21 23:17:23 +000057 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000058
59 NAME: query_only
60 TYPE: FLAG
61 ARG: SQLITE_QueryOnly
mistachkindd197832013-10-21 23:17:23 +000062 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000063
64 NAME: automatic_index
65 TYPE: FLAG
66 ARG: SQLITE_AutoIndex
mistachkindd197832013-10-21 23:17:23 +000067 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000068 IF: !defined(SQLITE_OMIT_AUTOMATIC_INDEX)
69
70 NAME: sql_trace
71 TYPE: FLAG
72 ARG: SQLITE_SqlTrace
mistachkindd197832013-10-21 23:17:23 +000073 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000074 IF: defined(SQLITE_DEBUG)
75
76 NAME: vdbe_listing
77 TYPE: FLAG
78 ARG: SQLITE_VdbeListing
mistachkindd197832013-10-21 23:17:23 +000079 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000080 IF: defined(SQLITE_DEBUG)
81
82 NAME: vdbe_trace
83 TYPE: FLAG
84 ARG: SQLITE_VdbeTrace
mistachkindd197832013-10-21 23:17:23 +000085 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000086 IF: defined(SQLITE_DEBUG)
87
88 NAME: vdbe_addoptrace
89 TYPE: FLAG
90 ARG: SQLITE_VdbeAddopTrace
mistachkindd197832013-10-21 23:17:23 +000091 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000092 IF: defined(SQLITE_DEBUG)
93
94 NAME: vdbe_debug
95 TYPE: FLAG
96 ARG: SQLITE_SqlTrace|SQLITE_VdbeListing|SQLITE_VdbeTrace
mistachkindd197832013-10-21 23:17:23 +000097 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +000098 IF: defined(SQLITE_DEBUG)
99
drh84e55a82013-11-13 17:58:23 +0000100 NAME: vdbe_eqp
101 TYPE: FLAG
102 ARG: SQLITE_VdbeEQP
103 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
104 IF: defined(SQLITE_DEBUG)
105
drh9ccd8652013-09-13 16:36:46 +0000106 NAME: ignore_check_constraints
107 TYPE: FLAG
108 ARG: SQLITE_IgnoreChecks
mistachkindd197832013-10-21 23:17:23 +0000109 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000110 IF: !defined(SQLITE_OMIT_CHECK)
111
112 NAME: writable_schema
113 TYPE: FLAG
114 ARG: SQLITE_WriteSchema|SQLITE_RecoveryMode
mistachkindd197832013-10-21 23:17:23 +0000115 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000116
117 NAME: read_uncommitted
118 TYPE: FLAG
119 ARG: SQLITE_ReadUncommitted
mistachkindd197832013-10-21 23:17:23 +0000120 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000121
122 NAME: recursive_triggers
123 TYPE: FLAG
124 ARG: SQLITE_RecTriggers
mistachkindd197832013-10-21 23:17:23 +0000125 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000126
127 NAME: foreign_keys
128 TYPE: FLAG
129 ARG: SQLITE_ForeignKeys
mistachkindd197832013-10-21 23:17:23 +0000130 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000131 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
132
133 NAME: defer_foreign_keys
134 TYPE: FLAG
135 ARG: SQLITE_DeferFKs
mistachkindd197832013-10-21 23:17:23 +0000136 IF: !defined(SQLITE_OMIT_FLAG_PRAGMAS)
drh9ccd8652013-09-13 16:36:46 +0000137 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
138
drh1421d982015-05-27 03:46:18 +0000139 NAME: cell_size_check
140 TYPE: FLAG
141 ARG: SQLITE_CellSizeCk
142
drh9ccd8652013-09-13 16:36:46 +0000143 NAME: default_cache_size
drhf63936e2013-10-03 14:08:07 +0000144 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000145 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && !defined(SQLITE_OMIT_DEPRECATED)
146
147 NAME: page_size
148 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
149
150 NAME: secure_delete
151 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
152
153 NAME: page_count
drhf63936e2013-10-03 14:08:07 +0000154 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000155 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
156
157 NAME: max_page_count
158 TYPE: PAGE_COUNT
drhf63936e2013-10-03 14:08:07 +0000159 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000160 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
161
162 NAME: locking_mode
163 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
164
165 NAME: journal_mode
drhf63936e2013-10-03 14:08:07 +0000166 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000167 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
168
169 NAME: journal_size_limit
170 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
171
172 NAME: cache_size
173 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
174
175 NAME: mmap_size
176 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
177
178 NAME: auto_vacuum
drhf63936e2013-10-03 14:08:07 +0000179 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000180 IF: !defined(SQLITE_OMIT_AUTOVACUUM)
181
182 NAME: incremental_vacuum
drhf63936e2013-10-03 14:08:07 +0000183 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000184 IF: !defined(SQLITE_OMIT_AUTOVACUUM)
185
186 NAME: temp_store
187 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
188
189 NAME: temp_store_directory
190 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
191
192 NAME: data_store_directory
193 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && SQLITE_OS_WIN
194
195 NAME: lock_proxy_file
196 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS) && SQLITE_ENABLE_LOCKING_STYLE
197
198 NAME: synchronous
drhf63936e2013-10-03 14:08:07 +0000199 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000200 IF: !defined(SQLITE_OMIT_PAGER_PRAGMAS)
201
202 NAME: table_info
drhf63936e2013-10-03 14:08:07 +0000203 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000204 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
205
drh3ef26152013-10-12 20:22:00 +0000206 NAME: stats
207 FLAG: NeedSchema
208 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
209
drh9ccd8652013-09-13 16:36:46 +0000210 NAME: index_info
drhc228be52015-01-31 02:00:01 +0000211 TYPE: INDEX_INFO
212 ARG: 0
213 FLAG: NeedSchema
214 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
215
216 NAME: index_xinfo
217 TYPE: INDEX_INFO
218 ARG: 1
drhf63936e2013-10-03 14:08:07 +0000219 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000220 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
221
222 NAME: index_list
drhf63936e2013-10-03 14:08:07 +0000223 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000224 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
225
226 NAME: database_list
drhf63936e2013-10-03 14:08:07 +0000227 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000228 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
229
230 NAME: collation_list
231 IF: !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
232
233 NAME: foreign_key_list
drhf63936e2013-10-03 14:08:07 +0000234 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000235 IF: !defined(SQLITE_OMIT_FOREIGN_KEY)
236
237 NAME: foreign_key_check
drhf63936e2013-10-03 14:08:07 +0000238 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000239 IF: !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
240
241 NAME: parser_trace
242 IF: defined(SQLITE_DEBUG)
243
244 NAME: case_sensitive_like
245
246 NAME: integrity_check
drhf63936e2013-10-03 14:08:07 +0000247 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000248 IF: !defined(SQLITE_OMIT_INTEGRITY_CHECK)
249
250 NAME: quick_check
251 TYPE: INTEGRITY_CHECK
drhf63936e2013-10-03 14:08:07 +0000252 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000253 IF: !defined(SQLITE_OMIT_INTEGRITY_CHECK)
254
255 NAME: encoding
256 IF: !defined(SQLITE_OMIT_UTF16)
257
258 NAME: schema_version
259 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000260 ARG: BTREE_SCHEMA_VERSION
drh9ccd8652013-09-13 16:36:46 +0000261 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
262
263 NAME: user_version
264 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000265 ARG: BTREE_USER_VERSION
drh9ccd8652013-09-13 16:36:46 +0000266 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
267
drh91618562014-12-19 19:28:02 +0000268 NAME: data_version
269 TYPE: HEADER_VALUE
270 ARG: BTREE_DATA_VERSION
271 FLAG: ReadOnly
272 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
273
drh9ccd8652013-09-13 16:36:46 +0000274 NAME: freelist_count
275 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000276 ARG: BTREE_FREE_PAGE_COUNT
277 FLAG: ReadOnly
drh9ccd8652013-09-13 16:36:46 +0000278 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
279
280 NAME: application_id
281 TYPE: HEADER_VALUE
drh8e755e72014-12-19 18:49:55 +0000282 ARG: BTREE_APPLICATION_ID
drh9ccd8652013-09-13 16:36:46 +0000283 IF: !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
284
285 NAME: compile_options
286 IF: !defined(SQLITE_OMIT_COMPILEOPTION_DIAGS)
287
288 NAME: wal_checkpoint
drhf63936e2013-10-03 14:08:07 +0000289 FLAG: NeedSchema
drh9ccd8652013-09-13 16:36:46 +0000290 IF: !defined(SQLITE_OMIT_WAL)
291
292 NAME: wal_autocheckpoint
293 IF: !defined(SQLITE_OMIT_WAL)
294
295 NAME: shrink_memory
296
297 NAME: busy_timeout
298
299 NAME: lock_status
300 IF: defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
301
302 NAME: key
303 IF: defined(SQLITE_HAS_CODEC)
304
305 NAME: rekey
306 IF: defined(SQLITE_HAS_CODEC)
307
308 NAME: hexkey
309 IF: defined(SQLITE_HAS_CODEC)
310
drh8ab88322013-10-07 00:36:01 +0000311 NAME: hexrekey
312 TYPE: HEXKEY
313 IF: defined(SQLITE_HAS_CODEC)
314
drh9ccd8652013-09-13 16:36:46 +0000315 NAME: activate_extensions
316 IF: defined(SQLITE_HAS_CODEC) || defined(SQLITE_ENABLE_CEROD)
drh55e85ca2013-09-13 21:01:56 +0000317
318 NAME: soft_heap_limit
drh03459612014-08-25 15:13:22 +0000319
320 NAME: threads
drh9ccd8652013-09-13 16:36:46 +0000321}
drh67e65e52015-02-02 21:34:54 +0000322
323# Open the output file
324#
325set destfile "[file dir [file dir [file normal $argv0]]]/src/pragma.h"
326puts "Overwriting $destfile with new pragma table..."
327set fd [open $destfile wb]
328puts $fd {/* DO NOT EDIT!
329** This file is automatically generated by the script at
330** ../tool/mkpragmatab.tcl. To update the set of pragmas, edit
331** that script and rerun it.
332*/}
333
334# Parse the PRAGMA table above.
335#
drh9ccd8652013-09-13 16:36:46 +0000336set name {}
337set type {}
338set if {}
drhf63936e2013-10-03 14:08:07 +0000339set flags {}
drh9ccd8652013-09-13 16:36:46 +0000340set arg 0
341proc record_one {} {
drhf63936e2013-10-03 14:08:07 +0000342 global name type if arg allbyname typebyif flags
drh9ccd8652013-09-13 16:36:46 +0000343 if {$name==""} return
drhf63936e2013-10-03 14:08:07 +0000344 set allbyname($name) [list $type $arg $if $flags]
drh9ccd8652013-09-13 16:36:46 +0000345 set name {}
346 set type {}
347 set if {}
drhf63936e2013-10-03 14:08:07 +0000348 set flags {}
drh9ccd8652013-09-13 16:36:46 +0000349 set arg 0
350}
351foreach line [split $pragma_def \n] {
352 set line [string trim $line]
353 if {$line==""} continue
354 foreach {id val} [split $line :] break
355 set val [string trim $val]
356 if {$id=="NAME"} {
357 record_one
358 set name $val
359 set type [string toupper $val]
360 } elseif {$id=="TYPE"} {
361 set type $val
362 } elseif {$id=="ARG"} {
363 set arg $val
364 } elseif {$id=="IF"} {
mistachkindd197832013-10-21 23:17:23 +0000365 lappend if $val
drhf63936e2013-10-03 14:08:07 +0000366 } elseif {$id=="FLAG"} {
367 foreach term [split $val] {
368 lappend flags $term
369 set allflags($term) 1
370 }
drh9ccd8652013-09-13 16:36:46 +0000371 } else {
372 error "bad pragma_def line: $line"
373 }
374}
375record_one
376set allnames [lsort [array names allbyname]]
377
378# Generate #defines for all pragma type names. Group the pragmas that are
379# omit in default builds (defined(SQLITE_DEBUG) and defined(SQLITE_HAS_CODEC))
380# at the end.
381#
382set pnum 0
383foreach name $allnames {
384 set type [lindex $allbyname($name) 0]
385 if {[info exists seentype($type)]} continue
386 set if [lindex $allbyname($name) 2]
387 if {[regexp SQLITE_DEBUG $if] || [regexp SQLITE_HAS_CODEC $if]} continue
388 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000389 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000390 incr pnum
391}
392foreach name $allnames {
393 set type [lindex $allbyname($name) 0]
394 if {[info exists seentype($type)]} continue
395 set if [lindex $allbyname($name) 2]
396 if {[regexp SQLITE_DEBUG $if]} continue
397 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000398 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000399 incr pnum
400}
401foreach name $allnames {
402 set type [lindex $allbyname($name) 0]
403 if {[info exists seentype($type)]} continue
404 set seentype($type) 1
drh67e65e52015-02-02 21:34:54 +0000405 puts $fd [format {#define %-35s %4d} PragTyp_$type $pnum]
drh9ccd8652013-09-13 16:36:46 +0000406 incr pnum
407}
408
drhf63936e2013-10-03 14:08:07 +0000409# Generate #defines for flags
410#
411set fv 1
412foreach f [lsort [array names allflags]] {
drh67e65e52015-02-02 21:34:54 +0000413 puts $fd [format {#define PragFlag_%-20s 0x%02x} $f $fv]
drhf63936e2013-10-03 14:08:07 +0000414 set fv [expr {$fv*2}]
415}
416
drh9ccd8652013-09-13 16:36:46 +0000417# Generate the lookup table
418#
drh67e65e52015-02-02 21:34:54 +0000419puts $fd "static const struct sPragmaNames \173"
420puts $fd " const char *const zName; /* Name of pragma */"
421puts $fd " u8 ePragTyp; /* PragTyp_XXX value */"
422puts $fd " u8 mPragFlag; /* Zero or more PragFlag_XXX values */"
423puts $fd " u32 iArg; /* Extra argument */"
424puts $fd "\175 aPragmaNames\[\] = \173"
drh9ccd8652013-09-13 16:36:46 +0000425
426set current_if {}
427set spacer [format { %26s } {}]
428foreach name $allnames {
drhf63936e2013-10-03 14:08:07 +0000429 foreach {type arg if flag} $allbyname($name) break
drh9ccd8652013-09-13 16:36:46 +0000430 if {$if!=$current_if} {
mistachkindd197832013-10-21 23:17:23 +0000431 if {$current_if!=""} {
432 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000433 puts $fd "#endif"
mistachkindd197832013-10-21 23:17:23 +0000434 }
435 }
drh9ccd8652013-09-13 16:36:46 +0000436 set current_if $if
mistachkindd197832013-10-21 23:17:23 +0000437 if {$current_if!=""} {
438 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000439 puts $fd "#if $this_if"
mistachkindd197832013-10-21 23:17:23 +0000440 }
441 }
drh9ccd8652013-09-13 16:36:46 +0000442 }
drh9ccd8652013-09-13 16:36:46 +0000443 set typex [format PragTyp_%-23s $type,]
drhf63936e2013-10-03 14:08:07 +0000444 if {$flag==""} {
445 set flagx "0"
drh9ccd8652013-09-13 16:36:46 +0000446 } else {
drhf63936e2013-10-03 14:08:07 +0000447 set flagx PragFlag_[join $flag {|PragFlag_}]
drh9ccd8652013-09-13 16:36:46 +0000448 }
drh67e65e52015-02-02 21:34:54 +0000449 puts $fd " \173 /* zName: */ \"$name\","
450 puts $fd " /* ePragTyp: */ PragTyp_$type,"
451 puts $fd " /* ePragFlag: */ $flagx,"
452 puts $fd " /* iArg: */ $arg \175,"
drh9ccd8652013-09-13 16:36:46 +0000453}
mistachkindd197832013-10-21 23:17:23 +0000454if {$current_if!=""} {
455 foreach this_if $current_if {
drh67e65e52015-02-02 21:34:54 +0000456 puts $fd "#endif"
mistachkindd197832013-10-21 23:17:23 +0000457 }
458}
drh67e65e52015-02-02 21:34:54 +0000459puts $fd "\175;"
drh6bb64f62013-09-13 16:56:17 +0000460
461# count the number of pragmas, for information purposes
462#
463set allcnt 0
464set dfltcnt 0
465foreach name $allnames {
466 incr allcnt
467 set if [lindex $allbyname($name) 2]
468 if {[regexp {^defined} $if] || [regexp {[^!]defined} $if]} continue
469 incr dfltcnt
470}
drh67e65e52015-02-02 21:34:54 +0000471puts $fd "/* Number of pragmas: $dfltcnt on by default, $allcnt total. */"