Use enum class in CBC_PDF417HighLevelEncoder.

Make the SubMode an enum class.

Change-Id: Ie34af9a93432cf0198d21dc7586d8172136db6a2
Reviewed-on: https://pdfium-review.googlesource.com/c/45691
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
index 272de3b..7739801 100644
--- a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
+++ b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.cpp
@@ -27,10 +27,6 @@
 #include "fxbarcode/utils.h"
 #include "third_party/bigint/BigIntegerLibrary.hh"
 
-#define SUBMODE_ALPHA 0
-#define SUBMODE_LOWER 1
-#define SUBMODE_MIXED 2
-
 namespace {
 
 constexpr int32_t kLatchToText = 900;
@@ -102,7 +98,7 @@
   WideString sb;
   sb.Reserve(len);
   size_t p = 0;
-  int32_t textSubMode = SUBMODE_ALPHA;
+  SubMode textSubMode = SubMode::kAlpha;
   if (compaction == TEXT) {
     EncodeText(msg, p, len, textSubMode, &sb);
   } else if (compaction == BYTES) {
@@ -117,7 +113,7 @@
       if (n >= 13) {
         sb += kLatchToNumeric;
         encodingMode = NUMERIC_COMPACTION;
-        textSubMode = SUBMODE_ALPHA;
+        textSubMode = SubMode::kAlpha;
         EncodeNumeric(msg, p, n, &sb);
         p += n;
       } else {
@@ -126,7 +122,7 @@
           if (encodingMode != TEXT_COMPACTION) {
             sb += kLatchToText;
             encodingMode = TEXT_COMPACTION;
-            textSubMode = SUBMODE_ALPHA;
+            textSubMode = SubMode::kAlpha;
           }
           textSubMode = EncodeText(msg, p, t, textSubMode, &sb);
           p += t;
@@ -146,7 +142,7 @@
           } else {
             EncodeBinary(byteArr, p, b_value, encodingMode, &sb);
             encodingMode = BYTE_COMPACTION;
-            textSubMode = SUBMODE_ALPHA;
+            textSubMode = SubMode::kAlpha;
           }
           p += b_value;
         }
@@ -176,19 +172,20 @@
   }
 }
 
-int32_t CBC_PDF417HighLevelEncoder::EncodeText(const WideString& msg,
-                                               size_t startpos,
-                                               size_t count,
-                                               int32_t initialSubmode,
-                                               WideString* sb) {
+CBC_PDF417HighLevelEncoder::SubMode CBC_PDF417HighLevelEncoder::EncodeText(
+    const WideString& msg,
+    size_t startpos,
+    size_t count,
+    SubMode initialSubmode,
+    WideString* sb) {
   WideString tmp;
   tmp.Reserve(count);
-  int32_t submode = initialSubmode;
+  SubMode submode = initialSubmode;
   size_t idx = 0;
   while (true) {
     wchar_t ch = msg[startpos + idx];
     switch (submode) {
-      case SUBMODE_ALPHA:
+      case SubMode::kAlpha:
         if (IsAlphaUpperOrSpace(ch)) {
           if (ch == ' ')
             tmp += 26;
@@ -197,19 +194,19 @@
           break;
         }
         if (IsAlphaLowerOrSpace(ch)) {
-          submode = SUBMODE_LOWER;
+          submode = SubMode::kLower;
           tmp += 27;
           continue;
         }
         if (IsMixed(ch)) {
-          submode = SUBMODE_MIXED;
+          submode = SubMode::kMixed;
           tmp += 28;
           continue;
         }
         tmp += 29;
         tmp += g_punctuation[ch];
         break;
-      case SUBMODE_LOWER:
+      case SubMode::kLower:
         if (IsAlphaLowerOrSpace(ch)) {
           if (ch == ' ')
             tmp += 26;
@@ -223,7 +220,7 @@
           break;
         }
         if (IsMixed(ch)) {
-          submode = SUBMODE_MIXED;
+          submode = SubMode::kMixed;
           tmp += 28;
           continue;
         }
@@ -231,25 +228,25 @@
         tmp += 29;
         tmp += g_punctuation[ch];
         break;
-      case SUBMODE_MIXED:
+      case SubMode::kMixed:
         if (IsMixed(ch)) {
           tmp += g_mixed[ch];
           break;
         }
         if (IsAlphaUpperOrSpace(ch)) {
-          submode = SUBMODE_ALPHA;
+          submode = SubMode::kAlpha;
           tmp += 28;
           continue;
         }
         if (IsAlphaLowerOrSpace(ch)) {
-          submode = SUBMODE_LOWER;
+          submode = SubMode::kLower;
           tmp += 27;
           continue;
         }
         if (startpos + idx + 1 < count) {
           wchar_t next = msg[startpos + idx + 1];
           if (IsPunctuation(next)) {
-            submode = SUBMODE_PUNCTUATION;
+            submode = SubMode::kPunctuation;
             tmp += 25;
             continue;
           }
@@ -262,7 +259,7 @@
           tmp += g_punctuation[ch];
           break;
         }
-        submode = SUBMODE_ALPHA;
+        submode = SubMode::kAlpha;
         tmp += 29;
         continue;
     }
diff --git a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
index 695afbe..4706ab1 100644
--- a/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
+++ b/fxbarcode/pdf417/BC_PDF417HighLevelEncoder.h
@@ -22,15 +22,16 @@
   static void Finalize();
 
  private:
+  enum class SubMode { kAlpha = 0, kLower, kMixed, kPunctuation };
+
   static constexpr int32_t TEXT_COMPACTION = 0;
   static constexpr int32_t BYTE_COMPACTION = 1;
   static constexpr int32_t NUMERIC_COMPACTION = 2;
-  static constexpr int32_t SUBMODE_PUNCTUATION = 3;
 
-  static int32_t EncodeText(const WideString& msg,
+  static SubMode EncodeText(const WideString& msg,
                             size_t startpos,
                             size_t count,
-                            int32_t initialSubmode,
+                            SubMode initialSubmode,
                             WideString* sb);
   static void EncodeBinary(const std::vector<uint8_t>& bytes,
                            size_t startpos,