module Database.Perdure.WordNArrayRef (
WordNArrayRef(..),
WordNValidator,
module Database.Perdure.ArrayRef
) where
import Prelude()
import Cgm.Prelude
import Database.Perdure.ArrayRef
import Database.Perdure.Persistent
import Cgm.Data.Word
import Cgm.System.Endian
import Database.Perdure.WValidator
class (Validator v, Persistent v, LgMultiple Word64 (ValidatedElem v), Endian (ValidatedElem v), LgMultiple (ValidatedElem v) Word8) => WordNValidator v
instance WordNValidator W32Validator
instance WordNValidator W64Validator
instance WordNValidator v => ArrayRef (WordNArrayRef v) where
type ArrayRefElem (WordNArrayRef v) = ValidatedElem v
writeArrayRef l b = do
let (v, buf) = mkValidationInput b
r <- allocWrite l platformWordEndianness buf
return $ WordNArrayRef v r platformWordEndianness
derefArrayRef f (WordNArrayRef v r e) = fmap primArrayMatchAllocation <$> await1 (storeFileRead f r e v)
arrayRefAddr (WordNArrayRef _ r _) = refStart r