================
@@ -3558,6 +3558,76 @@ struct FormatStyle {
   /// \version 9
   std::vector<std::string> NamespaceMacros;
 
+  /// Control over each component in a numeric literal.
+  enum NumericLiteralComponentStyle : int8_t {
+    /// Leave this component of the literal as is.
+    NLCS_Leave,
+    /// Always format this component with upper case characters.
+    NLCS_Always,
+    /// Never format this component with upper case characters.
+    NLCS_Never,
+  };
+
+  /// Character case format for different components of a numeric literal.
+  struct NumericLiteralCaseStyle {
+    /// Format floating point exponent separator character case.
+    /// \code{.text}
+    ///   /* UpperCaseFloatExponentSeparator = Leave */
+    ///   float a = 6.02e23 + 1.0E10;
+    ///   /* UpperCaseFloatExponentSeparator = Always */
+    ///   float a = 6.02E23 + 1.0E10;
+    ///   /* UpperCaseFloatExponentSeparator = Never */
+    ///   float a = 6.02e23 + 1.0e10;
+    /// \endcode
+    NumericLiteralComponentStyle UpperCaseFloatExponentSeparator;
+    /// Format hexadecimal digit case.
+    /// \code{.text}
+    ///   /* UpperCaseHexDigit = Leave */
+    ///   a = 0xaBcDeF;
+    ///   /* UpperCaseHexDigit = Always */
+    ///   a = 0xABCDEF;
+    ///   /* UpperCaseHexDigit = Never */
+    ///   a = 0xabcdef;
+    /// \endcode
+    NumericLiteralComponentStyle UpperCaseHexDigit;
+    /// Format integer prefix case.
+    /// \code{.text}
+    ///    /* UpperCasePrefix = Leave */
+    ///    a = 0XF0 | 0b1;
+    ///    /* UpperCasePrefix = Always */
+    ///    a = 0XF0 | 0B1;
+    ///    /* UpperCasePrefix = Never */
+    ///    a = 0xF0 | 0b1;
+    /// \endcode
+    NumericLiteralComponentStyle UpperCasePrefix;
+    /// Format suffix case. This option excludes case-specific reserved
+    /// suffixes, such as ``min`` in C++.
+    /// \code{.text}
+    ///   /* UpperCaseSuffix = Leave */
+    ///   a = 1uLL;
+    ///   /* UpperCaseSuffix = Always */
+    ///   a = 1ULL;
+    ///   /* UpperCaseSuffix = Never */
+    ///   a = 1ull;
+    /// \endcode
+    NumericLiteralComponentStyle UpperCaseSuffix;
+
+    bool operator==(const NumericLiteralCaseStyle &R) const {
+      return UpperCaseFloatExponentSeparator ==
+                 R.UpperCaseFloatExponentSeparator &&
+             UpperCaseHexDigit == R.UpperCaseHexDigit &&
+             UpperCasePrefix == R.UpperCasePrefix &&
+             UpperCaseSuffix == R.UpperCaseSuffix;
+    }
+    bool operator!=(const NumericLiteralCaseStyle &R) const {
----------------
HazardyKnusperkeks wrote:

```suggestion
    }

    bool operator!=(const NumericLiteralCaseStyle &R) const {
```

https://github.com/llvm/llvm-project/pull/151590
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to