{-# LANGUAGE ScopedTypeVariables, DeriveDataTypeable, OverloadedStrings, DeriveGeneric #-} module Data.Bond.Schema.Variant (Variant(..)) where import qualified Data.Bond.Internal.Imports as B' import qualified Prelude as P' import qualified GHC.Generics as P' data Variant = Variant{uint_value :: B'.Word64, int_value :: B'.Int64, double_value :: B'.Double, string_value :: B'.Utf8, wstring_value :: B'.Utf16, nothing :: B'.Bool} deriving (P'.Generic, P'.Show, P'.Eq, B'.Typeable) instance B'.Default Variant where defaultValue = Variant{uint_value = B'.defaultValue, int_value = B'.defaultValue, double_value = B'.defaultValue, string_value = B'.defaultValue, wstring_value = B'.defaultValue, nothing = B'.defaultValue} instance B'.BondType Variant where bondGet = B'.bondGetStruct bondPut = B'.bondPutStruct getName _ = "Variant" getQualifiedName _ = "bond.Variant" getElementType type'proxy = B'.ElementStruct (B'.getSchema type'proxy) instance B'.BondStruct Variant where bondStructPut self' = do B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 0) (uint_value self') B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 1) (int_value self') B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 2) (double_value self') B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 3) (string_value self') B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 4) (wstring_value self') B'.bondPutField (B'.Proxy :: B'.Proxy Variant) (B'.Ordinal 5) (nothing self') bondStructGetUntagged = P'.return Variant `B'.ap` B'.bondGet `B'.ap` B'.bondGet `B'.ap` B'.bondGet `B'.ap` B'.bondGet `B'.ap` B'.bondGet `B'.ap` B'.bondGet bondStructGetBase self' = P'.return self' bondStructGetField (B'.Ordinal 0) self' = do field'val <- B'.bondGet P'.return self'{uint_value = field'val} bondStructGetField (B'.Ordinal 1) self' = do field'val <- B'.bondGet P'.return self'{int_value = field'val} bondStructGetField (B'.Ordinal 2) self' = do field'val <- B'.bondGet P'.return self'{double_value = field'val} bondStructGetField (B'.Ordinal 3) self' = do field'val <- B'.bondGet P'.return self'{string_value = field'val} bondStructGetField (B'.Ordinal 4) self' = do field'val <- B'.bondGet P'.return self'{wstring_value = field'val} bondStructGetField (B'.Ordinal 5) self' = do field'val <- B'.bondGet P'.return self'{nothing = field'val} bondStructGetField _ _ = P'.error "unknown field ordinal" getSchema type'proxy = B'.StructSchema{B'.structTag = B'.typeRep type'proxy, B'.structName = B'.getName type'proxy, B'.structQualifiedName = B'.getQualifiedName type'proxy, B'.structAttrs = B'.makeMap [], B'.structBase = P'.Nothing, B'.structFields = B'.makeMap [(B'.Ordinal 0, B'.FieldSchema{B'.fieldName = "uint_value", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldUInt64 (B'.DefaultValue (uint_value (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))}), (B'.Ordinal 1, B'.FieldSchema{B'.fieldName = "int_value", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldInt64 (B'.DefaultValue (int_value (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))}), (B'.Ordinal 2, B'.FieldSchema{B'.fieldName = "double_value", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldDouble (B'.DefaultValue (double_value (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))}), (B'.Ordinal 3, B'.FieldSchema{B'.fieldName = "string_value", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldString (B'.DefaultValue (string_value (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))}), (B'.Ordinal 4, B'.FieldSchema{B'.fieldName = "wstring_value", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldWString (B'.DefaultValue (wstring_value (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))}), (B'.Ordinal 5, B'.FieldSchema{B'.fieldName = "nothing", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.FieldBool (B'.DefaultValue (nothing (B'.defaultValue `B'.asProxyTypeOf` type'proxy)))})], B'.structRequiredOrdinals = B'.fromOrdinalList []} instance B'.NFData Variant