{-# LANGUAGE ScopedTypeVariables, DeriveDataTypeable, OverloadedStrings, DeriveGeneric #-} module Data.Bond.Schema.SchemaDef (SchemaDef(..)) where import qualified Data.Bond.Internal.Imports as B' import qualified Prelude as P' import qualified Data.Bond.Schema.StructDef import qualified Data.Bond.Schema.TypeDef import qualified GHC.Generics as P' data SchemaDef = SchemaDef{structs :: B'.Vector Data.Bond.Schema.StructDef.StructDef, root :: Data.Bond.Schema.TypeDef.TypeDef} deriving (P'.Generic, P'.Show, P'.Eq, B'.Typeable) instance B'.Default SchemaDef where defaultValue = SchemaDef{structs = B'.defaultValue, root = B'.defaultValue} instance B'.BondType SchemaDef where bondGet = B'.bondGetStruct bondPut = B'.bondPutStruct getName _ = "SchemaDef" getQualifiedName _ = "bond.SchemaDef" getElementType type'proxy = B'.ElementStruct (B'.getSchema type'proxy) instance B'.BondStruct SchemaDef where bondStructPut self' = do B'.bondPutField (B'.Proxy :: B'.Proxy SchemaDef) (B'.Ordinal 0) (structs self') B'.bondPutField (B'.Proxy :: B'.Proxy SchemaDef) (B'.Ordinal 1) (root self') bondStructGetUntagged = P'.return SchemaDef `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'{structs = field'val} bondStructGetField (B'.Ordinal 1) self' = do field'val <- B'.bondGet P'.return self'{root = 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 = "structs", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.elementToFieldType (B'.getElementType (B'.Proxy :: B'.Proxy (B'.Vector Data.Bond.Schema.StructDef.StructDef)))}), (B'.Ordinal 1, B'.FieldSchema{B'.fieldName = "root", B'.fieldAttrs = B'.makeMap [], B'.fieldModifier = B'.FieldOptional, B'.fieldType = B'.elementToFieldType (B'.getElementType (B'.Proxy :: B'.Proxy Data.Bond.Schema.TypeDef.TypeDef))})], B'.structRequiredOrdinals = B'.fromOrdinalList []} instance B'.NFData SchemaDef