XFA: generate value tables with C preprocessor.

Ensure several tables stay in sync with each other in face of
additions.

Change-Id: I76610104cf64a8043e7741065781821d2091238b
Reviewed-on: https://pdfium-review.googlesource.com/c/46651
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/fxfa_basic.h b/xfa/fxfa/fxfa_basic.h
index 9198caa..267448e 100644
--- a/xfa/fxfa/fxfa_basic.h
+++ b/xfa/fxfa/fxfa_basic.h
@@ -96,272 +96,10 @@
 };
 
 enum class XFA_AttributeValue : uint16_t {
-  Asterisk,
-  Slash,
-  Backslash,
-  On,
-  Tb,
-  Up,
-  MetaData,
-  Delegate,
-  PostSubmit,
-  Name,
-  Cross,
-  Next,
-  None,
-  ShortEdge,
-  Checksum_1mod10_1mod11,
-  Height,
-  CrossDiagonal,
-  All,
-  Any,
-  ToRight,
-  MatchTemplate,
-  Dpl,
-  Invisible,
-  Fit,
-  Width,
-  PreSubmit,
-  Ipl,
-  FlateCompress,
-  Med,
-  Odd,
-  Off,
-  Pdf,
-  Row,
-  Top,
-  Xdp,
-  Xfd,
-  Xml,
-  Zip,
-  Zpl,
-  Visible,
-  Exclude,
-  MouseEnter,
-  Pair,
-  Filter,
-  MoveLast,
-  ExportAndImport,
-  Push,
-  Portrait,
-  Default,
-  StoredProc,
-  StayBOF,
-  StayEOF,
-  PostPrint,
-  UsCarrier,
-  Right,
-  PreOpen,
-  Actual,
-  Rest,
-  TopCenter,
-  StandardSymbol,
-  Initialize,
-  JustifyAll,
-  Normal,
-  Landscape,
-  NonInteractive,
-  MouseExit,
-  Minus,
-  DiagonalLeft,
-  SimplexPaginated,
-  Document,
-  Warning,
-  Auto,
-  Below,
-  BottomLeft,
-  BottomCenter,
-  Tcpl,
-  Text,
-  Grouping,
-  SecureSymbol,
-  PreExecute,
-  DocClose,
-  Keyset,
-  Vertical,
-  PreSave,
-  PreSign,
-  Bottom,
-  ToTop,
-  Verify,
-  First,
-  ContentArea,
-  Solid,
-  Pessimistic,
-  DuplexPaginated,
-  Round,
-  Remerge,
-  Ordered,
-  Percent,
-  Even,
-  Exit,
-  ToolTip,
-  OrderedOccurrence,
-  ReadOnly,
-  Currency,
-  Concat,
-  Thai,
-  Embossed,
-  Formdata,
-  Greek,
-  Decimal,
-  Select,
-  LongEdge,
-  Protected,
-  BottomRight,
-  Zero,
-  ForwardOnly,
-  DocReady,
-  Hidden,
-  Include,
-  Dashed,
-  MultiSelect,
-  Inactive,
-  Embed,
-  Static,
-  OnEntry,
-  Cyrillic,
-  NonBlank,
-  TopRight,
-  Hebrew,
-  TopLeft,
-  Center,
-  MoveFirst,
-  Diamond,
-  PageOdd,
-  Checksum_1mod10,
-  Korean,
-  AboveEmbedded,
-  ZipCompress,
-  Numeric,
-  Circle,
-  ToBottom,
-  Inverted,
-  Update,
-  Isoname,
-  Server,
-  Position,
-  MiddleCenter,
-  Optional,
-  UsePrinterSetting,
-  Outline,
-  IndexChange,
-  Change,
-  PageArea,
-  Once,
-  Only,
-  Open,
-  Caption,
-  Raised,
-  Justify,
-  RefAndDescendants,
-  Short,
-  PageFront,
-  Monospace,
-  Middle,
-  PrePrint,
-  Always,
-  Unknown,
-  ToLeft,
-  Above,
-  DashDot,
-  Gregorian,
-  Roman,
-  MouseDown,
-  Symbol,
-  PageEven,
-  Sign,
-  AddNew,
-  Star,
-  Optimistic,
-  Rl_tb,
-  MiddleRight,
-  Maintain,
-  Package,
-  SimplifiedChinese,
-  ToCenter,
-  Back,
-  Unspecified,
-  BatchOptimistic,
-  Bold,
-  Both,
-  Butt,
-  Client,
-  Checksum_2mod10,
-  ImageOnly,
-  Horizontal,
-  Dotted,
-  UserControl,
-  DiagonalRight,
-  ConsumeData,
-  Check,
-  Data,
-  Down,
-  SansSerif,
-  Inline,
-  TraditionalChinese,
-  Warn,
-  RefOnly,
-  InteractiveForms,
-  Word,
-  Unordered,
-  Required,
-  ImportOnly,
-  BelowEmbedded,
-  Japanese,
-  Full,
-  Rl_row,
-  Vietnamese,
-  EastEuropeanRoman,
-  MouseUp,
-  ExportOnly,
-  Clear,
-  Click,
-  Base64,
-  Close,
-  Host,
-  Global,
-  Blank,
-  Table,
-  Import,
-  Custom,
-  MiddleLeft,
-  PostExecute,
-  Radix,
-  PostOpen,
-  Enter,
-  Ignore,
-  Lr_tb,
-  Fantasy,
-  Italic,
-  Author,
-  ToEdge,
-  Choice,
-  Disabled,
-  CrossHatch,
-  DataRef,
-  DashDotDot,
-  Square,
-  Dynamic,
-  Manual,
-  Etched,
-  ValidationState,
-  Cursive,
-  Last,
-  Left,
-  Link,
-  Long,
-  InternationalCarrier,
-  PDF1_3,
-  PDF1_6,
-  Serif,
-  PostSave,
-  Ready,
-  PostSign,
-  Arabic,
-  Error,
-  Urlencoded,
-  Lowered
+#undef VALUE____
+#define VALUE____(a, b, c) c,
+#include "xfa/fxfa/parser/attribute_values.inc"
+#undef VALUE____
 };
 
 enum class XFA_Attribute : uint8_t {
diff --git a/xfa/fxfa/fxfa_basic_unittest.cpp b/xfa/fxfa/fxfa_basic_unittest.cpp
index e4da266..7462b04 100644
--- a/xfa/fxfa/fxfa_basic_unittest.cpp
+++ b/xfa/fxfa/fxfa_basic_unittest.cpp
@@ -7,14 +7,14 @@
 #include "core/fxcrt/bytestring.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-TEST(FXFABasic, HashMatchesString) {
+TEST(FXFABasic, AttrHashMatchesString) {
 #undef ATTR____
 #define ATTR____(a, b, c) EXPECT_EQ(a, FX_HashCode_GetAsIfW(b, false));
 #include "xfa/fxfa/parser/attributes.inc"
 #undef ATTR____
 }
 
-TEST(FXFABasic, HashOrder) {
+TEST(FXFABasic, AttrHashOrder) {
   uint32_t so_far = 0;
 #undef ATTR____
 #define ATTR____(a, b, c) \
@@ -23,3 +23,20 @@
 #include "xfa/fxfa/parser/attributes.inc"
 #undef ATTR____
 }
+
+TEST(FXFABasic, ValueHashMatchesString) {
+#undef VALUE____
+#define VALUE____(a, b, c) EXPECT_EQ(a, FX_HashCode_GetAsIfW(b, false));
+#include "xfa/fxfa/parser/attribute_values.inc"
+#undef VALUE____
+}
+
+TEST(FXFABasic, ValueHashOrder) {
+  uint32_t so_far = 0;
+#undef VALUE____
+#define VALUE____(a, b, c) \
+  EXPECT_LT(so_far, a);    \
+  so_far = a;
+#include "xfa/fxfa/parser/attribute_values.inc"
+#undef VALUE____
+}
diff --git a/xfa/fxfa/parser/attribute_values.inc b/xfa/fxfa/parser/attribute_values.inc
new file mode 100644
index 0000000..6cfdadf
--- /dev/null
+++ b/xfa/fxfa/parser/attribute_values.inc
@@ -0,0 +1,272 @@
+// Copyright 2018 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+VALUE____(0x0000002au, "*", Asterisk)
+VALUE____(0x0000002fu, "/", Slash)
+VALUE____(0x0000005cu, "\\", Backslash)
+VALUE____(0x000239bdu, "on", On)
+VALUE____(0x00025356u, "tb", Tb)
+VALUE____(0x00025885u, "up", Up)
+VALUE____(0x0091b281u, "metaData", MetaData)
+VALUE____(0x01f8dedbu, "delegate", Delegate)
+VALUE____(0x02a6c55au, "postSubmit", PostSubmit)
+VALUE____(0x031b19c1u, "name", Name)
+VALUE____(0x0378a38au, "cross", Cross)
+VALUE____(0x03848b3fu, "next", Next)
+VALUE____(0x048b6670u, "none", None)
+VALUE____(0x051aafe5u, "shortEdge", ShortEdge)
+VALUE____(0x055264c4u, "1mod10_1mod11", Checksum_1mod10_1mod11)
+VALUE____(0x05a5c519u, "height", Height)
+VALUE____(0x089ce549u, "crossDiagonal", CrossDiagonal)
+VALUE____(0x09f9d0f9u, "all", All)
+VALUE____(0x09f9db48u, "any", Any)
+VALUE____(0x0a126261u, "toRight", ToRight)
+VALUE____(0x0a36de29u, "matchTemplate", MatchTemplate)
+VALUE____(0x0a48d040u, "dpl", Dpl)
+VALUE____(0x0a559c05u, "invisible", Invisible)
+VALUE____(0x0a7d48e3u, "fit", Fit)
+VALUE____(0x0a8a8f80u, "width", Width)
+VALUE____(0x0ab466bbu, "preSubmit", PreSubmit)
+VALUE____(0x0acc5785u, "ipl", Ipl)
+VALUE____(0x0afab0f8u, "flateCompress", FlateCompress)
+VALUE____(0x0b355816u, "med", Med)
+VALUE____(0x0b69ef77u, "odd", Odd)
+VALUE____(0x0b69f9bbu, "off", Off)
+VALUE____(0x0b843dbau, "pdf", Pdf)
+VALUE____(0x0bb912b8u, "row", Row)
+VALUE____(0x0bedaf33u, "top", Top)
+VALUE____(0x0c56afccu, "xdp", Xdp)
+VALUE____(0x0c56ba02u, "xfd", Xfd)
+VALUE____(0x0c56ddf1u, "xml", Xml)
+VALUE____(0x0c8b65f3u, "zip", Zip)
+VALUE____(0x0c8b89d6u, "zpl", Zpl)
+VALUE____(0x0f55d7eeu, "visible", Visible)
+VALUE____(0x0fe3596au, "exclude", Exclude)
+VALUE____(0x109d7ce7u, "mouseEnter", MouseEnter)
+VALUE____(0x10f1bc0cu, "pair", Pair)
+VALUE____(0x1154efe6u, "filter", Filter)
+VALUE____(0x125bc94bu, "moveLast", MoveLast)
+VALUE____(0x12e1f1f0u, "exportAndImport", ExportAndImport)
+VALUE____(0x13000c60u, "push", Push)
+VALUE____(0x138ee315u, "portrait", Portrait)
+VALUE____(0x14da2125u, "default", Default)
+VALUE____(0x157749a5u, "storedProc", StoredProc)
+VALUE____(0x16641198u, "stayBOF", StayBOF)
+VALUE____(0x16b2fc5bu, "stayEOF", StayEOF)
+VALUE____(0x17fad373u, "postPrint", PostPrint)
+VALUE____(0x193207d0u, "usCarrier", UsCarrier)
+VALUE____(0x193ade3eu, "right", Right)
+VALUE____(0x1bfc72d9u, "preOpen", PreOpen)
+VALUE____(0x1cc9317au, "actual", Actual)
+VALUE____(0x1f31df1eu, "rest", Rest)
+VALUE____(0x1fb1bf14u, "topCenter", TopCenter)
+VALUE____(0x207de667u, "standardSymbol", StandardSymbol)
+VALUE____(0x2196a452u, "initialize", Initialize)
+VALUE____(0x23bd40c7u, "justifyAll", JustifyAll)
+VALUE____(0x247cf3e9u, "normal", Normal)
+VALUE____(0x25aa946bu, "landscape", Landscape)
+VALUE____(0x2739b5c9u, "nonInteractive", NonInteractive)
+VALUE____(0x27410f03u, "mouseExit", MouseExit)
+VALUE____(0x2854e62cu, "minus", Minus)
+VALUE____(0x287e936au, "diagonalLeft", DiagonalLeft)
+VALUE____(0x2972a98fu, "simplexPaginated", SimplexPaginated)
+VALUE____(0x29d8225fu, "document", Document)
+VALUE____(0x2a9d3016u, "warning", Warning)
+VALUE____(0x2b35b6d9u, "auto", Auto)
+VALUE____(0x2c1653d9u, "below", Below)
+VALUE____(0x2c1f0540u, "bottomLeft", BottomLeft)
+VALUE____(0x2c44e816u, "bottomCenter", BottomCenter)
+VALUE____(0x2cd3e9f3u, "tcpl", Tcpl)
+VALUE____(0x2d08af85u, "text", Text)
+VALUE____(0x2dc478ebu, "grouping", Grouping)
+VALUE____(0x2ef3afddu, "secureSymbol", SecureSymbol)
+VALUE____(0x2f2dd29au, "preExecute", PreExecute)
+VALUE____(0x33c43decu, "docClose", DocClose)
+VALUE____(0x33f25bb5u, "keyset", Keyset)
+VALUE____(0x34e363dau, "vertical", Vertical)
+VALUE____(0x361fa1b6u, "preSave", PreSave)
+VALUE____(0x36f1c6d8u, "preSign", PreSign)
+VALUE____(0x399f02b5u, "bottom", Bottom)
+VALUE____(0x3b0ab096u, "toTop", ToTop)
+VALUE____(0x3c752495u, "verify", Verify)
+VALUE____(0x3ce05d68u, "first", First)
+VALUE____(0x3ecead94u, "contentArea", ContentArea)
+VALUE____(0x40623b5bu, "solid", Solid)
+VALUE____(0x42c6cd8du, "pessimistic", Pessimistic)
+VALUE____(0x43ddc6bfu, "duplexPaginated", DuplexPaginated)
+VALUE____(0x442f68c8u, "round", Round)
+VALUE____(0x45efb847u, "remerge", Remerge)
+VALUE____(0x46972265u, "ordered", Ordered)
+VALUE____(0x46f95531u, "percent", Percent)
+VALUE____(0x46fd25aeu, "even", Even)
+VALUE____(0x4731d6bau, "exit", Exit)
+VALUE____(0x4977356bu, "toolTip", ToolTip)
+VALUE____(0x49b980eeu, "orderedOccurrence", OrderedOccurrence)
+VALUE____(0x4a7e2dfeu, "readOnly", ReadOnly)
+VALUE____(0x4c4e8acbu, "currency", Currency)
+VALUE____(0x4dcf25f8u, "concat", Concat)
+VALUE____(0x4febb826u, "Thai", Thai)
+VALUE____(0x50ef95b2u, "embossed", Embossed)
+VALUE____(0x516e35ceu, "formdata", Formdata)
+VALUE____(0x52fa6f0eu, "Greek", Greek)
+VALUE____(0x54034c2fu, "decimal", Decimal)
+VALUE____(0x542c7300u, "select", Select)
+VALUE____(0x551f0ae5u, "longEdge", LongEdge)
+VALUE____(0x55520a8au, "protected", Protected)
+VALUE____(0x559f76f3u, "bottomRight", BottomRight)
+VALUE____(0x568cb500u, "zero", Zero)
+VALUE____(0x56bcecb7u, "forwardOnly", ForwardOnly)
+VALUE____(0x56bf456bu, "docReady", DocReady)
+VALUE____(0x573cb40cu, "hidden", Hidden)
+VALUE____(0x582e3424u, "include", Include)
+VALUE____(0x58a3dd29u, "dashed", Dashed)
+VALUE____(0x5955b22bu, "multiSelect", MultiSelect)
+VALUE____(0x598d5c53u, "inactive", Inactive)
+VALUE____(0x59c8f27du, "embed", Embed)
+VALUE____(0x5e7555e8u, "static", Static)
+VALUE____(0x606d4defu, "onEntry", OnEntry)
+VALUE____(0x6195eafbu, "Cyrillic", Cyrillic)
+VALUE____(0x6491b0f3u, "nonBlank", NonBlank)
+VALUE____(0x67bef031u, "topRight", TopRight)
+VALUE____(0x67df5ebdu, "Hebrew", Hebrew)
+VALUE____(0x6aea98beu, "topLeft", TopLeft)
+VALUE____(0x6c51afc1u, "center", Center)
+VALUE____(0x7145e6bfu, "moveFirst", MoveFirst)
+VALUE____(0x7375465cu, "diamond", Diamond)
+VALUE____(0x7461aef4u, "pageOdd", PageOdd)
+VALUE____(0x75f8aeb2u, "1mod10", Checksum_1mod10)
+VALUE____(0x76d708e0u, "Korean", Korean)
+VALUE____(0x789f14d7u, "aboveEmbedded", AboveEmbedded)
+VALUE____(0x792ea39fu, "zipCompress", ZipCompress)
+VALUE____(0x7a5b7193u, "numeric", Numeric)
+VALUE____(0x7abec0d2u, "circle", Circle)
+VALUE____(0x7afbba38u, "toBottom", ToBottom)
+VALUE____(0x7b95e661u, "inverted", Inverted)
+VALUE____(0x7baca2e3u, "update", Update)
+VALUE____(0x7eb5da2cu, "isoname", Isoname)
+VALUE____(0x7f6fd3d7u, "server", Server)
+VALUE____(0x814f82b5u, "position", Position)
+VALUE____(0x82deacf0u, "middleCenter", MiddleCenter)
+VALUE____(0x83a49dc6u, "optional", Optional)
+VALUE____(0x861a116fu, "usePrinterSetting", UsePrinterSetting)
+VALUE____(0x86701ce0u, "outline", Outline)
+VALUE____(0x8808385eu, "indexChange", IndexChange)
+VALUE____(0x891f4606u, "change", Change)
+VALUE____(0x89939f36u, "pageArea", PageArea)
+VALUE____(0x8b5c3b25u, "once", Once)
+VALUE____(0x8b5c6962u, "only", Only)
+VALUE____(0x8b90e1f2u, "open", Open)
+VALUE____(0x8bcfe96eu, "caption", Caption)
+VALUE____(0x8ce83ef8u, "raised", Raised)
+VALUE____(0x8d269caeu, "justify", Justify)
+VALUE____(0x8fd520dcu, "refAndDescendants", RefAndDescendants)
+VALUE____(0x9041d4b0u, "short", Short)
+VALUE____(0x90c94426u, "pageFront", PageFront)
+VALUE____(0x936beee5u, "monospace", Monospace)
+VALUE____(0x947fa00fu, "middle", Middle)
+VALUE____(0x9528a7b4u, "prePrint", PrePrint)
+VALUE____(0x959ab231u, "always", Always)
+VALUE____(0x96d61bf0u, "unknown", Unknown)
+VALUE____(0x997194eeu, "toLeft", ToLeft)
+VALUE____(0x9a83a3cdu, "above", Above)
+VALUE____(0x9d0d71c7u, "dashDot", DashDot)
+VALUE____(0x9df56f3eu, "gregorian", Gregorian)
+VALUE____(0x9f6723fdu, "Roman", Roman)
+VALUE____(0x9f693b21u, "mouseDown", MouseDown)
+VALUE____(0xa1429b36u, "symbol", Symbol)
+VALUE____(0xa5aa45cbu, "pageEven", PageEven)
+VALUE____(0xa68635f1u, "sign", Sign)
+VALUE____(0xa7315093u, "addNew", AddNew)
+VALUE____(0xa7a773fau, "star", Star)
+VALUE____(0xa7d57b45u, "optimistic", Optimistic)
+VALUE____(0xa8077321u, "rl-tb", Rl_tb)
+VALUE____(0xa8f1468du, "middleRight", MiddleRight)
+VALUE____(0xaa84a1f1u, "maintain", Maintain)
+VALUE____(0xab40b12cu, "package", Package)
+VALUE____(0xac8b4d85u, "SimplifiedChinese", SimplifiedChinese)
+VALUE____(0xadae6744u, "toCenter", ToCenter)
+VALUE____(0xb0129df1u, "back", Back)
+VALUE____(0xb0f088cfu, "unspecified", Unspecified)
+VALUE____(0xb1271067u, "batchOptimistic", BatchOptimistic)
+VALUE____(0xb18313a1u, "bold", Bold)
+VALUE____(0xb1833cadu, "both", Both)
+VALUE____(0xb221123fu, "butt", Butt)
+VALUE____(0xb40c36bfu, "client", Client)
+VALUE____(0xb56c7053u, "2mod10", Checksum_2mod10)
+VALUE____(0xb683a345u, "imageOnly", ImageOnly)
+VALUE____(0xb7732deau, "horizontal", Horizontal)
+VALUE____(0xb88652a4u, "dotted", Dotted)
+VALUE____(0xbb2f2880u, "userControl", UserControl)
+VALUE____(0xbbb79c5du, "diagonalRight", DiagonalRight)
+VALUE____(0xbd077154u, "consumeData", ConsumeData)
+VALUE____(0xbd3fb11eu, "check", Check)
+VALUE____(0xbde9abdau, "data", Data)
+VALUE____(0xbf5a02d8u, "down", Down)
+VALUE____(0xbf7450eeu, "sansSerif", SansSerif)
+VALUE____(0xc02d649fu, "inline", Inline)
+VALUE____(0xc11a9e3au, "TraditionalChinese", TraditionalChinese)
+VALUE____(0xc16169d8u, "warn", Warn)
+VALUE____(0xc16f071fu, "refOnly", RefOnly)
+VALUE____(0xc27c8ba5u, "interactiveForms", InteractiveForms)
+VALUE____(0xc2d1b15cu, "word", Word)
+VALUE____(0xc3621288u, "unordered", Unordered)
+VALUE____(0xc5251981u, "required", Required)
+VALUE____(0xc7088e7du, "importOnly", ImportOnly)
+VALUE____(0xc72cf0e3u, "belowEmbedded", BelowEmbedded)
+VALUE____(0xc819cf07u, "Japanese", Japanese)
+VALUE____(0xcdce56b3u, "full", Full)
+VALUE____(0xce0122e3u, "rl-row", Rl_row)
+VALUE____(0xcf7d71f1u, "Vietnamese", Vietnamese)
+VALUE____(0xcfde3e09u, "EastEuropeanRoman", EastEuropeanRoman)
+VALUE____(0xd576d08eu, "mouseUp", MouseUp)
+VALUE____(0xd7a92904u, "exportOnly", ExportOnly)
+VALUE____(0xd8ed1467u, "clear", Clear)
+VALUE____(0xd95657a6u, "click", Click)
+VALUE____(0xd96c7de5u, "base64", Base64)
+VALUE____(0xd9f47f36u, "close", Close)
+VALUE____(0xdb075bdeu, "host", Host)
+VALUE____(0xdb103411u, "global", Global)
+VALUE____(0xdb647188u, "blank", Blank)
+VALUE____(0xdb9be968u, "table", Table)
+VALUE____(0xdf590fbbu, "import", Import)
+VALUE____(0xe0e573fbu, "custom", Custom)
+VALUE____(0xe0ecc79au, "middleLeft", MiddleLeft)
+VALUE____(0xe1452019u, "postExecute", PostExecute)
+VALUE____(0xe1911d98u, "radix", Radix)
+VALUE____(0xe25fa7b8u, "postOpen", PostOpen)
+VALUE____(0xe28dce7eu, "enter", Enter)
+VALUE____(0xe2c44de4u, "ignore", Ignore)
+VALUE____(0xe2cd8c61u, "lr-tb", Lr_tb)
+VALUE____(0xe2da8336u, "fantasy", Fantasy)
+VALUE____(0xe31d5396u, "italic", Italic)
+VALUE____(0xe7ada113u, "author", Author)
+VALUE____(0xe8e7cc18u, "toEdge", ToEdge)
+VALUE____(0xe97aa98bu, "choice", Choice)
+VALUE____(0xeafd2a38u, "disabled", Disabled)
+VALUE____(0xeb2b7972u, "crossHatch", CrossHatch)
+VALUE____(0xeb2db2d7u, "dataRef", DataRef)
+VALUE____(0xec35dc6eu, "dashDotDot", DashDotDot)
+VALUE____(0xef85d351u, "square", Square)
+VALUE____(0xf2102445u, "dynamic", Dynamic)
+VALUE____(0xf272c7beu, "manual", Manual)
+VALUE____(0xf2bbb64du, "etched", Etched)
+VALUE____(0xf3b8fc6cu, "validationState", ValidationState)
+VALUE____(0xf42f2b81u, "cursive", Cursive)
+VALUE____(0xf54481d4u, "last", Last)
+VALUE____(0xf5ad782bu, "left", Left)
+VALUE____(0xf616da2eu, "link", Link)
+VALUE____(0xf6b4afb0u, "long", Long)
+VALUE____(0xf8636460u, "internationalCarrier", InternationalCarrier)
+VALUE____(0xf9fb37acu, "PDF1.3", PDF1_3)
+VALUE____(0xf9fb37afu, "PDF1.6", PDF1_6)
+VALUE____(0xfbce7f19u, "serif", Serif)
+VALUE____(0xfc82d695u, "postSave", PostSave)
+VALUE____(0xfcef86b5u, "ready", Ready)
+VALUE____(0xfd54fbb7u, "postSign", PostSign)
+VALUE____(0xfdc0aae2u, "Arabic", Arabic)
+VALUE____(0xfe06d2cau, "error", Error)
+VALUE____(0xfefc4885u, "urlencoded", Urlencoded)
+VALUE____(0xff795ad2u, "lowered", Lowered)
diff --git a/xfa/fxfa/parser/xfa_basic_data_enum.cpp b/xfa/fxfa/parser/xfa_basic_data_enum.cpp
index dac21dd..7f93192 100644
--- a/xfa/fxfa/parser/xfa_basic_data_enum.cpp
+++ b/xfa/fxfa/parser/xfa_basic_data_enum.cpp
@@ -9,297 +9,11 @@
 #include "core/fxcrt/fx_memory.h"
 #include "xfa/fxfa/fxfa_basic.h"
 
-#undef INFO
-#define INFO(a, b, c) a, c, b
-
 const XFA_AttributeValueInfo g_XFAEnumData[] = {
-    {INFO(0x2a, "*", XFA_AttributeValue::Asterisk)},
-    {INFO(0x2f, "/", XFA_AttributeValue::Slash)},
-    {INFO(0x5c, "\\", XFA_AttributeValue::Backslash)},
-    {INFO(0x239bd, "on", XFA_AttributeValue::On)},
-    {INFO(0x25356, "tb", XFA_AttributeValue::Tb)},
-    {INFO(0x25885, "up", XFA_AttributeValue::Up)},
-    {INFO(0x91b281, "metaData", XFA_AttributeValue::MetaData)},
-    {INFO(0x1f8dedb, "delegate", XFA_AttributeValue::Delegate)},
-    {INFO(0x2a6c55a, "postSubmit", XFA_AttributeValue::PostSubmit)},
-    {INFO(0x31b19c1, "name", XFA_AttributeValue::Name)},
-    {INFO(0x378a38a, "cross", XFA_AttributeValue::Cross)},
-    {INFO(0x3848b3f, "next", XFA_AttributeValue::Next)},
-    {INFO(0x48b6670, "none", XFA_AttributeValue::None)},
-    {INFO(0x51aafe5, "shortEdge", XFA_AttributeValue::ShortEdge)},
-    {INFO(0x55264c4,
-          "1mod10_1mod11",
-          XFA_AttributeValue::Checksum_1mod10_1mod11)},
-    {INFO(0x5a5c519, "height", XFA_AttributeValue::Height)},
-    {INFO(0x89ce549, "crossDiagonal", XFA_AttributeValue::CrossDiagonal)},
-    {INFO(0x9f9d0f9, "all", XFA_AttributeValue::All)},
-    {INFO(0x9f9db48, "any", XFA_AttributeValue::Any)},
-    {INFO(0xa126261, "toRight", XFA_AttributeValue::ToRight)},
-    {INFO(0xa36de29, "matchTemplate", XFA_AttributeValue::MatchTemplate)},
-    {INFO(0xa48d040, "dpl", XFA_AttributeValue::Dpl)},
-    {INFO(0xa559c05, "invisible", XFA_AttributeValue::Invisible)},
-    {INFO(0xa7d48e3, "fit", XFA_AttributeValue::Fit)},
-    {INFO(0xa8a8f80, "width", XFA_AttributeValue::Width)},
-    {INFO(0xab466bb, "preSubmit", XFA_AttributeValue::PreSubmit)},
-    {INFO(0xacc5785, "ipl", XFA_AttributeValue::Ipl)},
-    {INFO(0xafab0f8, "flateCompress", XFA_AttributeValue::FlateCompress)},
-    {INFO(0xb355816, "med", XFA_AttributeValue::Med)},
-    {INFO(0xb69ef77, "odd", XFA_AttributeValue::Odd)},
-    {INFO(0xb69f9bb, "off", XFA_AttributeValue::Off)},
-    {INFO(0xb843dba, "pdf", XFA_AttributeValue::Pdf)},
-    {INFO(0xbb912b8, "row", XFA_AttributeValue::Row)},
-    {INFO(0xbedaf33, "top", XFA_AttributeValue::Top)},
-    {INFO(0xc56afcc, "xdp", XFA_AttributeValue::Xdp)},
-    {INFO(0xc56ba02, "xfd", XFA_AttributeValue::Xfd)},
-    {INFO(0xc56ddf1, "xml", XFA_AttributeValue::Xml)},
-    {INFO(0xc8b65f3, "zip", XFA_AttributeValue::Zip)},
-    {INFO(0xc8b89d6, "zpl", XFA_AttributeValue::Zpl)},
-    {INFO(0xf55d7ee, "visible", XFA_AttributeValue::Visible)},
-    {INFO(0xfe3596a, "exclude", XFA_AttributeValue::Exclude)},
-    {INFO(0x109d7ce7, "mouseEnter", XFA_AttributeValue::MouseEnter)},
-    {INFO(0x10f1bc0c, "pair", XFA_AttributeValue::Pair)},
-    {INFO(0x1154efe6, "filter", XFA_AttributeValue::Filter)},
-    {INFO(0x125bc94b, "moveLast", XFA_AttributeValue::MoveLast)},
-    {INFO(0x12e1f1f0, "exportAndImport", XFA_AttributeValue::ExportAndImport)},
-    {INFO(0x13000c60, "push", XFA_AttributeValue::Push)},
-    {INFO(0x138ee315, "portrait", XFA_AttributeValue::Portrait)},
-    {INFO(0x14da2125, "default", XFA_AttributeValue::Default)},
-    {INFO(0x157749a5, "storedProc", XFA_AttributeValue::StoredProc)},
-    {INFO(0x16641198, "stayBOF", XFA_AttributeValue::StayBOF)},
-    {INFO(0x16b2fc5b, "stayEOF", XFA_AttributeValue::StayEOF)},
-    {INFO(0x17fad373, "postPrint", XFA_AttributeValue::PostPrint)},
-    {INFO(0x193207d0, "usCarrier", XFA_AttributeValue::UsCarrier)},
-    {INFO(0x193ade3e, "right", XFA_AttributeValue::Right)},
-    {INFO(0x1bfc72d9, "preOpen", XFA_AttributeValue::PreOpen)},
-    {INFO(0x1cc9317a, "actual", XFA_AttributeValue::Actual)},
-    {INFO(0x1f31df1e, "rest", XFA_AttributeValue::Rest)},
-    {INFO(0x1fb1bf14, "topCenter", XFA_AttributeValue::TopCenter)},
-    {INFO(0x207de667, "standardSymbol", XFA_AttributeValue::StandardSymbol)},
-    {INFO(0x2196a452, "initialize", XFA_AttributeValue::Initialize)},
-    {INFO(0x23bd40c7, "justifyAll", XFA_AttributeValue::JustifyAll)},
-    {INFO(0x247cf3e9, "normal", XFA_AttributeValue::Normal)},
-    {INFO(0x25aa946b, "landscape", XFA_AttributeValue::Landscape)},
-    {INFO(0x2739b5c9, "nonInteractive", XFA_AttributeValue::NonInteractive)},
-    {INFO(0x27410f03, "mouseExit", XFA_AttributeValue::MouseExit)},
-    {INFO(0x2854e62c, "minus", XFA_AttributeValue::Minus)},
-    {INFO(0x287e936a, "diagonalLeft", XFA_AttributeValue::DiagonalLeft)},
-    {INFO(0x2972a98f,
-          "simplexPaginated",
-          XFA_AttributeValue::SimplexPaginated)},
-    {INFO(0x29d8225f, "document", XFA_AttributeValue::Document)},
-    {INFO(0x2a9d3016, "warning", XFA_AttributeValue::Warning)},
-    {INFO(0x2b35b6d9, "auto", XFA_AttributeValue::Auto)},
-    {INFO(0x2c1653d9, "below", XFA_AttributeValue::Below)},
-    {INFO(0x2c1f0540, "bottomLeft", XFA_AttributeValue::BottomLeft)},
-    {INFO(0x2c44e816, "bottomCenter", XFA_AttributeValue::BottomCenter)},
-    {INFO(0x2cd3e9f3, "tcpl", XFA_AttributeValue::Tcpl)},
-    {INFO(0x2d08af85, "text", XFA_AttributeValue::Text)},
-    {INFO(0x2dc478eb, "grouping", XFA_AttributeValue::Grouping)},
-    {INFO(0x2ef3afdd, "secureSymbol", XFA_AttributeValue::SecureSymbol)},
-    {INFO(0x2f2dd29a, "preExecute", XFA_AttributeValue::PreExecute)},
-    {INFO(0x33c43dec, "docClose", XFA_AttributeValue::DocClose)},
-    {INFO(0x33f25bb5, "keyset", XFA_AttributeValue::Keyset)},
-    {INFO(0x34e363da, "vertical", XFA_AttributeValue::Vertical)},
-    {INFO(0x361fa1b6, "preSave", XFA_AttributeValue::PreSave)},
-    {INFO(0x36f1c6d8, "preSign", XFA_AttributeValue::PreSign)},
-    {INFO(0x399f02b5, "bottom", XFA_AttributeValue::Bottom)},
-    {INFO(0x3b0ab096, "toTop", XFA_AttributeValue::ToTop)},
-    {INFO(0x3c752495, "verify", XFA_AttributeValue::Verify)},
-    {INFO(0x3ce05d68, "first", XFA_AttributeValue::First)},
-    {INFO(0x3ecead94, "contentArea", XFA_AttributeValue::ContentArea)},
-    {INFO(0x40623b5b, "solid", XFA_AttributeValue::Solid)},
-    {INFO(0x42c6cd8d, "pessimistic", XFA_AttributeValue::Pessimistic)},
-    {INFO(0x43ddc6bf, "duplexPaginated", XFA_AttributeValue::DuplexPaginated)},
-    {INFO(0x442f68c8, "round", XFA_AttributeValue::Round)},
-    {INFO(0x45efb847, "remerge", XFA_AttributeValue::Remerge)},
-    {INFO(0x46972265, "ordered", XFA_AttributeValue::Ordered)},
-    {INFO(0x46f95531, "percent", XFA_AttributeValue::Percent)},
-    {INFO(0x46fd25ae, "even", XFA_AttributeValue::Even)},
-    {INFO(0x4731d6ba, "exit", XFA_AttributeValue::Exit)},
-    {INFO(0x4977356b, "toolTip", XFA_AttributeValue::ToolTip)},
-    {INFO(0x49b980ee,
-          "orderedOccurrence",
-          XFA_AttributeValue::OrderedOccurrence)},
-    {INFO(0x4a7e2dfe, "readOnly", XFA_AttributeValue::ReadOnly)},
-    {INFO(0x4c4e8acb, "currency", XFA_AttributeValue::Currency)},
-    {INFO(0x4dcf25f8, "concat", XFA_AttributeValue::Concat)},
-    {INFO(0x4febb826, "Thai", XFA_AttributeValue::Thai)},
-    {INFO(0x50ef95b2, "embossed", XFA_AttributeValue::Embossed)},
-    {INFO(0x516e35ce, "formdata", XFA_AttributeValue::Formdata)},
-    {INFO(0x52fa6f0e, "Greek", XFA_AttributeValue::Greek)},
-    {INFO(0x54034c2f, "decimal", XFA_AttributeValue::Decimal)},
-    {INFO(0x542c7300, "select", XFA_AttributeValue::Select)},
-    {INFO(0x551f0ae5, "longEdge", XFA_AttributeValue::LongEdge)},
-    {INFO(0x55520a8a, "protected", XFA_AttributeValue::Protected)},
-    {INFO(0x559f76f3, "bottomRight", XFA_AttributeValue::BottomRight)},
-    {INFO(0x568cb500, "zero", XFA_AttributeValue::Zero)},
-    {INFO(0x56bcecb7, "forwardOnly", XFA_AttributeValue::ForwardOnly)},
-    {INFO(0x56bf456b, "docReady", XFA_AttributeValue::DocReady)},
-    {INFO(0x573cb40c, "hidden", XFA_AttributeValue::Hidden)},
-    {INFO(0x582e3424, "include", XFA_AttributeValue::Include)},
-    {INFO(0x58a3dd29, "dashed", XFA_AttributeValue::Dashed)},
-    {INFO(0x5955b22b, "multiSelect", XFA_AttributeValue::MultiSelect)},
-    {INFO(0x598d5c53, "inactive", XFA_AttributeValue::Inactive)},
-    {INFO(0x59c8f27d, "embed", XFA_AttributeValue::Embed)},
-    {INFO(0x5e7555e8, "static", XFA_AttributeValue::Static)},
-    {INFO(0x606d4def, "onEntry", XFA_AttributeValue::OnEntry)},
-    {INFO(0x6195eafb, "Cyrillic", XFA_AttributeValue::Cyrillic)},
-    {INFO(0x6491b0f3, "nonBlank", XFA_AttributeValue::NonBlank)},
-    {INFO(0x67bef031, "topRight", XFA_AttributeValue::TopRight)},
-    {INFO(0x67df5ebd, "Hebrew", XFA_AttributeValue::Hebrew)},
-    {INFO(0x6aea98be, "topLeft", XFA_AttributeValue::TopLeft)},
-    {INFO(0x6c51afc1, "center", XFA_AttributeValue::Center)},
-    {INFO(0x7145e6bf, "moveFirst", XFA_AttributeValue::MoveFirst)},
-    {INFO(0x7375465c, "diamond", XFA_AttributeValue::Diamond)},
-    {INFO(0x7461aef4, "pageOdd", XFA_AttributeValue::PageOdd)},
-    {INFO(0x75f8aeb2, "1mod10", XFA_AttributeValue::Checksum_1mod10)},
-    {INFO(0x76d708e0, "Korean", XFA_AttributeValue::Korean)},
-    {INFO(0x789f14d7, "aboveEmbedded", XFA_AttributeValue::AboveEmbedded)},
-    {INFO(0x792ea39f, "zipCompress", XFA_AttributeValue::ZipCompress)},
-    {INFO(0x7a5b7193, "numeric", XFA_AttributeValue::Numeric)},
-    {INFO(0x7abec0d2, "circle", XFA_AttributeValue::Circle)},
-    {INFO(0x7afbba38, "toBottom", XFA_AttributeValue::ToBottom)},
-    {INFO(0x7b95e661, "inverted", XFA_AttributeValue::Inverted)},
-    {INFO(0x7baca2e3, "update", XFA_AttributeValue::Update)},
-    {INFO(0x7eb5da2c, "isoname", XFA_AttributeValue::Isoname)},
-    {INFO(0x7f6fd3d7, "server", XFA_AttributeValue::Server)},
-    {INFO(0x814f82b5, "position", XFA_AttributeValue::Position)},
-    {INFO(0x82deacf0, "middleCenter", XFA_AttributeValue::MiddleCenter)},
-    {INFO(0x83a49dc6, "optional", XFA_AttributeValue::Optional)},
-    {INFO(0x861a116f,
-          "usePrinterSetting",
-          XFA_AttributeValue::UsePrinterSetting)},
-    {INFO(0x86701ce0, "outline", XFA_AttributeValue::Outline)},
-    {INFO(0x8808385e, "indexChange", XFA_AttributeValue::IndexChange)},
-    {INFO(0x891f4606, "change", XFA_AttributeValue::Change)},
-    {INFO(0x89939f36, "pageArea", XFA_AttributeValue::PageArea)},
-    {INFO(0x8b5c3b25, "once", XFA_AttributeValue::Once)},
-    {INFO(0x8b5c6962, "only", XFA_AttributeValue::Only)},
-    {INFO(0x8b90e1f2, "open", XFA_AttributeValue::Open)},
-    {INFO(0x8bcfe96e, "caption", XFA_AttributeValue::Caption)},
-    {INFO(0x8ce83ef8, "raised", XFA_AttributeValue::Raised)},
-    {INFO(0x8d269cae, "justify", XFA_AttributeValue::Justify)},
-    {INFO(0x8fd520dc,
-          "refAndDescendants",
-          XFA_AttributeValue::RefAndDescendants)},
-    {INFO(0x9041d4b0, "short", XFA_AttributeValue::Short)},
-    {INFO(0x90c94426, "pageFront", XFA_AttributeValue::PageFront)},
-    {INFO(0x936beee5, "monospace", XFA_AttributeValue::Monospace)},
-    {INFO(0x947fa00f, "middle", XFA_AttributeValue::Middle)},
-    {INFO(0x9528a7b4, "prePrint", XFA_AttributeValue::PrePrint)},
-    {INFO(0x959ab231, "always", XFA_AttributeValue::Always)},
-    {INFO(0x96d61bf0, "unknown", XFA_AttributeValue::Unknown)},
-    {INFO(0x997194ee, "toLeft", XFA_AttributeValue::ToLeft)},
-    {INFO(0x9a83a3cd, "above", XFA_AttributeValue::Above)},
-    {INFO(0x9d0d71c7, "dashDot", XFA_AttributeValue::DashDot)},
-    {INFO(0x9df56f3e, "gregorian", XFA_AttributeValue::Gregorian)},
-    {INFO(0x9f6723fd, "Roman", XFA_AttributeValue::Roman)},
-    {INFO(0x9f693b21, "mouseDown", XFA_AttributeValue::MouseDown)},
-    {INFO(0xa1429b36, "symbol", XFA_AttributeValue::Symbol)},
-    {INFO(0xa5aa45cb, "pageEven", XFA_AttributeValue::PageEven)},
-    {INFO(0xa68635f1, "sign", XFA_AttributeValue::Sign)},
-    {INFO(0xa7315093, "addNew", XFA_AttributeValue::AddNew)},
-    {INFO(0xa7a773fa, "star", XFA_AttributeValue::Star)},
-    {INFO(0xa7d57b45, "optimistic", XFA_AttributeValue::Optimistic)},
-    {INFO(0xa8077321, "rl-tb", XFA_AttributeValue::Rl_tb)},
-    {INFO(0xa8f1468d, "middleRight", XFA_AttributeValue::MiddleRight)},
-    {INFO(0xaa84a1f1, "maintain", XFA_AttributeValue::Maintain)},
-    {INFO(0xab40b12c, "package", XFA_AttributeValue::Package)},
-    {INFO(0xac8b4d85,
-          "SimplifiedChinese",
-          XFA_AttributeValue::SimplifiedChinese)},
-    {INFO(0xadae6744, "toCenter", XFA_AttributeValue::ToCenter)},
-    {INFO(0xb0129df1, "back", XFA_AttributeValue::Back)},
-    {INFO(0xb0f088cf, "unspecified", XFA_AttributeValue::Unspecified)},
-    {INFO(0xb1271067, "batchOptimistic", XFA_AttributeValue::BatchOptimistic)},
-    {INFO(0xb18313a1, "bold", XFA_AttributeValue::Bold)},
-    {INFO(0xb1833cad, "both", XFA_AttributeValue::Both)},
-    {INFO(0xb221123f, "butt", XFA_AttributeValue::Butt)},
-    {INFO(0xb40c36bf, "client", XFA_AttributeValue::Client)},
-    {INFO(0xb56c7053, "2mod10", XFA_AttributeValue::Checksum_2mod10)},
-    {INFO(0xb683a345, "imageOnly", XFA_AttributeValue::ImageOnly)},
-    {INFO(0xb7732dea, "horizontal", XFA_AttributeValue::Horizontal)},
-    {INFO(0xb88652a4, "dotted", XFA_AttributeValue::Dotted)},
-    {INFO(0xbb2f2880, "userControl", XFA_AttributeValue::UserControl)},
-    {INFO(0xbbb79c5d, "diagonalRight", XFA_AttributeValue::DiagonalRight)},
-    {INFO(0xbd077154, "consumeData", XFA_AttributeValue::ConsumeData)},
-    {INFO(0xbd3fb11e, "check", XFA_AttributeValue::Check)},
-    {INFO(0xbde9abda, "data", XFA_AttributeValue::Data)},
-    {INFO(0xbf5a02d8, "down", XFA_AttributeValue::Down)},
-    {INFO(0xbf7450ee, "sansSerif", XFA_AttributeValue::SansSerif)},
-    {INFO(0xc02d649f, "inline", XFA_AttributeValue::Inline)},
-    {INFO(0xc11a9e3a,
-          "TraditionalChinese",
-          XFA_AttributeValue::TraditionalChinese)},
-    {INFO(0xc16169d8, "warn", XFA_AttributeValue::Warn)},
-    {INFO(0xc16f071f, "refOnly", XFA_AttributeValue::RefOnly)},
-    {INFO(0xc27c8ba5,
-          "interactiveForms",
-          XFA_AttributeValue::InteractiveForms)},
-    {INFO(0xc2d1b15c, "word", XFA_AttributeValue::Word)},
-    {INFO(0xc3621288, "unordered", XFA_AttributeValue::Unordered)},
-    {INFO(0xc5251981, "required", XFA_AttributeValue::Required)},
-    {INFO(0xc7088e7d, "importOnly", XFA_AttributeValue::ImportOnly)},
-    {INFO(0xc72cf0e3, "belowEmbedded", XFA_AttributeValue::BelowEmbedded)},
-    {INFO(0xc819cf07, "Japanese", XFA_AttributeValue::Japanese)},
-    {INFO(0xcdce56b3, "full", XFA_AttributeValue::Full)},
-    {INFO(0xce0122e3, "rl-row", XFA_AttributeValue::Rl_row)},
-    {INFO(0xcf7d71f1, "Vietnamese", XFA_AttributeValue::Vietnamese)},
-    {INFO(0xcfde3e09,
-          "EastEuropeanRoman",
-          XFA_AttributeValue::EastEuropeanRoman)},
-    {INFO(0xd576d08e, "mouseUp", XFA_AttributeValue::MouseUp)},
-    {INFO(0xd7a92904, "exportOnly", XFA_AttributeValue::ExportOnly)},
-    {INFO(0xd8ed1467, "clear", XFA_AttributeValue::Clear)},
-    {INFO(0xd95657a6, "click", XFA_AttributeValue::Click)},
-    {INFO(0xd96c7de5, "base64", XFA_AttributeValue::Base64)},
-    {INFO(0xd9f47f36, "close", XFA_AttributeValue::Close)},
-    {INFO(0xdb075bde, "host", XFA_AttributeValue::Host)},
-    {INFO(0xdb103411, "global", XFA_AttributeValue::Global)},
-    {INFO(0xdb647188, "blank", XFA_AttributeValue::Blank)},
-    {INFO(0xdb9be968, "table", XFA_AttributeValue::Table)},
-    {INFO(0xdf590fbb, "import", XFA_AttributeValue::Import)},
-    {INFO(0xe0e573fb, "custom", XFA_AttributeValue::Custom)},
-    {INFO(0xe0ecc79a, "middleLeft", XFA_AttributeValue::MiddleLeft)},
-    {INFO(0xe1452019, "postExecute", XFA_AttributeValue::PostExecute)},
-    {INFO(0xe1911d98, "radix", XFA_AttributeValue::Radix)},
-    {INFO(0xe25fa7b8, "postOpen", XFA_AttributeValue::PostOpen)},
-    {INFO(0xe28dce7e, "enter", XFA_AttributeValue::Enter)},
-    {INFO(0xe2c44de4, "ignore", XFA_AttributeValue::Ignore)},
-    {INFO(0xe2cd8c61, "lr-tb", XFA_AttributeValue::Lr_tb)},
-    {INFO(0xe2da8336, "fantasy", XFA_AttributeValue::Fantasy)},
-    {INFO(0xe31d5396, "italic", XFA_AttributeValue::Italic)},
-    {INFO(0xe7ada113, "author", XFA_AttributeValue::Author)},
-    {INFO(0xe8e7cc18, "toEdge", XFA_AttributeValue::ToEdge)},
-    {INFO(0xe97aa98b, "choice", XFA_AttributeValue::Choice)},
-    {INFO(0xeafd2a38, "disabled", XFA_AttributeValue::Disabled)},
-    {INFO(0xeb2b7972, "crossHatch", XFA_AttributeValue::CrossHatch)},
-    {INFO(0xeb2db2d7, "dataRef", XFA_AttributeValue::DataRef)},
-    {INFO(0xec35dc6e, "dashDotDot", XFA_AttributeValue::DashDotDot)},
-    {INFO(0xef85d351, "square", XFA_AttributeValue::Square)},
-    {INFO(0xf2102445, "dynamic", XFA_AttributeValue::Dynamic)},
-    {INFO(0xf272c7be, "manual", XFA_AttributeValue::Manual)},
-    {INFO(0xf2bbb64d, "etched", XFA_AttributeValue::Etched)},
-    {INFO(0xf3b8fc6c, "validationState", XFA_AttributeValue::ValidationState)},
-    {INFO(0xf42f2b81, "cursive", XFA_AttributeValue::Cursive)},
-    {INFO(0xf54481d4, "last", XFA_AttributeValue::Last)},
-    {INFO(0xf5ad782b, "left", XFA_AttributeValue::Left)},
-    {INFO(0xf616da2e, "link", XFA_AttributeValue::Link)},
-    {INFO(0xf6b4afb0, "long", XFA_AttributeValue::Long)},
-    {INFO(0xf8636460,
-          "internationalCarrier",
-          XFA_AttributeValue::InternationalCarrier)},
-    {INFO(0xf9fb37ac, "PDF1.3", XFA_AttributeValue::PDF1_3)},
-    {INFO(0xf9fb37af, "PDF1.6", XFA_AttributeValue::PDF1_6)},
-    {INFO(0xfbce7f19, "serif", XFA_AttributeValue::Serif)},
-    {INFO(0xfc82d695, "postSave", XFA_AttributeValue::PostSave)},
-    {INFO(0xfcef86b5, "ready", XFA_AttributeValue::Ready)},
-    {INFO(0xfd54fbb7, "postSign", XFA_AttributeValue::PostSign)},
-    {INFO(0xfdc0aae2, "Arabic", XFA_AttributeValue::Arabic)},
-    {INFO(0xfe06d2ca, "error", XFA_AttributeValue::Error)},
-    {INFO(0xfefc4885, "urlencoded", XFA_AttributeValue::Urlencoded)},
-    {INFO(0xff795ad2, "lowered", XFA_AttributeValue::Lowered)},
+#undef VALUE____
+#define VALUE____(a, b, c) {a, XFA_AttributeValue::c, b},
+#include "xfa/fxfa/parser/attribute_values.inc"
+#undef VALUE____
 };
-#undef INFO
 
 const size_t g_szXFAEnumCount = FX_ArraySize(g_XFAEnumData);