Skip to main content

syntaqlite_syntax/sqlite/
cflags.rs

1// Copyright 2025 The syntaqlite Authors. All rights reserved.
2// Licensed under the Apache License, Version 2.0.
3// @generated by syntaqlite-buildtools — DO NOT EDIT
4
5//! Parser-level compile-time flags for the `SQLite` dialect.
6
7/// A parser-level compile-time feature flag for the `SQLite` dialect.
8///
9/// Each variant corresponds to a `SYNQ_CFLAG_IDX_*` constant in `cflags.h`.
10/// The discriminant equals the C compact index (0–21).
11///
12/// Pass a variant to [`crate::util::SqliteSyntaxFlags::has`] or
13/// [`crate::util::SqliteSyntaxFlags::with`].
14///
15/// For the full 42-flag set use `syntaqlite::util::SqliteFlag`.
16#[repr(u32)]
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub enum SqliteSyntaxFlag {
19    /// `SQLITE_OMIT_ALTERTABLE`
20    OmitAltertable = 0,
21    /// `SQLITE_OMIT_ANALYZE`
22    OmitAnalyze = 1,
23    /// `SQLITE_OMIT_ATTACH`
24    OmitAttach = 2,
25    /// `SQLITE_OMIT_AUTOINCREMENT`
26    OmitAutoincrement = 3,
27    /// `SQLITE_OMIT_CAST`
28    OmitCast = 4,
29    /// `SQLITE_OMIT_COMPOUND_SELECT`
30    OmitCompoundSelect = 5,
31    /// `SQLITE_OMIT_CTE`
32    OmitCte = 6,
33    /// `SQLITE_OMIT_EXPLAIN`
34    OmitExplain = 7,
35    /// `SQLITE_OMIT_FOREIGN_KEY`
36    OmitForeignKey = 8,
37    /// `SQLITE_OMIT_GENERATED_COLUMNS`
38    OmitGeneratedColumns = 9,
39    /// `SQLITE_OMIT_PRAGMA`
40    OmitPragma = 10,
41    /// `SQLITE_OMIT_REINDEX`
42    OmitReindex = 11,
43    /// `SQLITE_OMIT_RETURNING`
44    OmitReturning = 12,
45    /// `SQLITE_OMIT_SUBQUERY`
46    OmitSubquery = 13,
47    /// `SQLITE_OMIT_TEMPDB`
48    OmitTempdb = 14,
49    /// `SQLITE_OMIT_TRIGGER`
50    OmitTrigger = 15,
51    /// `SQLITE_OMIT_VACUUM`
52    OmitVacuum = 16,
53    /// `SQLITE_OMIT_VIEW`
54    OmitView = 17,
55    /// `SQLITE_OMIT_VIRTUALTABLE`
56    OmitVirtualtable = 18,
57    /// `SQLITE_OMIT_WINDOWFUNC`
58    OmitWindowfunc = 19,
59    /// `SQLITE_ENABLE_ORDERED_SET_AGGREGATES`
60    EnableOrderedSetAggregates = 20,
61    /// `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`
62    EnableUpdateDeleteLimit = 21,
63}
64
65impl SqliteSyntaxFlag {
66    const ALL: &'static [Self] = &[
67        Self::OmitAltertable,
68        Self::OmitAnalyze,
69        Self::OmitAttach,
70        Self::OmitAutoincrement,
71        Self::OmitCast,
72        Self::OmitCompoundSelect,
73        Self::OmitCte,
74        Self::OmitExplain,
75        Self::OmitForeignKey,
76        Self::OmitGeneratedColumns,
77        Self::OmitPragma,
78        Self::OmitReindex,
79        Self::OmitReturning,
80        Self::OmitSubquery,
81        Self::OmitTempdb,
82        Self::OmitTrigger,
83        Self::OmitVacuum,
84        Self::OmitView,
85        Self::OmitVirtualtable,
86        Self::OmitWindowfunc,
87        Self::EnableOrderedSetAggregates,
88        Self::EnableUpdateDeleteLimit,
89    ];
90
91    const NAMES: &'static [&'static str] = &[
92        "SQLITE_OMIT_ALTERTABLE",
93        "SQLITE_OMIT_ANALYZE",
94        "SQLITE_OMIT_ATTACH",
95        "SQLITE_OMIT_AUTOINCREMENT",
96        "SQLITE_OMIT_CAST",
97        "SQLITE_OMIT_COMPOUND_SELECT",
98        "SQLITE_OMIT_CTE",
99        "SQLITE_OMIT_EXPLAIN",
100        "SQLITE_OMIT_FOREIGN_KEY",
101        "SQLITE_OMIT_GENERATED_COLUMNS",
102        "SQLITE_OMIT_PRAGMA",
103        "SQLITE_OMIT_REINDEX",
104        "SQLITE_OMIT_RETURNING",
105        "SQLITE_OMIT_SUBQUERY",
106        "SQLITE_OMIT_TEMPDB",
107        "SQLITE_OMIT_TRIGGER",
108        "SQLITE_OMIT_VACUUM",
109        "SQLITE_OMIT_VIEW",
110        "SQLITE_OMIT_VIRTUALTABLE",
111        "SQLITE_OMIT_WINDOWFUNC",
112        "SQLITE_ENABLE_ORDERED_SET_AGGREGATES",
113        "SQLITE_ENABLE_UPDATE_DELETE_LIMIT",
114    ];
115
116    /// The canonical `SQLITE_*` flag name (e.g. `"SQLITE_OMIT_WINDOWFUNC"`).
117    pub fn name(self) -> &'static str {
118        Self::NAMES[self as usize]
119    }
120
121    /// Look up a parser flag by its canonical `SQLITE_*` name.
122    ///
123    /// Returns `None` if `s` is not a known parser flag name.
124    pub fn from_name(s: &str) -> Option<Self> {
125        Self::ALL.iter().copied().find(|f| f.name() == s)
126    }
127}