@@ -0,0 +1,53 @@
1+module Data.THGen.XML.Internal where
2+
3+import Control.Lens
4+import Data.String
5+import Data.THGen.Compat
6+import Data.THGen.Enum
7+import Language.Haskell.TH as TH
8+
9+
10+data XmlFieldPlural
11+ = XmlFieldPluralMandatory -- Occurs exactly 1 time (Identity)
12+ | XmlFieldPluralOptional -- Occurs 0 or 1 times (Maybe)
13+ | XmlFieldPluralRepeated -- Occurs 0 or more times (List)
14+ | XmlFieldPluralMultiplied -- Occurs 1 or more times (NonEmpty)
15+
16+data XmlAttributePlural
17+ = XmlAttributePluralMandatory -- Occurs exactly 1 time (Identity)
18+ | XmlAttributePluralOptional -- Occurs 0 or 1 times (Maybe)
19+
20+data PrefixName = PrefixName String String
21+
22+data IsoXmlDescPreField = IsoXmlDescPreField String TH.TypeQ
23+
24+data IsoXmlDescPreAttribute = IsoXmlDescPreAttribute String TH.TypeQ
25+
26+data IsoXmlDescPreContent = IsoXmlDescPreContent String TH.TypeQ
27+
28+data IsoXmlDescField = IsoXmlDescField XmlFieldPlural String TH.TypeQ
29+
30+data IsoXmlDescAttribute = IsoXmlDescAttribute XmlAttributePlural String TH.TypeQ
31+
32+data IsoXmlDescContent = IsoXmlDescContent String TH.TypeQ
33+
34+data IsoXmlDescRecordPart
35+ = IsoXmlDescRecordField IsoXmlDescField
36+ | IsoXmlDescRecordAttribute IsoXmlDescAttribute
37+ | IsoXmlDescRecordContent IsoXmlDescContent
38+
39+newtype IsoXmlDescRecord = IsoXmlDescRecord [IsoXmlDescRecordPart]
40+
41+makePrisms ''IsoXmlDescRecord
42+
43+data ExhaustivenessName = ExhaustivenessName String Exhaustiveness
44+
45+newtype IsoXmlDescEnumCon
46+ = IsoXmlDescEnumCon { unIsoXmlDescEnumCon :: String }
47+
48+instance IsString IsoXmlDescEnumCon where
49+ fromString = IsoXmlDescEnumCon
50+
51+data IsoXmlDescEnum = IsoXmlDescEnum [IsoXmlDescEnumCon]
52+
53+makePrisms ''IsoXmlDescEnum