packages feed

OpenAFP (empty) → 1.0

raw patch · 226 files changed

+7360/−0 lines, 226 filesdep +basedep +haskell98dep +mtlbuild-type:Customsetup-changed

Dependencies added: base, haskell98, mtl, regex-compat

Files

+ LICENSE view
@@ -0,0 +1,20 @@+The "MIT" License++Permission is hereby granted, free of charge, to any person obtaining+a copy of this software and associated documentation files (the+"Software"), to deal in the Software without restriction, including+without limitation the rights to use, copy, modify, merge, publish,+distribute, sublicense, and/or sell copies of the Software, and to+permit persons to whom the Software is furnished to do so, subject to+the following conditions:++The above copyright notice and this permission notice shall be+included in all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ OpenAFP.cabal view
@@ -0,0 +1,92 @@+name:               OpenAFP+version:            1.0+license:            BSD3+License-file:       LICENSE+author:             Audrey Tang+maintainer:         audreyt@audreyt.org+synopsis:           IBM AFP document format parser and generator+description:        IBM AFP document format parser and generator+exposed-modules:    OpenAFP.Internals.Binary OpenAFP.Internals.Ebc2Asc+                    OpenAFP.Internals.UConv+                    OpenAFP.Prelude.Utils OpenAFP.Prelude.Instances OpenAFP.Prelude.InstanceT+                    OpenAFP.Prelude.Lookups+                    OpenAFP.Prelude.InstanceAFP OpenAFP.Prelude.InstancePTX OpenAFP.Prelude.Exts+                    OpenAFP.Records.T.LDOPM OpenAFP.Records.T.OSFO OpenAFP.Records.T.FRMT+                    OpenAFP.Records.T.OCH OpenAFP.Records.T.MO OpenAFP.Records.T.T2FRMT+                    OpenAFP.Records.T.FDS OpenAFP.Records.T.OCL OpenAFP.Records.T.OO+                    OpenAFP.Records.T.CGCSGI OpenAFP.Records.T.PSRM OpenAFP.Records.T.TO+                    OpenAFP.Records.T.AD OpenAFP.Records.T.RLI OpenAFP.Records.T.TS+                    OpenAFP.Records.T.RUA OpenAFP.Records.T.CF OpenAFP.Records.T.PPI+                    OpenAFP.Records.T.ROI OpenAFP.Records.T.EF OpenAFP.Records.T.ERLI+                    OpenAFP.Records.T.FF OpenAFP.Records.T.MOR OpenAFP.Records.T.FCGCSGI+                    OpenAFP.Records.T.POCP OpenAFP.Records.T.MF OpenAFP.Records.T.DP+                    OpenAFP.Records.T.MEC OpenAFP.Records.T.CR OpenAFP.Records.T.OBE+                    OpenAFP.Records.T.T1CRMT OpenAFP.Records.T.LDTS OpenAFP.Records.T.AV+                    OpenAFP.Records.T.MMPN OpenAFP.Records.T.OFSS OpenAFP.Records.T.OBO+                    OpenAFP.Records.T.UDTS OpenAFP.Records.T.ESI OpenAFP.Records.T.OCO+                    OpenAFP.Records.T.PSMR OpenAFP.Records.T.OAS OpenAFP.Records.T.C+                    OpenAFP.Records.T.FQN OpenAFP.Records.T.PV OpenAFP.Records.T.FHSF+                    OpenAFP.Records.T.OOI OpenAFP.Records.T.MIS OpenAFP.Records.T.OSFE+                    OpenAFP.Records.T.MA OpenAFP.Records.T.OAMU OpenAFP.Records.T.II+                    OpenAFP.Records.T.AQ OpenAFP.Records.T.PC OpenAFP.Records.T.RSN+                    OpenAFP.Records.T.FO OpenAFP.Records.T.ROT OpenAFP.Records.T.CS+                    OpenAFP.Records.MCF.T OpenAFP.Records.AFP.ECP OpenAFP.Records.AFP.BIM+                    OpenAFP.Records.AFP.PFC OpenAFP.Records.AFP.PTD1 OpenAFP.Records.AFP.IEL+                    OpenAFP.Records.AFP.BMM OpenAFP.Records.AFP.ICP OpenAFP.Records.AFP.PTX+                    OpenAFP.Records.AFP.EDT OpenAFP.Records.AFP.FNI OpenAFP.Records.AFP.IPD+                    OpenAFP.Records.AFP.LNC OpenAFP.Records.AFP.BPM OpenAFP.Records.AFP.IRD+                    OpenAFP.Records.AFP.PMC OpenAFP.Records.AFP.EDX OpenAFP.Records.AFP.FNM+                    OpenAFP.Records.AFP.MCF1 OpenAFP.Records.AFP.EPT OpenAFP.Records.AFP.EBC+                    OpenAFP.Records.AFP.BDD OpenAFP.Records.AFP.EAG OpenAFP.Records.AFP.MMT+                    OpenAFP.Records.AFP.EDG OpenAFP.Records.AFP.FGD OpenAFP.Records.AFP.EFG+                    OpenAFP.Records.AFP.CFI OpenAFP.Records.AFP.MBC OpenAFP.Records.AFP.MCC+                    OpenAFP.Records.AFP.BCP OpenAFP.Records.AFP.MFC OpenAFP.Records.AFP.EOC+                    OpenAFP.Records.AFP.FND OpenAFP.Records.AFP.ENG OpenAFP.Records.AFP.BDT+                    OpenAFP.Records.AFP.EOG OpenAFP.Records.AFP.IOC OpenAFP.Records.AFP.EPG+                    OpenAFP.Records.AFP.CPI OpenAFP.Records.AFP.MMC OpenAFP.Records.AFP.BDX+                    OpenAFP.Records.AFP.ERG OpenAFP.Records.AFP.ESG OpenAFP.Records.AFP.IPG+                    OpenAFP.Records.AFP.EMO OpenAFP.Records.AFP.MGO OpenAFP.Records.AFP.FNP+                    OpenAFP.Records.AFP.MPG OpenAFP.Records.AFP.MIO OpenAFP.Records.AFP.BPT+                    OpenAFP.Records.AFP.BBC OpenAFP.Records.AFP.EPS OpenAFP.Records.AFP.IPO+                    OpenAFP.Records.AFP.MMO OpenAFP.Records.AFP.BAG OpenAFP.Records.AFP.CDD+                    OpenAFP.Records.AFP.GAD OpenAFP.Records.AFP.IPS OpenAFP.Records.AFP.MPO+                    OpenAFP.Records.AFP.BDG OpenAFP.Records.AFP.NOP OpenAFP.Records.AFP.ECF+                    OpenAFP.Records.AFP.BFG OpenAFP.Records.AFP.GDD OpenAFP.Records.AFP.MPS+                    OpenAFP.Records.AFP.BOC OpenAFP.Records.AFP.OBD OpenAFP.Records.AFP.MCF+                    OpenAFP.Records.AFP.OCD OpenAFP.Records.AFP.CPD OpenAFP.Records.AFP.BNG+                    OpenAFP.Records.AFP.FNC OpenAFP.Records.AFP.BOG OpenAFP.Records.AFP.CAT+                    OpenAFP.Records.AFP.EFN OpenAFP.Records.AFP.BPG OpenAFP.Records.AFP.IOB+                    OpenAFP.Records.AFP.BRG OpenAFP.Records.AFP.FNG OpenAFP.Records.AFP.BSG+                    OpenAFP.Records.AFP.LLE OpenAFP.Records.AFP.EGR OpenAFP.Records.AFP.BMO+                    OpenAFP.Records.AFP.OBP OpenAFP.Records.AFP.FNO OpenAFP.Records.AFP.MDR+                    OpenAFP.Records.AFP.BPS OpenAFP.Records.AFP.TLE OpenAFP.Records.AFP.ECA+                    OpenAFP.Records.AFP.BCF OpenAFP.Records.AFP.CFC OpenAFP.Records.AFP.MCA+                    OpenAFP.Records.AFP.EDI OpenAFP.Records.AFP.BR OpenAFP.Records.AFP.EDM+                    OpenAFP.Records.AFP.CPC OpenAFP.Records.AFP.BFN OpenAFP.Records.AFP.EII+                    OpenAFP.Records.AFP.ER OpenAFP.Records.AFP.EFM OpenAFP.Records.AFP.PGP1+                    OpenAFP.Records.AFP.CTC OpenAFP.Records.AFP.EIM OpenAFP.Records.AFP.BGR+                    OpenAFP.Records.AFP.PGD OpenAFP.Records.AFP.LND OpenAFP.Records.AFP.EMM+                    OpenAFP.Records.AFP.DXD OpenAFP.Records.AFP.EPM OpenAFP.Records.AFP.FNN+                    OpenAFP.Records.AFP.IMM OpenAFP.Records.AFP.BCA OpenAFP.Records.AFP.BDA+                    OpenAFP.Records.AFP.PGP OpenAFP.Records.AFP.PTD OpenAFP.Records.AFP.BDI+                    OpenAFP.Records.AFP.IDD OpenAFP.Records.AFP.BDM OpenAFP.Records.AFP.BII+                    OpenAFP.Records.AFP.MCD OpenAFP.Records.AFP.BFM OpenAFP.Records.AFP.MDD+                    OpenAFP.Records.AFP.MSU OpenAFP.Records.AFP.IID OpenAFP.Records.PTX.AMI+                    OpenAFP.Records.PTX.DBR OpenAFP.Records.PTX.BLN OpenAFP.Records.PTX.SIA+                    OpenAFP.Records.PTX.SBI OpenAFP.Records.PTX.DIR OpenAFP.Records.PTX.RMB+                    OpenAFP.Records.PTX.SCFL OpenAFP.Records.PTX.RMI OpenAFP.Records.PTX.SIM+                    OpenAFP.Records.PTX.STC OpenAFP.Records.PTX.BSU OpenAFP.Records.PTX.NOP+                    OpenAFP.Records.PTX.ESU OpenAFP.Records.PTX.AMB OpenAFP.Records.PTX.SVI+                    OpenAFP.Records.PTX.TRN OpenAFP.Records.PTX.RPS OpenAFP.Records.PTX.STO+                    OpenAFP.Records.AFP OpenAFP.Records.PTX OpenAFP.Records.T OpenAFP.Records.MCF+                    OpenAFP.Types.Chunk OpenAFP.Types.Buffer OpenAFP.Types.View+                    OpenAFP.Types.Record OpenAFP.Internals OpenAFP.Records OpenAFP.Types OpenAFP +category:           Data+includes:           unicode/ucnv.h+extensions:         CPP, ForeignFunctionInterface+build-depends:      base, mtl, haskell98, regex-compat+include-dirs:       /usr/include /usr/local/include /opt/local/include+extra-lib-dirs:     /usr/lib /usr/local/lib /opt/local/lib+ld-options:         -licuuc+ghc-options:        -fglasgow-exts -funbox-strict-fields -fno-warn-missing-signatures+hs-source-dirs:     src
+ Setup.lhs view
@@ -0,0 +1,10 @@+#!/usr/bin/env runghc+\begin{code}++module Main where+import Distribution.Simple++main :: IO ()+main = defaultMain++\end{code}
+ src/OpenAFP.hs view
@@ -0,0 +1,97 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module re-exports all Records, Types, Internals and Prelude modules,+-- and provides some toplevel convenience functions.+--+-----------------------------------------------------------------------------++module OpenAFP (+    module OpenAFP.Types,+    module OpenAFP.Records,+    module OpenAFP.Internals,+    module OpenAFP.Prelude.Exts,+    module OpenAFP.Prelude.Utils,+    module OpenAFP.Prelude.Lookups,+    module OpenAFP.Prelude.Instances,+    module OpenAFP.Internals.UConv,++    readAFP, writeAFP, filterAFP,+    readArgs, afp_Chunks,+) where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals+import OpenAFP.Internals.UConv+import OpenAFP.Prelude.Utils+import OpenAFP.Prelude.Lookups+import OpenAFP.Prelude.Instances+import OpenAFP.Prelude.Exts++afp_Chunks :: FilePath -> [AFP_]+afp_Chunks filename = unsafePerformIO $ readAFP filename++writeAFP :: (Binary a) => FilePath -> [a] -> IO ()+writeAFP filename c = do+    fh  <- openBinaryFile filename WriteMode+    bh  <- openBinIO_ fh+    put bh $ c+    hClose fh+    return ()++filterAFP :: FilePath -> FilePath -> [(ChunkType, AFP_ -> IO [AFP_])] -> IO ()+filterAFP input output filters = do+    ifh  <- openBinaryFile input ReadMode+    ibh  <- openBinIO_ ifh+    ofh  <- openBinaryFile output WriteMode+    obh  <- openBinIO_ ofh+    filterAFPChunks ibh obh filters `catchError` \e -> return ()+    hClose ifh+    hClose ofh+    return ()++filterAFPChunks ibh obh filters = do+    eof <- isEOFBin ibh+    if eof then return () else do+	c <- get ibh :: IO AFP_+	filterChunk c filters obh+	filterAFPChunks ibh obh filters++filterChunk c possibleFilters bh+    | null filters  = put bh c+    | otherwise     = mapM_ (\(_, f) -> do+	c' <- f c+	put bh c') filters+    where+	filters = filter (\(t, _) -> (t == chunkType c)) possibleFilters++instance RecChunk FilePath AFP_ N3 Buffer2 where+    readChunks = afp_Chunks++instance Rec Char++readAFP :: (MonadIO m) => FilePath -> m [AFP_]+readAFP filename = liftIO $ do+    fh  <- openBinaryFile filename ReadMode+    bh  <- openBinIO_ fh+    cs  <- get bh+    return cs++readArgs :: (MonadIO m) => Int -> m [String]+readArgs n = liftIO $ do+    args <- getArgs+    when ((length args) < n) $ do+        pgm <- getProgName+        putStrLn $ "Usage: " ++ pgm ++ " input.afp output.afp"+        exitFailure+    return args+
+ src/OpenAFP/Internals.hs view
@@ -0,0 +1,110 @@+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Internals+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module imports and re-exports external modules used by OpenAFP,+-- as well as OpenAFP's own internal modules.+--+-----------------------------------------------------------------------------++module OpenAFP.Internals (+    module OpenAFP.Internals.Binary,+    module OpenAFP.Internals.Ebc2Asc,++    module Control.Exception,+    module Control.Monad.RWS,+    module Control.Monad.Error,+    module Data.Array.Unboxed,+    module Data.Bits,+    module Data.Char,+    module Data.List,+    module Data.HashTable,+    module Data.Word,+    module Data.Typeable,+    module Data.IORef,+    module Data.Maybe,+    module Debug.Trace,+    module Foreign.C.String,+    module Foreign.C.Types,+    module Foreign.Marshal.Alloc,+    module Foreign.Marshal.Array,+    module Foreign.Marshal.Utils,+    module Foreign.Ptr,+    module Foreign.ForeignPtr,+    module Foreign.Storable,+    module System.Mem.Weak,+    module System.Console.GetOpt,+    module System.IO,+    module System.Cmd,+    module System.Environment,+    module System.Exit,+    module System.IO.Unsafe,+    module System.IO.Error,+    module System.Directory,+    module Text.Regex,+    module GHC.IOBase,++    IOm, StateIO,++    hashNew, hashLookup, hashInsert, hashDelete,+    stateGet, statePut+) where+import OpenAFP.Internals.Binary+import OpenAFP.Internals.Ebc2Asc++import Control.Exception hiding (try, catch, ioError)+import Control.Monad.Error (throwError, catchError, MonadError(..), Error(..))+import Control.Monad.RWS hiding (get, put)+import qualified Control.Monad.RWS (get, put)+import Data.Array.Unboxed+import Data.Bits+import Data.Char+import Data.List+import Data.HashTable hiding (lookup, insert, delete, new)+import qualified Data.HashTable (lookup, insert, delete, new)+import Data.Word+import Data.Typeable+import Data.IORef+import Data.Maybe+import Debug.Trace+import Foreign.C.String+import Foreign.C.Types+import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.Marshal.Utils+import Foreign.Ptr+import Foreign.ForeignPtr+import Foreign.Storable+import Numeric+import System.Cmd+import System.Console.GetOpt+import System.IO+import System.Environment+import System.Exit+import System.Mem.Weak+import System.IO.Unsafe+import System.IO.Error+import System.Directory+import Text.Regex+import GHC.IOBase (IOArray, newIOArray, readIOArray, writeIOArray)++hashNew     = Data.HashTable.new+hashLookup  = Data.HashTable.lookup+hashInsert  = Data.HashTable.insert+hashDelete  = Data.HashTable.delete++stateGet :: (Control.Monad.RWS.MonadState s m) => m s+stateGet = Control.Monad.RWS.get+statePut :: (Control.Monad.RWS.MonadState s m) => s -> m ()+statePut = Control.Monad.RWS.put++type IOm a = (MonadPlus m, MonadIO m, MonadError e m, Show e, Typeable e) => m a+type StateIO v a = (MonadPlus m, MonadIO m, MonadReader v m, MonadError e m, Show e, Typeable e) => m a
+ src/OpenAFP/Internals/Binary.hs view
@@ -0,0 +1,531 @@+{-# OPTIONS -fglasgow-exts -O -funbox-strict-fields #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Internals.Binary+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- Binary IO library for buffers and file handles.+--+-- Based on Binary.hs from GHC source tree, (c) The University of Glasgow 2002.+--+-- Based on the nhc98 Binary library, which is copyright+-- (c) Malcolm Wallace and Colin Runciman, University of York, 1998.+-- Under the terms of the license for that software, we must tell you+-- where you can obtain the original version of the Binary library, namely+--     <http://www.cs.york.ac.uk/fp/nhc98/>+--+-----------------------------------------------------------------------------++module OpenAFP.Internals.Binary (+    {-class-} Binary(..),+    {-type-}  BinHandle,++    openBinIO, openBinIO_,+    openBinBuf, newBinBuf,++    seekBin, tellBin, closeBin, isEOFBin, sizeBin,++    putByte, getByte,++    getBuf, putBuf, bufOf,++    N0(..),++    N1(..), N2(..), N3(..), N4(..),+    I1(..), I2(..), I4(..), I8(..),+    A1(..), A2(..), A3(..), A4(..), A6(..), A8(..), A12(..),+    PStringLen,+  ) where++import Data.Array.Unboxed+import Data.Bits+import Data.Int+import Data.Word+import Data.Typeable+import Control.Monad            ( when )+import System.IO as IO+import System.IO.Error          ( mkIOError, eofErrorType )+import GHC.Exts+import GHC.Word                 ( Word8(..) )+import Foreign.Storable+import Data.Char+import Foreign.Ptr+import Numeric                  (showHex)++import System.Mem.Weak+import Foreign.C.Types+import Foreign.Marshal.Utils+import Foreign.ForeignPtr++import GHC.Base+import GHC.IOBase++---------------------------------------------------------------+--              BinHandle+---------------------------------------------------------------++data BinHandle =+    BinIO {             -- binary data stored in a file+        off_r   :: !IntM,         -- the current offset (cached)+        hdl     :: !IO.Handle           -- the file handle (must be seekable)+    }+    |+    BinBuf {            -- PStringLen based buffers+        off_r  :: !IntM,          -- the current offset (cached)+        buf    :: !PStringLen     -- the memory buffer+    }+    deriving (Show, Typeable)++type PStringLen = (ForeignPtr CChar, Int)++---------------------------------------------------------------+--              Accessors+---------------------------------------------------------------++bufOf :: BinHandle -> PStringLen+bufOf (BinIO _ _) = error "bufOf not defined"+bufOf (BinBuf _ buf) = buf++instance Show IntM where+    show i = (show $ unsafePerformIO $ readIntM i)++---------------------------------------------------------------+--              class Binary+---------------------------------------------------------------++class Binary a where+    put    :: BinHandle -> a -> IO ()+    get    :: BinHandle -> IO a++openBinIO_ :: IO.Handle -> IO BinHandle+openBinIO_ h = openBinIO h ++openBinIO :: IO.Handle -> IO BinHandle+openBinIO h = do+    r <- newIntM+    writeIntM r 0+    return (BinIO r h)++openBinBuf :: PStringLen -> IO BinHandle+openBinBuf pstrlen = do+   ix_r <- newIntM+   writeIntM ix_r 0+   return $ BinBuf ix_r pstrlen++newBinBuf :: Int -> IO BinHandle+newBinBuf size+    | size <= 0 = error "newBinBuf: size must be >= 0"+    | otherwise = do+        pstr <- mallocForeignPtrBytes size+        openBinBuf (pstr, size)++tellBin :: BinHandle -> IO Int+tellBin (BinIO  r _) = readIntM r+tellBin (BinBuf r _) = readIntM r++seekBin :: BinHandle -> Int -> IO ()+seekBin (BinIO ix_r h) p = do +    writeIntM ix_r p+    hSeek h AbsoluteSeek (fromIntegral p)+seekBin (BinBuf ix_r _) p = do+    writeIntM ix_r p++closeBin :: BinHandle -> IO ()+closeBin (BinIO _ h) = hClose h+closeBin (BinBuf _ _) = return ()++isEOFBin :: BinHandle -> IO Bool+isEOFBin (BinIO _ h) = hIsEOF h+isEOFBin (BinBuf ix_r (_, len)) = do+    ix <- readIntM ix_r+    return (ix >= len)++sizeBin :: BinHandle -> IO Int+sizeBin (BinIO _ h) = do+    size <- hFileSize h+    return $ fromEnum size+sizeBin (BinBuf _ (_, len)) = return len++-- -----------------------------------------------------------------------------+-- Low-level reading/writing of bytes++putWord8 :: BinHandle -> Word8 -> IO ()+putWord8 (BinIO ix_r h) w = do+    -- ix <- readIntM ix_r+    hPutChar h $ chr $ fromEnum w   -- XXX not really correct+    -- writeIntM ix_r (ix+1)+    return ()+putWord8 (BinBuf ix_r (pstr, len)) w = do+    ix <- readIntM ix_r+    when (ix >= len) $+        ioError (mkIOError eofErrorType "putWord8" Nothing Nothing)+    writeIntM ix_r (ix+1)+    withForeignPtr pstr $ \cstr ->+        pokeByteOff cstr ix w+    return ()++getWord8 :: BinHandle -> IO Word8+getWord8 (BinIO ix_r h) = do+    ix <- readIntM ix_r+    c <- hGetChar h+    writeIntM ix_r (ix+1)+    return $! (fromIntegral (ord c))    -- XXX not really correct+getWord8 (BinBuf ix_r (pstr, len)) = do+    ix <- readIntM ix_r+--  when (ix >= len)  $+--      ioError (mkIOError eofErrorType "getWord8" Nothing Nothing)+    writeIntM ix_r (ix+1)+    withForeignPtr pstr $ \cstr ->+        peekByteOff cstr ix++getBuf :: BinHandle -> Int -> IO PStringLen+getBuf (BinIO ix_r h) size = do+    pstr <- mallocForeignPtrBytes size+    withForeignPtr pstr $ \cstr -> do+        len <- hGetBuf h cstr size+        ix <- readIntM ix_r+        writeIntM ix_r (ix + len)+        return (pstr, len)+getBuf (BinBuf ix_r (pstr, len)) size = do+    ix <- readIntM ix_r+    let len' = min (len - ix) size+    writeIntM ix_r (ix + len')+    withForeignPtr pstr $ \cstr -> do+        pstr' <- newForeignPtr_ (plusPtr cstr ix)+        addFinalizer pstr' $ touchForeignPtr pstr -- ???+        return (pstr', len')++putBuf :: BinHandle -> PStringLen -> IO ()+putBuf (BinIO ix_r h) (pstr, len) = do+    ix <- readIntM ix_r+    writeIntM ix_r (ix + len)+    withForeignPtr pstr $ \cstr ->+        hPutBuf h cstr len+putBuf (BinBuf ix_r (pstr, len)) (pstr', len') = do+    ix <- readIntM ix_r+    when ((ix + len') > len) $+        ioError (mkIOError eofErrorType "putBuf" Nothing Nothing)+    writeIntM ix_r (ix+len')+    withForeignPtr pstr $ \cstr ->+        withForeignPtr pstr' $ \cstr' ->+            copyBytes (plusPtr cstr ix) cstr' len'++putByte :: BinHandle -> Word8 -> IO ()+putByte bh w = put bh w++getByte :: BinHandle -> IO Word8+getByte = getWord8++-- -----------------------------------------------------------------------------+-- Primitve Word writes++instance Binary Word8 where+  put = putWord8+  get = getWord8++instance Binary Word16 where+  put h w = do -- XXX too slow.. inline putWord8?+    putByte h (fromIntegral (w `shiftR` 8))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 8) .|. fromIntegral w2)++newtype A1 = A1 Word8 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)+newtype A2 = A2 Word16 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)+newtype A3 = A3 Word32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable)+newtype A4 = A4 Word32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)+newtype A6 = A6 Word64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable)+newtype A8 = A8 Word64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)+newtype A12 = A12 Integer deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable)++newtype I1 = I1 Int8 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray, Show)+newtype I2 = I2 Int16 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray, Show)+newtype I4 = I4 Int32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray, Show)+newtype I8 = I8 Int64 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray, Show)++newtype N1 = N1 Word8 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary, Ix, IArray UArray)+newtype N2 = N2 Word16 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)+newtype N3 = N3 Word32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable)+newtype N4 = N4 Word32 deriving (Ord, Enum, Real, Integral, Eq, Num, Bits, Typeable, Storable, Binary)++newtype N0 = N0 () deriving (Show, Ord, Enum, Eq, Typeable, Binary, Ix)++instance Num N0 where+    x + _           = x+    x * _           = x+    abs x           = x+    signum x        = x+    fromInteger _   = N0 ()++instance Show N1 where show = zeropad 1+instance Show N2 where show = zeropad 2+instance Show N3 where show = zeropad 3+instance Show N4 where show = zeropad 4++instance Show A1 where show = zeropad 1+instance Show A2 where show = zeropad 2+instance Show A3 where show = zeropad 3+instance Show A4 where show = zeropad 4+instance Show A6 where show = zeropad 6+instance Show A8 where show = zeropad 8+instance Show A12 where show = zeropad 12++{-# INLINE zeropad #-}+zeropad :: (Integral a) => Int -> a -> String+zeropad len str = replicate len' '0' ++ str'+    where str' = map toUpper $ showHex str ""+          len' = 2*len - length str'++instance Storable N3 where+    sizeOf w = 3+    alignment w = 8++instance Storable A3 where+    sizeOf w = 3+    alignment w = 8++instance Storable A6 where+    sizeOf w = 6+    alignment w = 8++instance Storable A12 where+    sizeOf w = 12+    alignment w = 8++instance (Storable a, Storable b) => Storable (a, b) where+    alignment _     = error "alignment not defined"+    sizeOf (x, y)   = (sizeOf x) + (sizeOf y)++instance Binary N3 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 16))+    putByte h (fromIntegral ((w `shiftR` 8)  .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 16) .|. +               (fromIntegral w2 `shiftL`  8) .|. +               (fromIntegral w3))++instance Binary A3 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 16))+    putByte h (fromIntegral ((w `shiftR` 8)  .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 16) .|. +               (fromIntegral w2 `shiftL`  8) .|. +               (fromIntegral w3))++instance Binary A6 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 40))+    putByte h (fromIntegral ((w `shiftR` 32) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 24) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 16) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 8)  .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    w4 <- getWord8 h+    w5 <- getWord8 h+    w6 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 40) .|. +               (fromIntegral w2 `shiftL` 32) .|. +               (fromIntegral w3 `shiftL` 24) .|. +               (fromIntegral w4 `shiftL` 16) .|. +               (fromIntegral w5 `shiftL`  8) .|. +               (fromIntegral w6))++instance Binary A12 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 88))+    putByte h (fromIntegral ((w `shiftR` 80) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 72) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 64) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 56) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 48) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 40) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 32) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 24) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 16) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 8)  .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    w4 <- getWord8 h+    w5 <- getWord8 h+    w6 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 88) .|. +               (fromIntegral w2 `shiftL` 80) .|. +               (fromIntegral w3 `shiftL` 72) .|. +               (fromIntegral w4 `shiftL` 64) .|. +               (fromIntegral w5 `shiftL` 56) .|. +               (fromIntegral w2 `shiftL` 48) .|. +               (fromIntegral w3 `shiftL` 40) .|. +               (fromIntegral w2 `shiftL` 32) .|. +               (fromIntegral w3 `shiftL` 24) .|. +               (fromIntegral w4 `shiftL` 16) .|. +               (fromIntegral w5 `shiftL`  8) .|. +               (fromIntegral w6))++instance Binary Word32 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 24))+    putByte h (fromIntegral ((w `shiftR` 16) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 8)  .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    w4 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 24) .|. +               (fromIntegral w2 `shiftL` 16) .|. +               (fromIntegral w3 `shiftL`  8) .|. +               (fromIntegral w4))+++instance Binary Word64 where+  put h w = do+    putByte h (fromIntegral (w `shiftR` 56))+    putByte h (fromIntegral ((w `shiftR` 48) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 40) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 32) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 24) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR` 16) .&. 0xff))+    putByte h (fromIntegral ((w `shiftR`  8) .&. 0xff))+    putByte h (fromIntegral (w .&. 0xff))+  get h = do+    w1 <- getWord8 h+    w2 <- getWord8 h+    w3 <- getWord8 h+    w4 <- getWord8 h+    w5 <- getWord8 h+    w6 <- getWord8 h+    w7 <- getWord8 h+    w8 <- getWord8 h+    return $! ((fromIntegral w1 `shiftL` 56) .|. +               (fromIntegral w2 `shiftL` 48) .|. +               (fromIntegral w3 `shiftL` 40) .|. +               (fromIntegral w4 `shiftL` 32) .|. +               (fromIntegral w5 `shiftL` 24) .|. +               (fromIntegral w6 `shiftL` 16) .|. +               (fromIntegral w7 `shiftL`  8) .|. +               (fromIntegral w8))++-- -----------------------------------------------------------------------------+-- Primitve Int writes++instance Binary Int8 where+  put h w = put h (fromIntegral w :: Word8)+  get h    = do w <- get h; return $! (fromIntegral (w::Word8))++instance Binary Int16 where+  put h w = put h (fromIntegral w :: Word16)+  get h    = do w <- get h; return $! (fromIntegral (w::Word16))++instance Binary Int32 where+  put h w = put h (fromIntegral w :: Word32)+  get h    = do w <- get h; return $! (fromIntegral (w::Word32))++instance Binary Int64 where+  put h w = put h (fromIntegral w :: Word64)+  get h    = do w <- get h; return $! (fromIntegral (w::Word64))++-- -----------------------------------------------------------------------------+-- Instances for standard types++instance Binary () where+    put bh () = return ()+    get  _     = return ()++instance Binary Bool where+    put bh b    = putByte bh (fromIntegral (fromEnum b))+    get bh      = do x <- getWord8 bh; return $! (toEnum (fromEnum x))++instance Binary Char where+    put bh c    = put bh (fromIntegral (ord c) :: Word8)+    get bh      = do x <- get bh; return $! (chr (fromEnum (x :: Word8)))++-- XXX - 32-bitism+instance Binary Int where+    put bh i = put bh (fromIntegral i :: Int32)+    get bh = do+        x <- get bh+        return $! (fromIntegral (x :: Int32))++instance Binary a => Binary [a] where+    put bh list = do mapM_ (put bh) list+    get bh@(BinBuf ix_r (_, len)) = do+        ix <- readIntM ix_r+        if (ix >= len) then+            return []+            else do+            x  <- get bh+            xs <- get bh+            return (x:xs)+    get bh@(BinIO _ _) = (do+        x  <- get bh+        xs <- unsafeInterleaveIO $ get bh+        return (x:xs)) `catch` \e -> return []++instance (Binary a, Binary b) => Binary (a,b) where+    put bh (a,b)    = do put bh a; put bh b+    get bh          = do a <- get bh+                         b <- get bh+                         return (a,b)++instance (Binary a, Binary b, Binary c) => Binary (a,b,c) where+    put bh (a,b,c)  = do put bh a; put bh b; put bh c+    get bh          = do a <- get bh+                         b <- get bh+                         c <- get bh+                         return (a,b,c)++instance (Binary a, Binary b, Binary c, Binary d) => Binary (a,b,c,d) where+    put bh (a,b,c,d)= do put bh a; put bh b; put bh c; put bh d+    get bh          = do a <- get bh+                         b <- get bh+                         c <- get bh+                         d <- get bh+                         return (a,b,c,d)++---------------------------------------------------------------+--              Support code: IntM+---------------------------------------------------------------++data IntM = IntM (MutableByteArray# RealWorld)++newIntM :: IO IntM+newIntM = IO $ \s ->+    case newByteArray# size s of { (# s, arr #) ->+    (# s, IntM arr #) }+    where I# size = 4 -- XXX - 32-bitism++readIntM :: IntM -> IO Int+readIntM (IntM arr) = IO $ \s ->+    case readIntArray# arr 0# s of { (# s, i #) ->+    (# s, I# i #) }++writeIntM :: IntM -> Int -> IO ()+writeIntM (IntM arr) (I# i) = IO $ \s ->+    case writeIntArray# arr 0# i s of { s ->+    (# s, () #) }
+ src/OpenAFP/Internals/Ebc2Asc.hs view
@@ -0,0 +1,76 @@+{-# OPTIONS -O -fglasgow-exts #-}++module OpenAFP.Internals.Ebc2Asc where+import Data.Word+import Data.Array.Unboxed+import OpenAFP.Internals.Binary++ebc2asc :: UArray N1 Char+ebc2asc = listArray (0, 255) [+        '\x00', '\x01', '\x02', '\x03', '\x00', '\x09', '\x00', '\x00',+        '\x00', '\x00', '\x00', '\x0B', '\x0C', '\x0D', '\x20', '\x20',+        '\x10', '\x11', '\x12', '\x13', '\x00', '\x00', '\x08', '\x00',+        '\x18', '\x19', '\x00', '\x00', '\x1C', '\x1D', '\x1E', '\x1F',+        '\x00', '\x00', '\x00', '\x00', '\x00', '\x0A', '\x17', '\x1B',+        '\x00', '\x00', '\x00', '\x00', '\x00', '\x05', '\x06', '\x07',+        '\x00', '\x00', '\x16', '\x00', '\x00', '\x00', '\x00', '\x04',+        '\x00', '\x00', '\x00', '\x00', '\x14', '\x15', '\x00', '\x00',+        '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x20', '\x5B', '\x2E', '\x3C', '\x28', '\x2B', '\x21',+        '\x26', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x20', '\x5D', '\x24', '\x2A', '\x29', '\x3B', '\x5E',+        '\x2D', '\x2F', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x20', '\x7C', '\x2C', '\x25', '\x5F', '\x3E', '\x3F',+        '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x60', '\x3A', '\x23', '\x40', '\x27', '\x3D', '\x22',+        '\x20', '\x61', '\x62', '\x63', '\x64', '\x65', '\x66', '\x67',+        '\x68', '\x69', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x6A', '\x6B', '\x6C', '\x6D', '\x6E', '\x6F', '\x70',+        '\x71', '\x72', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x7E', '\x73', '\x74', '\x75', '\x76', '\x77', '\x78',+        '\x79', '\x7A', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x7B', '\x41', '\x42', '\x43', '\x44', '\x45', '\x46', '\x47',+        '\x48', '\x49', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x7D', '\x4A', '\x4B', '\x4C', '\x4D', '\x4E', '\x4F', '\x50',+        '\x51', '\x52', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x5C', '\x20', '\x53', '\x54', '\x55', '\x56', '\x57', '\x58',+        '\x59', '\x5A', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20',+        '\x30', '\x31', '\x32', '\x33', '\x34', '\x35', '\x36', '\x37',+        '\x38', '\x39', '\x20', '\x20', '\x20', '\x20', '\x20', '\x20' ]++asc2ebc :: UArray Int N1+asc2ebc = listArray (0, 255) [+        0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,+        0x16, 0x05, 0x25, 0x0B, 0x0C, 0x0D, 0x3F, 0x3F,+        0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,+        0x18, 0x19, 0x3F, 0x27, 0x1C, 0x1D, 0x1E, 0x1F,+        0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,+        0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,+        0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,+        0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,+        0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,+        0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,+        0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,+        0xE7, 0xE8, 0xE9, 0x4A, 0xE0, 0x6A, 0x5F, 0x6D,+        0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,+        0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,+        0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,+        0xA7, 0xA8, 0xA9, 0xC0, 0x4F, 0xD0, 0xA1, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,+        0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 ]
+ src/OpenAFP/Internals/UConv.hs view
@@ -0,0 +1,67 @@+{-# OPTIONS -#include <unicode/ucnv.h> #-}+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Internals.UConv+-- Copyright   :  Audrey Tang+-- License     :  BSD-style+--+-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (FFI extensions, UNIX98)+--+-- This module provides an interface to IBM ICU's uconv functionality+--+-----------------------------------------------------------------------------++-- Make with: ghc --make main.hs -L/usr/local/lib -licuuc -O -I/usr/local/include++module OpenAFP.Internals.UConv where++import Foreign+import Foreign.C+import Foreign.Ptr+import OpenAFP.Internals.Binary+import System.IO.Unsafe(unsafePerformIO)++-- |+-- Convert a sequence of bytes from one encoding to another.+uconv :: String         -- ^ The encoding to convert from+      -> String         -- ^ The encoding to convert to+      -> [N1]           -- ^ The byte sequence to convert+      -> Maybe String   -- ^ The byte sequence converted+uconv fromcode tocode bytes = unsafePerformIO $ do+  -- Create a conversion descriptor+    withCString fromcode    $ \fromcode_c -> do+    withCString tocode      $ \tocode_c -> do+    allocaBytes in_len      $ \in_c -> do+        pokeArray in_c bytes+        allocaBytes out_len $ \out_c -> do+        alloca              $ \err -> do+            poke err (0 :: Word8)+            len <- ucnv_convert tocode_c +                                fromcode_c +                                (castPtr    out_c)+                                (toEnum     out_len)+                                (castPtr    in_c)+                                (toEnum     in_len)+                                err+            errCode <- peek err :: IO Word8+            if (errCode == 0) then+                return . Just =<< peekCStringLen (out_c, fromEnum len)+                else +                return Nothing -- ("<<error: " ++ (show errCode) ++ ">>")+    where+        out_len = (4 * in_len)+        in_len  = (length bytes)++foreign import ccall "ucnv_convert_3_4" ucnv_convert ::+    CString     -> -- toConverterName+    CString     -> -- fromConverterName+    Ptr CChar   -> -- target+    Int32       -> -- targetCapacity+    Ptr CChar   -> -- source+    Int32       -> -- sourceLength+    Ptr Word8   -> -- pErrorCode+    IO Int32       -- return: targetLength
+ src/OpenAFP/Prelude/Exts.hs view
@@ -0,0 +1,104 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields -cpp #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Prelude.Exts+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- PreludeExts from the Haskell Wiki under the BSD license.+--+-----------------------------------------------------------------------------++module OpenAFP.Prelude.Exts where+import OpenAFP.Internals++-- | Applies a bunch of functions to a value.+rmap :: [a -> b] -> a -> [b]+rmap fs x = map ($ x) fs++-- Catch user errors, but let others through+onUserError :: IO a -> (String -> IO a) -> IO a+m `onUserError` h+    = m `catchError` \e ->+          if isUserError e+              then h (ioeGetErrorString e)+              else throwError e++type RE = String+(=~) :: String -> String -> Bool+s =~ p = isJust $ matchRegex (mkRegexWithOpts p False True) s++splitRegexWithMatches :: RE -> String -> ([String], [String])+splitRegexWithMatches regexpr src = splitRegex' src+  where+    regex = mkRegex regexpr+    splitRegex' :: String -> ([String], [String])+    splitRegex' s  =+        case matchRegexAll regex s of+             Just (before, match, after, _) ->+                 case splitRegex' after of (text, matches) -> (before : text, match : matches)+             Nothing                    -> ([s], [])++splitBy :: (a -> Bool) -> [a] -> [[a]]+splitBy _ [] = []+splitBy f list =  first : splitBy f (dropWhile f rest)+   where +     (first, rest) = break f list++lower :: String -> String+lower = map toLower++upper :: String -> String+upper = map toUpper++---------------------------------------------------------------------------------+-- Tom Moertel - from lambdabot's Util module++-- | Join lists with the given glue elements. Example:+--+-- > joinList ", " ["one","two","three"] ===> "one, two, three"++joinList :: [a]   -- ^ Glue to join with+         -> [[a]] -- ^ Elements to glue together+         -> [a]   -- ^ Result: glued-together list++joinList glue xs = (concat . intersperse glue) xs++-- | Split a list into pieces that were held together by glue.  Example:+--+-- > split ", " "one, two, three" ===> ["one","two","three"]++split :: Eq a => [a] -- ^ Glue that holds pieces together+      -> [a]         -- ^ List to break into pieces+      -> [[a]]       -- ^ Result: list of pieces++split glue xs = split' xs+    where+    split' [] = []+    split' xs = piece : split' (dropGlue rest)+        where (piece, rest) = breakOnGlue glue xs+    dropGlue = drop (length glue)++-- | Break off the first piece of a list held together by glue,+--   leaving the glue attached to the remainder of the list.  Example:+--+-- > breakOnGlue ", " "one, two, three" ===> ("one", ", two, three")++breakOnGlue :: (Eq a) => [a] -- ^ Glue that holds pieces together+            -> [a]           -- ^ List from which to break off a piece+            -> ([a],[a])     -- ^ Result: (first piece, glue ++ rest of list)++breakOnGlue _ [] = ([],[])+breakOnGlue glue rest@(x:xs)+    | glue `isPrefixOf` rest = ([], rest)+    | otherwise = (x:piece, rest') where (piece, rest') = breakOnGlue glue xs++split_first_word :: String -> (String, String)+split_first_word xs = (w, dropWhile isSpace xs')+  where (w, xs') = break isSpace xs+
+ src/OpenAFP/Prelude/InstanceAFP.hs view
@@ -0,0 +1,736 @@+{-# OPTIONS -fglasgow-exts #-}++module OpenAFP.Prelude.InstanceAFP () where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals++recOf :: (ChunkBuf c n b, Binary (Record r)) => c -> IO r+recOf c = return . fromRecord =<< chunkToRecord c++apply :: (MonadIO m) => (t -> IO a) -> t -> (a -> m b) -> m b+apply ctr c f = f =<< (liftIO $ ctr c)++instance Rec BAG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BAG a01 a02 a03+    recPut bh r = do put bh $ bag_Type r; put bh $ bag_ r; put bh $ bag r; return ()+    recSizeOf r = sum [ sizeOf $ bag_Type r, sizeOf $ bag_ r, sizeOf $ bag r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bag_Type r), viewField "_" (viewNumber $ bag_ r), viewField "" (viewNStr $ bag r) ]+    recType = fromEnum . bag_Type++instance Rec BBC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BBC a01 a02 a03+    recPut bh r = do put bh $ bbc_Type r; put bh $ bbc_ r; put bh $ bbc r; return ()+    recSizeOf r = sum [ sizeOf $ bbc_Type r, sizeOf $ bbc_ r, sizeOf $ bbc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bbc_Type r), viewField "_" (viewNumber $ bbc_ r), viewField "" (viewNStr $ bbc r) ]+    recType = fromEnum . bbc_Type++instance Rec BCA where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BCA a01 a02 a03+    recPut bh r = do put bh $ bca_Type r; put bh $ bca_ r; put bh $ bca r; return ()+    recSizeOf r = sum [ sizeOf $ bca_Type r, sizeOf $ bca_ r, sizeOf $ bca r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bca_Type r), viewField "_" (viewNumber $ bca_ r), viewField "" (viewNStr $ bca r) ]+    recType = fromEnum . bca_Type++instance Rec BCF where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BCF a01 a02 a03+    recPut bh r = do put bh $ bcf_Type r; put bh $ bcf_ r; put bh $ bcf r; return ()+    recSizeOf r = sum [ sizeOf $ bcf_Type r, sizeOf $ bcf_ r, sizeOf $ bcf r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bcf_Type r), viewField "_" (viewNumber $ bcf_ r), viewField "" (viewNStr $ bcf r) ]+    recType = fromEnum . bcf_Type++instance Rec BCP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BCP a01 a02 a03+    recPut bh r = do put bh $ bcp_Type r; put bh $ bcp_ r; put bh $ bcp r; return ()+    recSizeOf r = sum [ sizeOf $ bcp_Type r, sizeOf $ bcp_ r, sizeOf $ bcp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bcp_Type r), viewField "_" (viewNumber $ bcp_ r), viewField "" (viewNStr $ bcp r) ]+    recType = fromEnum . bcp_Type++instance Rec BDA where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDA a01 a02 a03+    recPut bh r = do put bh $ bda_Type r; put bh $ bda_ r; put bh $ bda r; return ()+    recSizeOf r = sum [ sizeOf $ bda_Type r, sizeOf $ bda_ r, sizeOf $ bda r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bda_Type r), viewField "_" (viewNumber $ bda_ r), viewField "" (viewNStr $ bda r) ]+    recType = fromEnum . bda_Type++instance Rec BDD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDD a01 a02 a03+    recPut bh r = do put bh $ bdd_Type r; put bh $ bdd_ r; put bh $ bdd r; return ()+    recSizeOf r = sum [ sizeOf $ bdd_Type r, sizeOf $ bdd_ r, sizeOf $ bdd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdd_Type r), viewField "_" (viewNumber $ bdd_ r), viewField "" (viewNStr $ bdd r) ]+    recType = fromEnum . bdd_Type++instance Rec BDG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDG a01 a02 a03+    recPut bh r = do put bh $ bdg_Type r; put bh $ bdg_ r; put bh $ bdg r; return ()+    recSizeOf r = sum [ sizeOf $ bdg_Type r, sizeOf $ bdg_ r, sizeOf $ bdg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdg_Type r), viewField "_" (viewNumber $ bdg_ r), viewField "" (viewNStr $ bdg r) ]+    recType = fromEnum . bdg_Type++instance Rec BDI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDI a01 a02 a03+    recPut bh r = do put bh $ bdi_Type r; put bh $ bdi_ r; put bh $ bdi r; return ()+    recSizeOf r = sum [ sizeOf $ bdi_Type r, sizeOf $ bdi_ r, sizeOf $ bdi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdi_Type r), viewField "_" (viewNumber $ bdi_ r), viewField "" (viewNStr $ bdi r) ]+    recType = fromEnum . bdi_Type++instance Rec BDM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDM a01 a02 a03+    recPut bh r = do put bh $ bdm_Type r; put bh $ bdm_ r; put bh $ bdm r; return ()+    recSizeOf r = sum [ sizeOf $ bdm_Type r, sizeOf $ bdm_ r, sizeOf $ bdm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdm_Type r), viewField "_" (viewNumber $ bdm_ r), viewField "" (viewNStr $ bdm r) ]+    recType = fromEnum . bdm_Type++instance Rec BDT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDT a01 a02 a03+    recPut bh r = do put bh $ bdt_Type r; put bh $ bdt_ r; put bh $ bdt r; return ()+    recSizeOf r = sum [ sizeOf $ bdt_Type r, sizeOf $ bdt_ r, sizeOf $ bdt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdt_Type r), viewField "_" (viewNumber $ bdt_ r), viewField "" (viewNStr $ bdt r) ]+    recType = fromEnum . bdt_Type++instance Rec BDX where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BDX a01 a02 a03+    recPut bh r = do put bh $ bdx_Type r; put bh $ bdx_ r; put bh $ bdx r; return ()+    recSizeOf r = sum [ sizeOf $ bdx_Type r, sizeOf $ bdx_ r, sizeOf $ bdx r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bdx_Type r), viewField "_" (viewNumber $ bdx_ r), viewField "" (viewNStr $ bdx r) ]+    recType = fromEnum . bdx_Type++instance Rec BFG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BFG a01 a02 a03+    recPut bh r = do put bh $ bfg_Type r; put bh $ bfg_ r; put bh $ bfg r; return ()+    recSizeOf r = sum [ sizeOf $ bfg_Type r, sizeOf $ bfg_ r, sizeOf $ bfg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bfg_Type r), viewField "_" (viewNumber $ bfg_ r), viewField "" (viewNStr $ bfg r) ]+    recType = fromEnum . bfg_Type++instance Rec BFM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BFM a01 a02 a03+    recPut bh r = do put bh $ bfm_Type r; put bh $ bfm_ r; put bh $ bfm r; return ()+    recSizeOf r = sum [ sizeOf $ bfm_Type r, sizeOf $ bfm_ r, sizeOf $ bfm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bfm_Type r), viewField "_" (viewNumber $ bfm_ r), viewField "" (viewNStr $ bfm r) ]+    recType = fromEnum . bfm_Type++instance Rec BFN where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BFN a01 a02 a03+    recPut bh r = do put bh $ bfn_Type r; put bh $ bfn_ r; put bh $ bfn r; return ()+    recSizeOf r = sum [ sizeOf $ bfn_Type r, sizeOf $ bfn_ r, sizeOf $ bfn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bfn_Type r), viewField "_" (viewNumber $ bfn_ r), viewField "" (viewNStr $ bfn r) ]+    recType = fromEnum . bfn_Type++instance Rec BGR where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BGR a01 a02 a03+    recPut bh r = do put bh $ bgr_Type r; put bh $ bgr_ r; put bh $ bgr r; return ()+    recSizeOf r = sum [ sizeOf $ bgr_Type r, sizeOf $ bgr_ r, sizeOf $ bgr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bgr_Type r), viewField "_" (viewNumber $ bgr_ r), viewField "" (viewNStr $ bgr r) ]+    recType = fromEnum . bgr_Type++instance Rec BII where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BII a01 a02 a03+    recPut bh r = do put bh $ bii_Type r; put bh $ bii_ r; put bh $ bii_ImageObjectName r; return ()+    recSizeOf r = sum [ sizeOf $ bii_Type r, sizeOf $ bii_ r, sizeOf $ bii_ImageObjectName r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bii_Type r), viewField "_" (viewNumber $ bii_ r), viewField "ImageObjectName" (viewString $ bii_ImageObjectName r) ]+    recType = fromEnum . bii_Type++instance Rec BIM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BIM a01 a02 a03+    recPut bh r = do put bh $ bim_Type r; put bh $ bim_ r; put bh $ bim r; return ()+    recSizeOf r = sum [ sizeOf $ bim_Type r, sizeOf $ bim_ r, sizeOf $ bim r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bim_Type r), viewField "_" (viewNumber $ bim_ r), viewField "" (viewNStr $ bim r) ]+    recType = fromEnum . bim_Type++instance Rec BMM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BMM a01 a02 a03+    recPut bh r = do put bh $ bmm_Type r; put bh $ bmm_ r; put bh $ bmm r; return ()+    recSizeOf r = sum [ sizeOf $ bmm_Type r, sizeOf $ bmm_ r, sizeOf $ bmm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bmm_Type r), viewField "_" (viewNumber $ bmm_ r), viewField "" (viewNStr $ bmm r) ]+    recType = fromEnum . bmm_Type++instance Rec BMO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BMO a01 a02 a03+    recPut bh r = do put bh $ bmo_Type r; put bh $ bmo_ r; put bh $ bmo r; return ()+    recSizeOf r = sum [ sizeOf $ bmo_Type r, sizeOf $ bmo_ r, sizeOf $ bmo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bmo_Type r), viewField "_" (viewNumber $ bmo_ r), viewField "" (viewNStr $ bmo r) ]+    recType = fromEnum . bmo_Type++instance Rec BNG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BNG a01 a02 a03+    recPut bh r = do put bh $ bng_Type r; put bh $ bng_ r; put bh $ bng r; return ()+    recSizeOf r = sum [ sizeOf $ bng_Type r, sizeOf $ bng_ r, sizeOf $ bng r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bng_Type r), viewField "_" (viewNumber $ bng_ r), viewField "" (viewNStr $ bng r) ]+    recType = fromEnum . bng_Type++instance Rec BOC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BOC a01 a02 a03+    recPut bh r = do put bh $ boc_Type r; put bh $ boc_ r; put bh $ boc r; return ()+    recSizeOf r = sum [ sizeOf $ boc_Type r, sizeOf $ boc_ r, sizeOf $ boc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ boc_Type r), viewField "_" (viewNumber $ boc_ r), viewField "" (viewNStr $ boc r) ]+    recType = fromEnum . boc_Type++instance Rec BOG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BOG a01 a02 a03+    recPut bh r = do put bh $ bog_Type r; put bh $ bog_ r; put bh $ bog r; return ()+    recSizeOf r = sum [ sizeOf $ bog_Type r, sizeOf $ bog_ r, sizeOf $ bog r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bog_Type r), viewField "_" (viewNumber $ bog_ r), viewField "" (viewNStr $ bog r) ]+    recType = fromEnum . bog_Type++instance Rec BPG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BPG a01 a02 a03+    recPut bh r = do put bh $ bpg_Type r; put bh $ bpg_ r; put bh $ bpg r; return ()+    recSizeOf r = sum [ sizeOf $ bpg_Type r, sizeOf $ bpg_ r, sizeOf $ bpg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bpg_Type r), viewField "_" (viewNumber $ bpg_ r), viewField "" (viewNStr $ bpg r) ]+    recType = fromEnum . bpg_Type++instance Rec BPM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BPM a01 a02 a03+    recPut bh r = do put bh $ bpm_Type r; put bh $ bpm_ r; put bh $ bpm r; return ()+    recSizeOf r = sum [ sizeOf $ bpm_Type r, sizeOf $ bpm_ r, sizeOf $ bpm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bpm_Type r), viewField "_" (viewNumber $ bpm_ r), viewField "" (viewNStr $ bpm r) ]+    recType = fromEnum . bpm_Type++instance Rec BPS where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BPS a01 a02 a03+    recPut bh r = do put bh $ bps_Type r; put bh $ bps_ r; put bh $ bps r; return ()+    recSizeOf r = sum [ sizeOf $ bps_Type r, sizeOf $ bps_ r, sizeOf $ bps r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bps_Type r), viewField "_" (viewNumber $ bps_ r), viewField "" (viewNStr $ bps r) ]+    recType = fromEnum . bps_Type++instance Rec BPT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BPT a01 a02 a03+    recPut bh r = do put bh $ bpt_Type r; put bh $ bpt_ r; put bh $ bpt r; return ()+    recSizeOf r = sum [ sizeOf $ bpt_Type r, sizeOf $ bpt_ r, sizeOf $ bpt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bpt_Type r), viewField "_" (viewNumber $ bpt_ r), viewField "" (viewNStr $ bpt r) ]+    recType = fromEnum . bpt_Type++instance Rec BR where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BR a01 a02 a03+    recPut bh r = do put bh $ br_Type r; put bh $ br_ r; put bh $ br r; return ()+    recSizeOf r = sum [ sizeOf $ br_Type r, sizeOf $ br_ r, sizeOf $ br r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ br_Type r), viewField "_" (viewNumber $ br_ r), viewField "" (viewNStr $ br r) ]+    recType = fromEnum . br_Type++instance Rec BRG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BRG a01 a02 a03+    recPut bh r = do put bh $ brg_Type r; put bh $ brg_ r; put bh $ brg r; return ()+    recSizeOf r = sum [ sizeOf $ brg_Type r, sizeOf $ brg_ r, sizeOf $ brg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ brg_Type r), viewField "_" (viewNumber $ brg_ r), viewField "" (viewNStr $ brg r) ]+    recType = fromEnum . brg_Type++instance Rec BSG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ BSG a01 a02 a03+    recPut bh r = do put bh $ bsg_Type r; put bh $ bsg_ r; put bh $ bsg r; return ()+    recSizeOf r = sum [ sizeOf $ bsg_Type r, sizeOf $ bsg_ r, sizeOf $ bsg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ bsg_Type r), viewField "_" (viewNumber $ bsg_ r), viewField "" (viewNStr $ bsg r) ]+    recType = fromEnum . bsg_Type++instance Rec CAT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CAT a01 a02 a03+    recPut bh r = do put bh $ cat_Type r; put bh $ cat_ r; put bh $ cat r; return ()+    recSizeOf r = sum [ sizeOf $ cat_Type r, sizeOf $ cat_ r, sizeOf $ cat r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cat_Type r), viewField "_" (viewNumber $ cat_ r), viewField "" (viewNStr $ cat r) ]+    recType = fromEnum . cat_Type++instance Rec CDD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CDD a01 a02 a03+    recPut bh r = do put bh $ cdd_Type r; put bh $ cdd_ r; put bh $ cdd r; return ()+    recSizeOf r = sum [ sizeOf $ cdd_Type r, sizeOf $ cdd_ r, sizeOf $ cdd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cdd_Type r), viewField "_" (viewNumber $ cdd_ r), viewField "" (viewNStr $ cdd r) ]+    recType = fromEnum . cdd_Type++instance Rec CFC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; return $ CFC a01 a02 a03 a04+    recPut bh r = do put bh $ cfc_Type r; put bh $ cfc_ r; put bh $ cfc_CFIRepeatingGroupLength r; put bh $ cfc r; return ()+    recSizeOf r = sum [ sizeOf $ cfc_Type r, sizeOf $ cfc_ r, sizeOf $ cfc_CFIRepeatingGroupLength r, sizeOf $ cfc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cfc_Type r), viewField "_" (viewNumber $ cfc_ r), viewField "CFIRepeatingGroupLength" (viewNumber $ cfc_CFIRepeatingGroupLength r), viewField "" (viewNStr $ cfc r) ]+    recType = fromEnum . cfc_Type++instance Rec CFI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CFI a01 a02 a03+    recPut bh r = do put bh $ cfi_Type r; put bh $ cfi_ r; put bh $ cfi_Data r; return ()+    recSizeOf r = sum [ sizeOf $ cfi_Type r, sizeOf $ cfi_ r, sizeOf $ cfi_Data r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cfi_Type r), viewField "_" (viewNumber $ cfi_ r), viewField "Data" (viewData $ cfi_Data r) ]+    recType = fromEnum . cfi_Type++instance Rec CFI_Data where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; return $ CFI_Data a01 a02 a03 a04+    recPut bh r = do put bh $ cfi_FontCharacterSetName r; put bh $ cfi_CodePageName r; put bh $ cfi_CodedFontName r; put bh $ cfi_Section r; return ()+    recSizeOf r = sum [ sizeOf $ cfi_FontCharacterSetName r, sizeOf $ cfi_CodePageName r, sizeOf $ cfi_CodedFontName r, sizeOf $ cfi_Section r ]+    recView r = viewRecord (typeOf r) [ viewField "FontCharacterSetName" (viewString $ cfi_FontCharacterSetName r), viewField "CodePageName" (viewString $ cfi_CodePageName r), viewField "CodedFontName" (viewString $ cfi_CodedFontName r), viewField "Section" (viewNumber $ cfi_Section r) ]+    recType r = 0++instance RecData CFI CFI_Data where+    readData r = cfi_Data r+    writeData r cs = r { cfi_Data = cs }++instance Rec CPC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; return $ CPC a01 a02 a03 a04 a05 a06 a07 a08+    recPut bh r = do put bh $ cpc_Type r; put bh $ cpc_ r; put bh $ cpc_GCGID r; put bh $ cpc_UseFlags r; put bh $ cpc_CPIRepeatingGroupLength r; put bh $ cpc_SpaceCharacterSection r; put bh $ cpc_UseFlags2 r; put bh $ cpc r; return ()+    recSizeOf r = sum [ sizeOf $ cpc_Type r, sizeOf $ cpc_ r, sizeOf $ cpc_GCGID r, sizeOf $ cpc_UseFlags r, sizeOf $ cpc_CPIRepeatingGroupLength r, sizeOf $ cpc_SpaceCharacterSection r, sizeOf $ cpc_UseFlags2 r, sizeOf $ cpc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cpc_Type r), viewField "_" (viewNumber $ cpc_ r), viewField "GCGID" (viewString $ cpc_GCGID r), viewField "UseFlags" (viewNumber $ cpc_UseFlags r), viewField "CPIRepeatingGroupLength" (viewNumber $ cpc_CPIRepeatingGroupLength r), viewField "SpaceCharacterSection" (viewNumber $ cpc_SpaceCharacterSection r), viewField "UseFlags2" (viewNumber $ cpc_UseFlags2 r), viewField "" (viewNStr $ cpc r) ]+    recType = fromEnum . cpc_Type++instance Rec CPD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CPD a01 a02 a03+    recPut bh r = do put bh $ cpd_Type r; put bh $ cpd_ r; put bh $ cpd r; return ()+    recSizeOf r = sum [ sizeOf $ cpd_Type r, sizeOf $ cpd_ r, sizeOf $ cpd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cpd_Type r), viewField "_" (viewNumber $ cpd_ r), viewField "" (viewNStr $ cpd r) ]+    recType = fromEnum . cpd_Type++instance Rec CPI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CPI a01 a02 a03+    recPut bh r = do put bh $ cpi_Type r; put bh $ cpi_ r; put bh $ cpi_Data r; return ()+    recSizeOf r = sum [ sizeOf $ cpi_Type r, sizeOf $ cpi_ r, sizeOf $ cpi_Data r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ cpi_Type r), viewField "_" (viewNumber $ cpi_ r), viewField "Data" (viewData $ cpi_Data r) ]+    recType = fromEnum . cpi_Type++instance Rec CPI_Data where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CPI_Data a01 a02 a03+    recPut bh r = do put bh $ cpi_GCGID r; put bh $ cpi_Section r; put bh $ cpi_CodePoint r; return ()+    recSizeOf r = sum [ sizeOf $ cpi_GCGID r, sizeOf $ cpi_Section r, sizeOf $ cpi_CodePoint r ]+    recView r = viewRecord (typeOf r) [ viewField "GCGID" (viewString $ cpi_GCGID r), viewField "Section" (viewNumber $ cpi_Section r), viewField "CodePoint" (viewNumber $ cpi_CodePoint r) ]+    recType r = 0++instance RecData CPI CPI_Data where+    readData r = cpi_Data r+    writeData r cs = r { cpi_Data = cs }++instance Rec CTC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ CTC a01 a02 a03+    recPut bh r = do put bh $ ctc_Type r; put bh $ ctc_ r; put bh $ ctc r; return ()+    recSizeOf r = sum [ sizeOf $ ctc_Type r, sizeOf $ ctc_ r, sizeOf $ ctc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ctc_Type r), viewField "_" (viewNumber $ ctc_ r), viewField "" (viewNStr $ ctc r) ]+    recType = fromEnum . ctc_Type++instance Rec DXD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ DXD a01 a02 a03+    recPut bh r = do put bh $ dxd_Type r; put bh $ dxd_ r; put bh $ dxd r; return ()+    recSizeOf r = sum [ sizeOf $ dxd_Type r, sizeOf $ dxd_ r, sizeOf $ dxd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ dxd_Type r), viewField "_" (viewNumber $ dxd_ r), viewField "" (viewNStr $ dxd r) ]+    recType = fromEnum . dxd_Type++instance Rec EAG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EAG a01 a02 a03+    recPut bh r = do put bh $ eag_Type r; put bh $ eag_ r; put bh $ eag r; return ()+    recSizeOf r = sum [ sizeOf $ eag_Type r, sizeOf $ eag_ r, sizeOf $ eag r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eag_Type r), viewField "_" (viewNumber $ eag_ r), viewField "" (viewNStr $ eag r) ]+    recType = fromEnum . eag_Type++instance Rec EBC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EBC a01 a02 a03+    recPut bh r = do put bh $ ebc_Type r; put bh $ ebc_ r; put bh $ ebc r; return ()+    recSizeOf r = sum [ sizeOf $ ebc_Type r, sizeOf $ ebc_ r, sizeOf $ ebc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ebc_Type r), viewField "_" (viewNumber $ ebc_ r), viewField "" (viewNStr $ ebc r) ]+    recType = fromEnum . ebc_Type++instance Rec ECA where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ECA a01 a02 a03+    recPut bh r = do put bh $ eca_Type r; put bh $ eca_ r; put bh $ eca r; return ()+    recSizeOf r = sum [ sizeOf $ eca_Type r, sizeOf $ eca_ r, sizeOf $ eca r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eca_Type r), viewField "_" (viewNumber $ eca_ r), viewField "" (viewNStr $ eca r) ]+    recType = fromEnum . eca_Type++instance Rec ECF where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ECF a01 a02 a03+    recPut bh r = do put bh $ ecf_Type r; put bh $ ecf_ r; put bh $ ecf r; return ()+    recSizeOf r = sum [ sizeOf $ ecf_Type r, sizeOf $ ecf_ r, sizeOf $ ecf r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ecf_Type r), viewField "_" (viewNumber $ ecf_ r), viewField "" (viewNStr $ ecf r) ]+    recType = fromEnum . ecf_Type++instance Rec ECP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ECP a01 a02 a03+    recPut bh r = do put bh $ ecp_Type r; put bh $ ecp_ r; put bh $ ecp r; return ()+    recSizeOf r = sum [ sizeOf $ ecp_Type r, sizeOf $ ecp_ r, sizeOf $ ecp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ecp_Type r), viewField "_" (viewNumber $ ecp_ r), viewField "" (viewNStr $ ecp r) ]+    recType = fromEnum . ecp_Type++instance Rec EDG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EDG a01 a02 a03+    recPut bh r = do put bh $ edg_Type r; put bh $ edg_ r; put bh $ edg r; return ()+    recSizeOf r = sum [ sizeOf $ edg_Type r, sizeOf $ edg_ r, sizeOf $ edg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ edg_Type r), viewField "_" (viewNumber $ edg_ r), viewField "" (viewNStr $ edg r) ]+    recType = fromEnum . edg_Type++instance Rec EDI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EDI a01 a02 a03+    recPut bh r = do put bh $ edi_Type r; put bh $ edi_ r; put bh $ edi r; return ()+    recSizeOf r = sum [ sizeOf $ edi_Type r, sizeOf $ edi_ r, sizeOf $ edi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ edi_Type r), viewField "_" (viewNumber $ edi_ r), viewField "" (viewNStr $ edi r) ]+    recType = fromEnum . edi_Type++instance Rec EDM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EDM a01 a02 a03+    recPut bh r = do put bh $ edm_Type r; put bh $ edm_ r; put bh $ edm r; return ()+    recSizeOf r = sum [ sizeOf $ edm_Type r, sizeOf $ edm_ r, sizeOf $ edm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ edm_Type r), viewField "_" (viewNumber $ edm_ r), viewField "" (viewNStr $ edm r) ]+    recType = fromEnum . edm_Type++instance Rec EDT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EDT a01 a02 a03+    recPut bh r = do put bh $ edt_Type r; put bh $ edt_ r; put bh $ edt r; return ()+    recSizeOf r = sum [ sizeOf $ edt_Type r, sizeOf $ edt_ r, sizeOf $ edt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ edt_Type r), viewField "_" (viewNumber $ edt_ r), viewField "" (viewNStr $ edt r) ]+    recType = fromEnum . edt_Type++instance Rec EDX where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EDX a01 a02 a03+    recPut bh r = do put bh $ edx_Type r; put bh $ edx_ r; put bh $ edx r; return ()+    recSizeOf r = sum [ sizeOf $ edx_Type r, sizeOf $ edx_ r, sizeOf $ edx r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ edx_Type r), viewField "_" (viewNumber $ edx_ r), viewField "" (viewNStr $ edx r) ]+    recType = fromEnum . edx_Type++instance Rec EFG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EFG a01 a02 a03+    recPut bh r = do put bh $ efg_Type r; put bh $ efg_ r; put bh $ efg r; return ()+    recSizeOf r = sum [ sizeOf $ efg_Type r, sizeOf $ efg_ r, sizeOf $ efg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ efg_Type r), viewField "_" (viewNumber $ efg_ r), viewField "" (viewNStr $ efg r) ]+    recType = fromEnum . efg_Type++instance Rec EFM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EFM a01 a02 a03+    recPut bh r = do put bh $ efm_Type r; put bh $ efm_ r; put bh $ efm r; return ()+    recSizeOf r = sum [ sizeOf $ efm_Type r, sizeOf $ efm_ r, sizeOf $ efm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ efm_Type r), viewField "_" (viewNumber $ efm_ r), viewField "" (viewNStr $ efm r) ]+    recType = fromEnum . efm_Type++instance Rec EFN where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EFN a01 a02 a03+    recPut bh r = do put bh $ efn_Type r; put bh $ efn_ r; put bh $ efn r; return ()+    recSizeOf r = sum [ sizeOf $ efn_Type r, sizeOf $ efn_ r, sizeOf $ efn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ efn_Type r), viewField "_" (viewNumber $ efn_ r), viewField "" (viewNStr $ efn r) ]+    recType = fromEnum . efn_Type++instance Rec EGR where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EGR a01 a02 a03+    recPut bh r = do put bh $ egr_Type r; put bh $ egr_ r; put bh $ egr r; return ()+    recSizeOf r = sum [ sizeOf $ egr_Type r, sizeOf $ egr_ r, sizeOf $ egr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ egr_Type r), viewField "_" (viewNumber $ egr_ r), viewField "" (viewNStr $ egr r) ]+    recType = fromEnum . egr_Type++instance Rec EII where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EII a01 a02 a03+    recPut bh r = do put bh $ eii_Type r; put bh $ eii_ r; put bh $ eii_ImageObjectName r; return ()+    recSizeOf r = sum [ sizeOf $ eii_Type r, sizeOf $ eii_ r, sizeOf $ eii_ImageObjectName r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eii_Type r), viewField "_" (viewNumber $ eii_ r), viewField "ImageObjectName" (viewString $ eii_ImageObjectName r) ]+    recType = fromEnum . eii_Type++instance Rec EIM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EIM a01 a02 a03+    recPut bh r = do put bh $ eim_Type r; put bh $ eim_ r; put bh $ eim r; return ()+    recSizeOf r = sum [ sizeOf $ eim_Type r, sizeOf $ eim_ r, sizeOf $ eim r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eim_Type r), viewField "_" (viewNumber $ eim_ r), viewField "" (viewNStr $ eim r) ]+    recType = fromEnum . eim_Type++instance Rec EMM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EMM a01 a02 a03+    recPut bh r = do put bh $ emm_Type r; put bh $ emm_ r; put bh $ emm r; return ()+    recSizeOf r = sum [ sizeOf $ emm_Type r, sizeOf $ emm_ r, sizeOf $ emm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ emm_Type r), viewField "_" (viewNumber $ emm_ r), viewField "" (viewNStr $ emm r) ]+    recType = fromEnum . emm_Type++instance Rec EMO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EMO a01 a02 a03+    recPut bh r = do put bh $ emo_Type r; put bh $ emo_ r; put bh $ emo r; return ()+    recSizeOf r = sum [ sizeOf $ emo_Type r, sizeOf $ emo_ r, sizeOf $ emo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ emo_Type r), viewField "_" (viewNumber $ emo_ r), viewField "" (viewNStr $ emo r) ]+    recType = fromEnum . emo_Type++instance Rec ENG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ENG a01 a02 a03+    recPut bh r = do put bh $ eng_Type r; put bh $ eng_ r; put bh $ eng r; return ()+    recSizeOf r = sum [ sizeOf $ eng_Type r, sizeOf $ eng_ r, sizeOf $ eng r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eng_Type r), viewField "_" (viewNumber $ eng_ r), viewField "" (viewNStr $ eng r) ]+    recType = fromEnum . eng_Type++instance Rec EOC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EOC a01 a02 a03+    recPut bh r = do put bh $ eoc_Type r; put bh $ eoc_ r; put bh $ eoc r; return ()+    recSizeOf r = sum [ sizeOf $ eoc_Type r, sizeOf $ eoc_ r, sizeOf $ eoc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eoc_Type r), viewField "_" (viewNumber $ eoc_ r), viewField "" (viewNStr $ eoc r) ]+    recType = fromEnum . eoc_Type++instance Rec EOG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EOG a01 a02 a03+    recPut bh r = do put bh $ eog_Type r; put bh $ eog_ r; put bh $ eog r; return ()+    recSizeOf r = sum [ sizeOf $ eog_Type r, sizeOf $ eog_ r, sizeOf $ eog r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eog_Type r), viewField "_" (viewNumber $ eog_ r), viewField "" (viewNStr $ eog r) ]+    recType = fromEnum . eog_Type++instance Rec EPG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EPG a01 a02 a03+    recPut bh r = do put bh $ epg_Type r; put bh $ epg_ r; put bh $ epg r; return ()+    recSizeOf r = sum [ sizeOf $ epg_Type r, sizeOf $ epg_ r, sizeOf $ epg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ epg_Type r), viewField "_" (viewNumber $ epg_ r), viewField "" (viewNStr $ epg r) ]+    recType = fromEnum . epg_Type++instance Rec EPM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EPM a01 a02 a03+    recPut bh r = do put bh $ epm_Type r; put bh $ epm_ r; put bh $ epm r; return ()+    recSizeOf r = sum [ sizeOf $ epm_Type r, sizeOf $ epm_ r, sizeOf $ epm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ epm_Type r), viewField "_" (viewNumber $ epm_ r), viewField "" (viewNStr $ epm r) ]+    recType = fromEnum . epm_Type++instance Rec EPS where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EPS a01 a02 a03+    recPut bh r = do put bh $ eps_Type r; put bh $ eps_ r; put bh $ eps r; return ()+    recSizeOf r = sum [ sizeOf $ eps_Type r, sizeOf $ eps_ r, sizeOf $ eps r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ eps_Type r), viewField "_" (viewNumber $ eps_ r), viewField "" (viewNStr $ eps r) ]+    recType = fromEnum . eps_Type++instance Rec EPT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ EPT a01 a02 a03+    recPut bh r = do put bh $ ept_Type r; put bh $ ept_ r; put bh $ ept r; return ()+    recSizeOf r = sum [ sizeOf $ ept_Type r, sizeOf $ ept_ r, sizeOf $ ept r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ept_Type r), viewField "_" (viewNumber $ ept_ r), viewField "" (viewNStr $ ept r) ]+    recType = fromEnum . ept_Type++instance Rec ER where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ER a01 a02 a03+    recPut bh r = do put bh $ er_Type r; put bh $ er_ r; put bh $ er r; return ()+    recSizeOf r = sum [ sizeOf $ er_Type r, sizeOf $ er_ r, sizeOf $ er r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ er_Type r), viewField "_" (viewNumber $ er_ r), viewField "" (viewNStr $ er r) ]+    recType = fromEnum . er_Type++instance Rec ERG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ERG a01 a02 a03+    recPut bh r = do put bh $ erg_Type r; put bh $ erg_ r; put bh $ erg r; return ()+    recSizeOf r = sum [ sizeOf $ erg_Type r, sizeOf $ erg_ r, sizeOf $ erg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ erg_Type r), viewField "_" (viewNumber $ erg_ r), viewField "" (viewNStr $ erg r) ]+    recType = fromEnum . erg_Type++instance Rec ESG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ ESG a01 a02 a03+    recPut bh r = do put bh $ esg_Type r; put bh $ esg_ r; put bh $ esg r; return ()+    recSizeOf r = sum [ sizeOf $ esg_Type r, sizeOf $ esg_ r, sizeOf $ esg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ esg_Type r), viewField "_" (viewNumber $ esg_ r), viewField "" (viewNStr $ esg r) ]+    recType = fromEnum . esg_Type++instance Rec FGD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FGD a01 a02 a03+    recPut bh r = do put bh $ fgd_Type r; put bh $ fgd_ r; put bh $ fgd r; return ()+    recSizeOf r = sum [ sizeOf $ fgd_Type r, sizeOf $ fgd_ r, sizeOf $ fgd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fgd_Type r), viewField "_" (viewNumber $ fgd_ r), viewField "" (viewNStr $ fgd r) ]+    recType = fromEnum . fgd_Type++instance Rec FNC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; a11 <- get bh; a12 <- get bh; a13 <- get bh; a14 <- get bh; a15 <- get bh; a16 <- get bh; a17 <- get bh; a18 <- get bh; a19 <- get bh; return $ FNC a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19+    recPut bh r = do put bh $ fnc_Type r; put bh $ fnc_ r; put bh $ fnc_Constant r; put bh $ fnc_PatternTechnologyIdentifier r; put bh $ fnc_FNCReserved1 r; put bh $ fnc_UseFlags r; put bh $ fnc_UnitXBase r; put bh $ fnc_UnitYBase r; put bh $ fnc_UnitXValue r; put bh $ fnc_UnitYValue r; put bh $ fnc_MaxWidth r; put bh $ fnc_MaxHeight r; put bh $ fnc_FNORepeatingGroupLength r; put bh $ fnc_FNIRepeatingGroupLength r; put bh $ fnc_PatternDataAlignmentCode r; put bh $ fnc_PatternDataCount1 r; put bh $ fnc_FNPRepeatingGroupLength r; put bh $ fnc_FNMRepeatingGroupLength r; put bh $ fnc r; return ()+    recSizeOf r = sum [ sizeOf $ fnc_Type r, sizeOf $ fnc_ r, sizeOf $ fnc_Constant r, sizeOf $ fnc_PatternTechnologyIdentifier r, sizeOf $ fnc_FNCReserved1 r, sizeOf $ fnc_UseFlags r, sizeOf $ fnc_UnitXBase r, sizeOf $ fnc_UnitYBase r, sizeOf $ fnc_UnitXValue r, sizeOf $ fnc_UnitYValue r, sizeOf $ fnc_MaxWidth r, sizeOf $ fnc_MaxHeight r, sizeOf $ fnc_FNORepeatingGroupLength r, sizeOf $ fnc_FNIRepeatingGroupLength r, sizeOf $ fnc_PatternDataAlignmentCode r, sizeOf $ fnc_PatternDataCount1 r, sizeOf $ fnc_FNPRepeatingGroupLength r, sizeOf $ fnc_FNMRepeatingGroupLength r, sizeOf $ fnc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fnc_Type r), viewField "_" (viewNumber $ fnc_ r), viewField "Constant" (viewString $ fnc_Constant r), viewField "PatternTechnologyIdentifier" (viewNumber $ fnc_PatternTechnologyIdentifier r), viewField "FNCReserved1" (viewString $ fnc_FNCReserved1 r), viewField "UseFlags" (viewNumber $ fnc_UseFlags r), viewField "UnitXBase" (viewNumber $ fnc_UnitXBase r), viewField "UnitYBase" (viewNumber $ fnc_UnitYBase r), viewField "UnitXValue" (viewNumber $ fnc_UnitXValue r), viewField "UnitYValue" (viewNumber $ fnc_UnitYValue r), viewField "MaxWidth" (viewNumber $ fnc_MaxWidth r), viewField "MaxHeight" (viewNumber $ fnc_MaxHeight r), viewField "FNORepeatingGroupLength" (viewNumber $ fnc_FNORepeatingGroupLength r), viewField "FNIRepeatingGroupLength" (viewNumber $ fnc_FNIRepeatingGroupLength r), viewField "PatternDataAlignmentCode" (viewNumber $ fnc_PatternDataAlignmentCode r), viewField "PatternDataCount1" (viewString $ fnc_PatternDataCount1 r), viewField "FNPRepeatingGroupLength" (viewNumber $ fnc_FNPRepeatingGroupLength r), viewField "FNMRepeatingGroupLength" (viewNumber $ fnc_FNMRepeatingGroupLength r), viewField "" (viewNStr $ fnc r) ]+    recType = fromEnum . fnc_Type++instance Rec FND where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FND a01 a02 a03+    recPut bh r = do put bh $ fnd_Type r; put bh $ fnd_ r; put bh $ fnd r; return ()+    recSizeOf r = sum [ sizeOf $ fnd_Type r, sizeOf $ fnd_ r, sizeOf $ fnd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fnd_Type r), viewField "_" (viewNumber $ fnd_ r), viewField "" (viewNStr $ fnd r) ]+    recType = fromEnum . fnd_Type++instance Rec FNG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNG a01 a02 a03+    recPut bh r = do put bh $ fng_Type r; put bh $ fng_ r; put bh $ fng r; return ()+    recSizeOf r = sum [ sizeOf $ fng_Type r, sizeOf $ fng_ r, sizeOf $ fng r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fng_Type r), viewField "_" (viewNumber $ fng_ r), viewField "" (viewNStr $ fng r) ]+    recType = fromEnum . fng_Type++instance Rec FNI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNI a01 a02 a03+    recPut bh r = do put bh $ fni_Type r; put bh $ fni_ r; put bh $ fni_Data r; return ()+    recSizeOf r = sum [ sizeOf $ fni_Type r, sizeOf $ fni_ r, sizeOf $ fni_Data r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fni_Type r), viewField "_" (viewNumber $ fni_ r), viewField "Data" (viewData $ fni_Data r) ]+    recType = fromEnum . fni_Type++instance Rec FNI_Data where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; a11 <- get bh; return $ FNI_Data a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11+    recPut bh r = do put bh $ fni_GCGID r; put bh $ fni_CharacterIncrement r; put bh $ fni_AscendHeight r; put bh $ fni_DescendDepth r; put bh $ fni_Reserved1 r; put bh $ fni_FNMCount r; put bh $ fni_ASpace r; put bh $ fni_BSpace r; put bh $ fni_CSpace r; put bh $ fni_Reserved2 r; put bh $ fni_BaseOffset r; return ()+    recSizeOf r = sum [ sizeOf $ fni_GCGID r, sizeOf $ fni_CharacterIncrement r, sizeOf $ fni_AscendHeight r, sizeOf $ fni_DescendDepth r, sizeOf $ fni_Reserved1 r, sizeOf $ fni_FNMCount r, sizeOf $ fni_ASpace r, sizeOf $ fni_BSpace r, sizeOf $ fni_CSpace r, sizeOf $ fni_Reserved2 r, sizeOf $ fni_BaseOffset r ]+    recView r = viewRecord (typeOf r) [ viewField "GCGID" (viewString $ fni_GCGID r), viewField "CharacterIncrement" (viewNumber $ fni_CharacterIncrement r), viewField "AscendHeight" (viewNumber $ fni_AscendHeight r), viewField "DescendDepth" (viewNumber $ fni_DescendDepth r), viewField "Reserved1" (viewNumber $ fni_Reserved1 r), viewField "FNMCount" (viewNumber $ fni_FNMCount r), viewField "ASpace" (viewNumber $ fni_ASpace r), viewField "BSpace" (viewNumber $ fni_BSpace r), viewField "CSpace" (viewNumber $ fni_CSpace r), viewField "Reserved2" (viewNumber $ fni_Reserved2 r), viewField "BaseOffset" (viewNumber $ fni_BaseOffset r) ]+    recType r = 0++instance RecData FNI FNI_Data where+    readData r = fni_Data r+    writeData r cs = r { fni_Data = cs }++instance Rec FNM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNM a01 a02 a03+    recPut bh r = do put bh $ fnm_Type r; put bh $ fnm_ r; put bh $ fnm_Data r; return ()+    recSizeOf r = sum [ sizeOf $ fnm_Type r, sizeOf $ fnm_ r, sizeOf $ fnm_Data r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fnm_Type r), viewField "_" (viewNumber $ fnm_ r), viewField "Data" (viewData $ fnm_Data r) ]+    recType = fromEnum . fnm_Type++instance Rec FNM_Data where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNM_Data a01 a02 a03+    recPut bh r = do put bh $ fnm_Width r; put bh $ fnm_Height r; put bh $ fnm_Offset r; return ()+    recSizeOf r = sum [ sizeOf $ fnm_Width r, sizeOf $ fnm_Height r, sizeOf $ fnm_Offset r ]+    recView r = viewRecord (typeOf r) [ viewField "Width" (viewNumber $ fnm_Width r), viewField "Height" (viewNumber $ fnm_Height r), viewField "Offset" (viewNumber $ fnm_Offset r) ]+    recType r = 0++instance RecData FNM FNM_Data where+    readData r = fnm_Data r+    writeData r cs = r { fnm_Data = cs }++instance Rec FNN where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNN a01 a02 a03+    recPut bh r = do put bh $ fnn_Type r; put bh $ fnn_ r; put bh $ fnn r; return ()+    recSizeOf r = sum [ sizeOf $ fnn_Type r, sizeOf $ fnn_ r, sizeOf $ fnn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fnn_Type r), viewField "_" (viewNumber $ fnn_ r), viewField "" (viewNStr $ fnn r) ]+    recType = fromEnum . fnn_Type++instance Rec FNO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; return $ FNO a01 a02 a03 a04 a05 a06 a07 a08+    recPut bh r = do put bh $ fno_Type r; put bh $ fno_ r; put bh $ fno_Reserved r; put bh $ fno_CharacterRotation r; put bh $ fno_MaxBaseOffset r; put bh $ fno_MaxCharacterIncrement r; put bh $ fno_SpaceCharacterIncrement r; put bh $ fno r; return ()+    recSizeOf r = sum [ sizeOf $ fno_Type r, sizeOf $ fno_ r, sizeOf $ fno_Reserved r, sizeOf $ fno_CharacterRotation r, sizeOf $ fno_MaxBaseOffset r, sizeOf $ fno_MaxCharacterIncrement r, sizeOf $ fno_SpaceCharacterIncrement r, sizeOf $ fno r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fno_Type r), viewField "_" (viewNumber $ fno_ r), viewField "Reserved" (viewNumber $ fno_Reserved r), viewField "CharacterRotation" (viewNumber $ fno_CharacterRotation r), viewField "MaxBaseOffset" (viewNumber $ fno_MaxBaseOffset r), viewField "MaxCharacterIncrement" (viewNumber $ fno_MaxCharacterIncrement r), viewField "SpaceCharacterIncrement" (viewNumber $ fno_SpaceCharacterIncrement r), viewField "" (viewNStr $ fno r) ]+    recType = fromEnum . fno_Type++instance Rec FNP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ FNP a01 a02 a03+    recPut bh r = do put bh $ fnp_Type r; put bh $ fnp_ r; put bh $ fnp r; return ()+    recSizeOf r = sum [ sizeOf $ fnp_Type r, sizeOf $ fnp_ r, sizeOf $ fnp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ fnp_Type r), viewField "_" (viewNumber $ fnp_ r), viewField "" (viewNStr $ fnp r) ]+    recType = fromEnum . fnp_Type++instance Rec GAD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ GAD a01 a02 a03+    recPut bh r = do put bh $ gad_Type r; put bh $ gad_ r; put bh $ gad r; return ()+    recSizeOf r = sum [ sizeOf $ gad_Type r, sizeOf $ gad_ r, sizeOf $ gad r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ gad_Type r), viewField "_" (viewNumber $ gad_ r), viewField "" (viewNStr $ gad r) ]+    recType = fromEnum . gad_Type++instance Rec GDD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ GDD a01 a02 a03+    recPut bh r = do put bh $ gdd_Type r; put bh $ gdd_ r; put bh $ gdd r; return ()+    recSizeOf r = sum [ sizeOf $ gdd_Type r, sizeOf $ gdd_ r, sizeOf $ gdd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ gdd_Type r), viewField "_" (viewNumber $ gdd_ r), viewField "" (viewNStr $ gdd r) ]+    recType = fromEnum . gdd_Type++instance Rec ICP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; return $ ICP a01 a02 a03 a04 a05 a06 a07 a08+    recPut bh r = do put bh $ icp_Type r; put bh $ icp_ r; put bh $ icp_XCellOffset r; put bh $ icp_YCellOffset r; put bh $ icp_XCellSize r; put bh $ icp_YCellSize r; put bh $ icp_XFillSize r; put bh $ icp_YFillSize r; return ()+    recSizeOf r = sum [ sizeOf $ icp_Type r, sizeOf $ icp_ r, sizeOf $ icp_XCellOffset r, sizeOf $ icp_YCellOffset r, sizeOf $ icp_XCellSize r, sizeOf $ icp_YCellSize r, sizeOf $ icp_XFillSize r, sizeOf $ icp_YFillSize r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ icp_Type r), viewField "_" (viewNumber $ icp_ r), viewField "XCellOffset" (viewNumber $ icp_XCellOffset r), viewField "YCellOffset" (viewNumber $ icp_YCellOffset r), viewField "XCellSize" (viewNumber $ icp_XCellSize r), viewField "YCellSize" (viewNumber $ icp_YCellSize r), viewField "XFillSize" (viewNumber $ icp_XFillSize r), viewField "YFillSize" (viewNumber $ icp_YFillSize r) ]+    recType = fromEnum . icp_Type++instance Rec IDD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IDD a01 a02 a03+    recPut bh r = do put bh $ idd_Type r; put bh $ idd_ r; put bh $ idd r; return ()+    recSizeOf r = sum [ sizeOf $ idd_Type r, sizeOf $ idd_ r, sizeOf $ idd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ idd_Type r), viewField "_" (viewNumber $ idd_ r), viewField "" (viewNStr $ idd r) ]+    recType = fromEnum . idd_Type++instance Rec IEL where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IEL a01 a02 a03+    recPut bh r = do put bh $ iel_Type r; put bh $ iel_ r; put bh $ iel r; return ()+    recSizeOf r = sum [ sizeOf $ iel_Type r, sizeOf $ iel_ r, sizeOf $ iel r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ iel_Type r), viewField "_" (viewNumber $ iel_ r), viewField "" (viewNStr $ iel r) ]+    recType = fromEnum . iel_Type++instance Rec IID where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; a11 <- get bh; a12 <- get bh; a13 <- get bh; a14 <- get bh; return $ IID a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11 a12 a13 a14+    recPut bh r = do put bh $ iid_Type r; put bh $ iid_ r; put bh $ iid_ConstantData1 r; put bh $ iid_XBase r; put bh $ iid_YBase r; put bh $ iid_XUnits r; put bh $ iid_YUnits r; put bh $ iid_XSize r; put bh $ iid_YSize r; put bh $ iid_ConstantData2 r; put bh $ iid_XCellSizeDefault r; put bh $ iid_YCellSizeDefault r; put bh $ iid_ConstantData3 r; put bh $ iid_Color r; return ()+    recSizeOf r = sum [ sizeOf $ iid_Type r, sizeOf $ iid_ r, sizeOf $ iid_ConstantData1 r, sizeOf $ iid_XBase r, sizeOf $ iid_YBase r, sizeOf $ iid_XUnits r, sizeOf $ iid_YUnits r, sizeOf $ iid_XSize r, sizeOf $ iid_YSize r, sizeOf $ iid_ConstantData2 r, sizeOf $ iid_XCellSizeDefault r, sizeOf $ iid_YCellSizeDefault r, sizeOf $ iid_ConstantData3 r, sizeOf $ iid_Color r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ iid_Type r), viewField "_" (viewNumber $ iid_ r), viewField "ConstantData1" (viewString $ iid_ConstantData1 r), viewField "XBase" (viewNumber $ iid_XBase r), viewField "YBase" (viewNumber $ iid_YBase r), viewField "XUnits" (viewNumber $ iid_XUnits r), viewField "YUnits" (viewNumber $ iid_YUnits r), viewField "XSize" (viewNumber $ iid_XSize r), viewField "YSize" (viewNumber $ iid_YSize r), viewField "ConstantData2" (viewString $ iid_ConstantData2 r), viewField "XCellSizeDefault" (viewNumber $ iid_XCellSizeDefault r), viewField "YCellSizeDefault" (viewNumber $ iid_YCellSizeDefault r), viewField "ConstantData3" (viewString $ iid_ConstantData3 r), viewField "Color" (viewNumber $ iid_Color r) ]+    recType = fromEnum . iid_Type++instance Rec IMM where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IMM a01 a02 a03+    recPut bh r = do put bh $ imm_Type r; put bh $ imm_ r; put bh $ imm r; return ()+    recSizeOf r = sum [ sizeOf $ imm_Type r, sizeOf $ imm_ r, sizeOf $ imm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ imm_Type r), viewField "_" (viewNumber $ imm_ r), viewField "" (viewNStr $ imm r) ]+    recType = fromEnum . imm_Type++instance Rec IOB where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IOB a01 a02 a03+    recPut bh r = do put bh $ iob_Type r; put bh $ iob_ r; put bh $ iob r; return ()+    recSizeOf r = sum [ sizeOf $ iob_Type r, sizeOf $ iob_ r, sizeOf $ iob r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ iob_Type r), viewField "_" (viewNumber $ iob_ r), viewField "" (viewNStr $ iob r) ]+    recType = fromEnum . iob_Type++instance Rec IOC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; a11 <- get bh; a12 <- get bh; return $ IOC a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11 a12+    recPut bh r = do put bh $ ioc_Type r; put bh $ ioc_ r; put bh $ ioc_Reserved1 r; put bh $ ioc_XOffset r; put bh $ ioc_Reserved2 r; put bh $ ioc_YOffset r; put bh $ ioc_XOrientation r; put bh $ ioc_YOrientation r; put bh $ ioc_ConstantData1 r; put bh $ ioc_XMap r; put bh $ ioc_YMap r; put bh $ ioc_ConstantData2 r; return ()+    recSizeOf r = sum [ sizeOf $ ioc_Type r, sizeOf $ ioc_ r, sizeOf $ ioc_Reserved1 r, sizeOf $ ioc_XOffset r, sizeOf $ ioc_Reserved2 r, sizeOf $ ioc_YOffset r, sizeOf $ ioc_XOrientation r, sizeOf $ ioc_YOrientation r, sizeOf $ ioc_ConstantData1 r, sizeOf $ ioc_XMap r, sizeOf $ ioc_YMap r, sizeOf $ ioc_ConstantData2 r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ioc_Type r), viewField "_" (viewNumber $ ioc_ r), viewField "Reserved1" (viewString $ ioc_Reserved1 r), viewField "XOffset" (viewNumber $ ioc_XOffset r), viewField "Reserved2" (viewString $ ioc_Reserved2 r), viewField "YOffset" (viewNumber $ ioc_YOffset r), viewField "XOrientation" (viewNumber $ ioc_XOrientation r), viewField "YOrientation" (viewNumber $ ioc_YOrientation r), viewField "ConstantData1" (viewString $ ioc_ConstantData1 r), viewField "XMap" (viewNumber $ ioc_XMap r), viewField "YMap" (viewNumber $ ioc_YMap r), viewField "ConstantData2" (viewString $ ioc_ConstantData2 r) ]+    recType = fromEnum . ioc_Type++instance Rec IPD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IPD a01 a02 a03+    recPut bh r = do put bh $ ipd_Type r; put bh $ ipd_ r; put bh $ ipd r; return ()+    recSizeOf r = sum [ sizeOf $ ipd_Type r, sizeOf $ ipd_ r, sizeOf $ ipd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ipd_Type r), viewField "_" (viewNumber $ ipd_ r), viewField "" (viewNStr $ ipd r) ]+    recType = fromEnum . ipd_Type++instance Rec IPG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IPG a01 a02 a03+    recPut bh r = do put bh $ ipg_Type r; put bh $ ipg_ r; put bh $ ipg r; return ()+    recSizeOf r = sum [ sizeOf $ ipg_Type r, sizeOf $ ipg_ r, sizeOf $ ipg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ipg_Type r), viewField "_" (viewNumber $ ipg_ r), viewField "" (viewNStr $ ipg r) ]+    recType = fromEnum . ipg_Type++instance Rec IPO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IPO a01 a02 a03+    recPut bh r = do put bh $ ipo_Type r; put bh $ ipo_ r; put bh $ ipo r; return ()+    recSizeOf r = sum [ sizeOf $ ipo_Type r, sizeOf $ ipo_ r, sizeOf $ ipo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ipo_Type r), viewField "_" (viewNumber $ ipo_ r), viewField "" (viewNStr $ ipo r) ]+    recType = fromEnum . ipo_Type++instance Rec IPS where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IPS a01 a02 a03+    recPut bh r = do put bh $ ips_Type r; put bh $ ips_ r; put bh $ ips r; return ()+    recSizeOf r = sum [ sizeOf $ ips_Type r, sizeOf $ ips_ r, sizeOf $ ips r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ips_Type r), viewField "_" (viewNumber $ ips_ r), viewField "" (viewNStr $ ips r) ]+    recType = fromEnum . ips_Type++instance Rec IRD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ IRD a01 a02 a03+    recPut bh r = do put bh $ ird_Type r; put bh $ ird_ r; put bh $ ird_ImageData r; return ()+    recSizeOf r = sum [ sizeOf $ ird_Type r, sizeOf $ ird_ r, sizeOf $ ird_ImageData r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ird_Type r), viewField "_" (viewNumber $ ird_ r), viewField "ImageData" (viewNStr $ ird_ImageData r) ]+    recType = fromEnum . ird_Type++instance Rec LLE where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ LLE a01 a02 a03+    recPut bh r = do put bh $ lle_Type r; put bh $ lle_ r; put bh $ lle r; return ()+    recSizeOf r = sum [ sizeOf $ lle_Type r, sizeOf $ lle_ r, sizeOf $ lle r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ lle_Type r), viewField "_" (viewNumber $ lle_ r), viewField "" (viewNStr $ lle r) ]+    recType = fromEnum . lle_Type++instance Rec LNC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ LNC a01 a02 a03+    recPut bh r = do put bh $ lnc_Type r; put bh $ lnc_ r; put bh $ lnc r; return ()+    recSizeOf r = sum [ sizeOf $ lnc_Type r, sizeOf $ lnc_ r, sizeOf $ lnc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ lnc_Type r), viewField "_" (viewNumber $ lnc_ r), viewField "" (viewNStr $ lnc r) ]+    recType = fromEnum . lnc_Type++instance Rec LND where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ LND a01 a02 a03+    recPut bh r = do put bh $ lnd_Type r; put bh $ lnd_ r; put bh $ lnd r; return ()+    recSizeOf r = sum [ sizeOf $ lnd_Type r, sizeOf $ lnd_ r, sizeOf $ lnd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ lnd_Type r), viewField "_" (viewNumber $ lnd_ r), viewField "" (viewNStr $ lnd r) ]+    recType = fromEnum . lnd_Type++instance Rec MBC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MBC a01 a02 a03+    recPut bh r = do put bh $ mbc_Type r; put bh $ mbc_ r; put bh $ mbc r; return ()+    recSizeOf r = sum [ sizeOf $ mbc_Type r, sizeOf $ mbc_ r, sizeOf $ mbc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mbc_Type r), viewField "_" (viewNumber $ mbc_ r), viewField "" (viewNStr $ mbc r) ]+    recType = fromEnum . mbc_Type++instance Rec MCA where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MCA a01 a02 a03+    recPut bh r = do put bh $ mca_Type r; put bh $ mca_ r; put bh $ mca r; return ()+    recSizeOf r = sum [ sizeOf $ mca_Type r, sizeOf $ mca_ r, sizeOf $ mca r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mca_Type r), viewField "_" (viewNumber $ mca_ r), viewField "" (viewNStr $ mca r) ]+    recType = fromEnum . mca_Type++instance Rec MCC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MCC a01 a02 a03+    recPut bh r = do put bh $ mcc_Type r; put bh $ mcc_ r; put bh $ mcc r; return ()+    recSizeOf r = sum [ sizeOf $ mcc_Type r, sizeOf $ mcc_ r, sizeOf $ mcc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mcc_Type r), viewField "_" (viewNumber $ mcc_ r), viewField "" (viewNStr $ mcc r) ]+    recType = fromEnum . mcc_Type++instance Rec MCD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MCD a01 a02 a03+    recPut bh r = do put bh $ mcd_Type r; put bh $ mcd_ r; put bh $ mcd r; return ()+    recSizeOf r = sum [ sizeOf $ mcd_Type r, sizeOf $ mcd_ r, sizeOf $ mcd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mcd_Type r), viewField "_" (viewNumber $ mcd_ r), viewField "" (viewNStr $ mcd r) ]+    recType = fromEnum . mcd_Type+
+ src/OpenAFP/Prelude/InstancePTX.hs view
@@ -0,0 +1,211 @@+{-# OPTIONS -fglasgow-exts #-}++module OpenAFP.Prelude.InstancePTX () where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals++recOf :: (ChunkBuf c n b, Binary (Record r)) => c -> IO r+recOf c = return . fromRecord =<< chunkToRecord c++apply :: (MonadIO m) => (t -> IO a) -> t -> (a -> m b) -> m b+apply ctr c f = f =<< (liftIO $ ctr c)++instance Rec PTX_AMB where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_AMB a01 a02+    recPut bh r = do put bh $ ptx_amb_Type r; put bh $ ptx_amb r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_amb_Type r, sizeOf $ ptx_amb r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_amb_Type r), viewField "" (viewNumber $ ptx_amb r) ]+    recType = fromEnum . ptx_amb_Type++instance Rec PTX_AMI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_AMI a01 a02+    recPut bh r = do put bh $ ptx_ami_Type r; put bh $ ptx_ami r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_ami_Type r, sizeOf $ ptx_ami r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_ami_Type r), viewField "" (viewNumber $ ptx_ami r) ]+    recType = fromEnum . ptx_ami_Type++instance Rec PTX_BLN where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_BLN a01 a02+    recPut bh r = do put bh $ ptx_bln_Type r; put bh $ ptx_bln r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_bln_Type r, sizeOf $ ptx_bln r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_bln_Type r), viewField "" (viewNStr $ ptx_bln r) ]+    recType = fromEnum . ptx_bln_Type++instance Rec PTX_BSU where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_BSU a01 a02+    recPut bh r = do put bh $ ptx_bsu_Type r; put bh $ ptx_bsu r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_bsu_Type r, sizeOf $ ptx_bsu r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_bsu_Type r), viewField "" (viewNStr $ ptx_bsu r) ]+    recType = fromEnum . ptx_bsu_Type++instance Rec PTX_DBR where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_DBR a01 a02+    recPut bh r = do put bh $ ptx_dbr_Type r; put bh $ ptx_dbr r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_dbr_Type r, sizeOf $ ptx_dbr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_dbr_Type r), viewField "" (viewNStr $ ptx_dbr r) ]+    recType = fromEnum . ptx_dbr_Type++instance Rec PTX_DIR where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_DIR a01 a02+    recPut bh r = do put bh $ ptx_dir_Type r; put bh $ ptx_dir r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_dir_Type r, sizeOf $ ptx_dir r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_dir_Type r), viewField "" (viewNStr $ ptx_dir r) ]+    recType = fromEnum . ptx_dir_Type++instance Rec PTX_ESU where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_ESU a01 a02+    recPut bh r = do put bh $ ptx_esu_Type r; put bh $ ptx_esu r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_esu_Type r, sizeOf $ ptx_esu r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_esu_Type r), viewField "" (viewNStr $ ptx_esu r) ]+    recType = fromEnum . ptx_esu_Type++instance Rec PTX_NOP where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_NOP a01 a02+    recPut bh r = do put bh $ ptx_nop_Type r; put bh $ ptx_nop r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_nop_Type r, sizeOf $ ptx_nop r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_nop_Type r), viewField "" (viewNStr $ ptx_nop r) ]+    recType = fromEnum . ptx_nop_Type++instance Rec PTX_RMB where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_RMB a01 a02+    recPut bh r = do put bh $ ptx_rmb_Type r; put bh $ ptx_rmb r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_rmb_Type r, sizeOf $ ptx_rmb r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_rmb_Type r), viewField "" (viewNumber $ ptx_rmb r) ]+    recType = fromEnum . ptx_rmb_Type++instance Rec PTX_RMI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_RMI a01 a02+    recPut bh r = do put bh $ ptx_rmi_Type r; put bh $ ptx_rmi r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_rmi_Type r, sizeOf $ ptx_rmi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_rmi_Type r), viewField "" (viewNumber $ ptx_rmi r) ]+    recType = fromEnum . ptx_rmi_Type++instance Rec PTX_RPS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_RPS a01 a02+    recPut bh r = do put bh $ ptx_rps_Type r; put bh $ ptx_rps r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_rps_Type r, sizeOf $ ptx_rps r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_rps_Type r), viewField "" (viewNStr $ ptx_rps r) ]+    recType = fromEnum . ptx_rps_Type++instance Rec PTX_SBI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_SBI a01 a02+    recPut bh r = do put bh $ ptx_sbi_Type r; put bh $ ptx_sbi r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_sbi_Type r, sizeOf $ ptx_sbi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_sbi_Type r), viewField "" (viewNumber $ ptx_sbi r) ]+    recType = fromEnum . ptx_sbi_Type++instance Rec PTX_SCFL where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_SCFL a01 a02+    recPut bh r = do put bh $ ptx_scfl_Type r; put bh $ ptx_scfl r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_scfl_Type r, sizeOf $ ptx_scfl r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_scfl_Type r), viewField "" (viewNumber $ ptx_scfl r) ]+    recType = fromEnum . ptx_scfl_Type++instance Rec PTX_SIA where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_SIA a01 a02+    recPut bh r = do put bh $ ptx_sia_Type r; put bh $ ptx_sia r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_sia_Type r, sizeOf $ ptx_sia r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_sia_Type r), viewField "" (viewNumber $ ptx_sia r) ]+    recType = fromEnum . ptx_sia_Type++instance Rec PTX_SIM where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_SIM a01 a02+    recPut bh r = do put bh $ ptx_sim_Type r; put bh $ ptx_sim r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_sim_Type r, sizeOf $ ptx_sim r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_sim_Type r), viewField "" (viewNumber $ ptx_sim r) ]+    recType = fromEnum . ptx_sim_Type++instance Rec PTX_STC where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_STC a01 a02+    recPut bh r = do put bh $ ptx_stc_Type r; put bh $ ptx_stc r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_stc_Type r, sizeOf $ ptx_stc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_stc_Type r), viewField "" (viewNStr $ ptx_stc r) ]+    recType = fromEnum . ptx_stc_Type++instance Rec PTX_STO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PTX_STO a01 a02 a03+    recPut bh r = do put bh $ ptx_sto_Type r; put bh $ ptx_sto_Orientation r; put bh $ ptx_sto_WrapDirection r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_sto_Type r, sizeOf $ ptx_sto_Orientation r, sizeOf $ ptx_sto_WrapDirection r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_sto_Type r), viewField "Orientation" (viewNumber $ ptx_sto_Orientation r), viewField "WrapDirection" (viewNumber $ ptx_sto_WrapDirection r) ]+    recType = fromEnum . ptx_sto_Type++instance Rec PTX_SVI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_SVI a01 a02+    recPut bh r = do put bh $ ptx_svi_Type r; put bh $ ptx_svi r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_svi_Type r, sizeOf $ ptx_svi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_svi_Type r), viewField "" (viewNumber $ ptx_svi r) ]+    recType = fromEnum . ptx_svi_Type++instance Rec PTX_TRN where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ PTX_TRN a01 a02+    recPut bh r = do put bh $ ptx_trn_Type r; put bh $ ptx_trn r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_trn_Type r, sizeOf $ ptx_trn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_trn_Type r), viewField "" (viewNStr $ ptx_trn r) ]+    recType = fromEnum . ptx_trn_Type++instance ChunkBuf PTX_ N1 Buffer1 where+    chunkCon = PTX_+    chunkDecon (PTX_ x) = x+    chunkTypeLookup = lookupPTX+    chunkApply = applyPTX++applyPTX :: forall m x. (MonadIO m)+    => N1 -> PTX_ -> (forall a. (Rec a) => (a -> m x)) -> m x+applyPTX x rec f = case x of+    0x74 -> apply recOf rec (f :: PTX_STC -> m x)+    0x75 -> apply recOf rec (f :: PTX_STC -> m x)+    0xC0 -> apply recOf rec (f :: PTX_SIM -> m x)+    0xC1 -> apply recOf rec (f :: PTX_SIM -> m x)+    0xC2 -> apply recOf rec (f :: PTX_SIA -> m x)+    0xC3 -> apply recOf rec (f :: PTX_SIA -> m x)+    0xC4 -> apply recOf rec (f :: PTX_SVI -> m x)+    0xC5 -> apply recOf rec (f :: PTX_SVI -> m x)+    0xC6 -> apply recOf rec (f :: PTX_AMI -> m x)+    0xC7 -> apply recOf rec (f :: PTX_AMI -> m x)+    0xC8 -> apply recOf rec (f :: PTX_RMI -> m x)+    0xC9 -> apply recOf rec (f :: PTX_RMI -> m x)+    0xD0 -> apply recOf rec (f :: PTX_SBI -> m x)+    0xD1 -> apply recOf rec (f :: PTX_SBI -> m x)+    0xD2 -> apply recOf rec (f :: PTX_AMB -> m x)+    0xD3 -> apply recOf rec (f :: PTX_AMB -> m x)+    0xD4 -> apply recOf rec (f :: PTX_RMB -> m x)+    0xD5 -> apply recOf rec (f :: PTX_RMB -> m x)+    0xD8 -> apply recOf rec (f :: PTX_BLN -> m x)+    0xD9 -> apply recOf rec (f :: PTX_BLN -> m x)+    0xDA -> apply recOf rec (f :: PTX_TRN -> m x)+    0xDB -> apply recOf rec (f :: PTX_TRN -> m x)+    0xE4 -> apply recOf rec (f :: PTX_DIR -> m x)+    0xE5 -> apply recOf rec (f :: PTX_DIR -> m x)+    0xE6 -> apply recOf rec (f :: PTX_DBR -> m x)+    0xE7 -> apply recOf rec (f :: PTX_DBR -> m x)+    0xEE -> apply recOf rec (f :: PTX_RPS -> m x)+    0xEF -> apply recOf rec (f :: PTX_RPS -> m x)+    0xF0 -> apply recOf rec (f :: PTX_SCFL -> m x)+    0xF1 -> apply recOf rec (f :: PTX_SCFL -> m x)+    0xF2 -> apply recOf rec (f :: PTX_BSU -> m x)+    0xF3 -> apply recOf rec (f :: PTX_BSU -> m x)+    0xF4 -> apply recOf rec (f :: PTX_ESU -> m x)+    0xF5 -> apply recOf rec (f :: PTX_ESU -> m x)+    0xF6 -> apply recOf rec (f :: PTX_STO -> m x)+    0xF7 -> apply recOf rec (f :: PTX_STO -> m x)+    0xF8 -> apply recOf rec (f :: PTX_NOP -> m x)+    0xF9 -> apply recOf rec (f :: PTX_NOP -> m x)+    _    -> apply recOf rec (f :: Unknown -> m x)++instance RecChunk PTX PTX_ N1 Buffer1 where+    readChunks r = ptx_Chunks r+    writeChunks r io = do+        cs <- io+        return $ r { ptx_Chunks = cs }++instance Rec PTX_ where+    recSizeOf c = 1 + (snd $ chunkToPStrLen c)++instance Rec PTX where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; return $ PTX a01 a02 a03 a04+    recPut bh r = do put bh $ ptx_Type r; put bh $ ptx_ r; put bh $ ptx_EscapeSequence r; put bh $ ptx_Chunks r; return ()+    recSizeOf r = sum [ sizeOf $ ptx_Type r, sizeOf $ ptx_ r, sizeOf $ ptx_EscapeSequence r, sizeOf $ ptx_Chunks r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptx_Type r), viewField "_" (viewNumber $ ptx_ r), viewField "EscapeSequence" (viewNumber $ ptx_EscapeSequence r), viewField "Chunks" (viewChunks $ ptx_Chunks r) ]+    recType = fromEnum . ptx_Type+
+ src/OpenAFP/Prelude/InstanceT.hs view
@@ -0,0 +1,478 @@+{-# OPTIONS -fglasgow-exts #-}++module OpenAFP.Prelude.InstanceT () where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals++recOf :: (ChunkBuf c n b, Binary (Record r)) => c -> IO r+recOf c = return . fromRecord =<< chunkToRecord c++apply :: (MonadIO m) => (t -> IO a) -> t -> (a -> m b) -> m b+apply ctr c f = f =<< (liftIO $ ctr c)++instance Rec T_AD where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_AD a01 a02+    recPut bh r = do put bh $ t_ad_Type r; put bh $ t_ad r; return ()+    recSizeOf r = sum [ sizeOf $ t_ad_Type r, sizeOf $ t_ad r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ad_Type r), viewField "" (viewNStr $ t_ad r) ]+    recType = fromEnum . t_ad_Type++instance Rec T_AQ where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_AQ a01 a02+    recPut bh r = do put bh $ t_aq_Type r; put bh $ t_aq r; return ()+    recSizeOf r = sum [ sizeOf $ t_aq_Type r, sizeOf $ t_aq r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_aq_Type r), viewField "" (viewNStr $ t_aq r) ]+    recType = fromEnum . t_aq_Type++instance Rec T_AV where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_AV a01 a02+    recPut bh r = do put bh $ t_av_Type r; put bh $ t_av r; return ()+    recSizeOf r = sum [ sizeOf $ t_av_Type r, sizeOf $ t_av r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_av_Type r), viewField "" (viewNStr $ t_av r) ]+    recType = fromEnum . t_av_Type++instance Rec T_C where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_C a01 a02+    recPut bh r = do put bh $ t_c_Type r; put bh $ t_c r; return ()+    recSizeOf r = sum [ sizeOf $ t_c_Type r, sizeOf $ t_c r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_c_Type r), viewField "" (viewNStr $ t_c r) ]+    recType = fromEnum . t_c_Type++instance Rec T_CF where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_CF a01 a02+    recPut bh r = do put bh $ t_cf_Type r; put bh $ t_cf r; return ()+    recSizeOf r = sum [ sizeOf $ t_cf_Type r, sizeOf $ t_cf r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_cf_Type r), viewField "" (viewNStr $ t_cf r) ]+    recType = fromEnum . t_cf_Type++instance Rec T_CGCSGI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_CGCSGI a01 a02+    recPut bh r = do put bh $ t_cgcsgi_Type r; put bh $ t_cgcsgi r; return ()+    recSizeOf r = sum [ sizeOf $ t_cgcsgi_Type r, sizeOf $ t_cgcsgi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_cgcsgi_Type r), viewField "" (viewNStr $ t_cgcsgi r) ]+    recType = fromEnum . t_cgcsgi_Type++instance Rec T_CR where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_CR a01 a02+    recPut bh r = do put bh $ t_cr_Type r; put bh $ t_cr r; return ()+    recSizeOf r = sum [ sizeOf $ t_cr_Type r, sizeOf $ t_cr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_cr_Type r), viewField "" (viewNStr $ t_cr r) ]+    recType = fromEnum . t_cr_Type++instance Rec T_CS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_CS a01 a02+    recPut bh r = do put bh $ t_cs_Type r; put bh $ t_cs r; return ()+    recSizeOf r = sum [ sizeOf $ t_cs_Type r, sizeOf $ t_cs r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_cs_Type r), viewField "" (viewNStr $ t_cs r) ]+    recType = fromEnum . t_cs_Type++instance Rec T_DP where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_DP a01 a02+    recPut bh r = do put bh $ t_dp_Type r; put bh $ t_dp r; return ()+    recSizeOf r = sum [ sizeOf $ t_dp_Type r, sizeOf $ t_dp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_dp_Type r), viewField "" (viewNStr $ t_dp r) ]+    recType = fromEnum . t_dp_Type++instance Rec T_EF where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_EF a01 a02+    recPut bh r = do put bh $ t_ef_Type r; put bh $ t_ef r; return ()+    recSizeOf r = sum [ sizeOf $ t_ef_Type r, sizeOf $ t_ef r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ef_Type r), viewField "" (viewNStr $ t_ef r) ]+    recType = fromEnum . t_ef_Type++instance Rec T_ERLI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_ERLI a01 a02+    recPut bh r = do put bh $ t_erli_Type r; put bh $ t_erli r; return ()+    recSizeOf r = sum [ sizeOf $ t_erli_Type r, sizeOf $ t_erli r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_erli_Type r), viewField "" (viewNStr $ t_erli r) ]+    recType = fromEnum . t_erli_Type++instance Rec T_ESI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_ESI a01 a02+    recPut bh r = do put bh $ t_esi_Type r; put bh $ t_esi r; return ()+    recSizeOf r = sum [ sizeOf $ t_esi_Type r, sizeOf $ t_esi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_esi_Type r), viewField "" (viewNStr $ t_esi r) ]+    recType = fromEnum . t_esi_Type++instance Rec T_FCGCSGI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FCGCSGI a01 a02+    recPut bh r = do put bh $ t_fcgcsgi_Type r; put bh $ t_fcgcsgi r; return ()+    recSizeOf r = sum [ sizeOf $ t_fcgcsgi_Type r, sizeOf $ t_fcgcsgi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_fcgcsgi_Type r), viewField "" (viewNStr $ t_fcgcsgi r) ]+    recType = fromEnum . t_fcgcsgi_Type++instance Rec T_FDS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FDS a01 a02+    recPut bh r = do put bh $ t_fds_Type r; put bh $ t_fds r; return ()+    recSizeOf r = sum [ sizeOf $ t_fds_Type r, sizeOf $ t_fds r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_fds_Type r), viewField "" (viewNStr $ t_fds r) ]+    recType = fromEnum . t_fds_Type++instance Rec T_FF where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FF a01 a02+    recPut bh r = do put bh $ t_ff_Type r; put bh $ t_ff r; return ()+    recSizeOf r = sum [ sizeOf $ t_ff_Type r, sizeOf $ t_ff r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ff_Type r), viewField "" (viewNStr $ t_ff r) ]+    recType = fromEnum . t_ff_Type++instance Rec T_FHSF where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FHSF a01 a02+    recPut bh r = do put bh $ t_fhsf_Type r; put bh $ t_fhsf r; return ()+    recSizeOf r = sum [ sizeOf $ t_fhsf_Type r, sizeOf $ t_fhsf r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_fhsf_Type r), viewField "" (viewNStr $ t_fhsf r) ]+    recType = fromEnum . t_fhsf_Type++instance Rec T_FO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FO a01 a02+    recPut bh r = do put bh $ t_fo_Type r; put bh $ t_fo r; return ()+    recSizeOf r = sum [ sizeOf $ t_fo_Type r, sizeOf $ t_fo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_fo_Type r), viewField "" (viewNStr $ t_fo r) ]+    recType = fromEnum . t_fo_Type++instance Rec T_FQN where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; return $ T_FQN a01 a02 a03 a04+    recPut bh r = do put bh $ t_fqn_Type r; put bh $ t_fqn_SubType r; put bh $ t_fqn_Format r; put bh $ t_fqn r; return ()+    recSizeOf r = sum [ sizeOf $ t_fqn_Type r, sizeOf $ t_fqn_SubType r, sizeOf $ t_fqn_Format r, sizeOf $ t_fqn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_fqn_Type r), viewField "SubType" (viewNumber $ t_fqn_SubType r), viewField "Format" (viewNumber $ t_fqn_Format r), viewField "" (viewString $ t_fqn r) ]+    recType = fromEnum . t_fqn_Type++instance Rec T_FRMT where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_FRMT a01 a02+    recPut bh r = do put bh $ t_frmt_Type r; put bh $ t_frmt r; return ()+    recSizeOf r = sum [ sizeOf $ t_frmt_Type r, sizeOf $ t_frmt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_frmt_Type r), viewField "" (viewNStr $ t_frmt r) ]+    recType = fromEnum . t_frmt_Type++instance Rec T_II where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_II a01 a02+    recPut bh r = do put bh $ t_ii_Type r; put bh $ t_ii r; return ()+    recSizeOf r = sum [ sizeOf $ t_ii_Type r, sizeOf $ t_ii r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ii_Type r), viewField "" (viewNStr $ t_ii r) ]+    recType = fromEnum . t_ii_Type++instance Rec T_LDOPM where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_LDOPM a01 a02+    recPut bh r = do put bh $ t_ldopm_Type r; put bh $ t_ldopm r; return ()+    recSizeOf r = sum [ sizeOf $ t_ldopm_Type r, sizeOf $ t_ldopm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ldopm_Type r), viewField "" (viewNStr $ t_ldopm r) ]+    recType = fromEnum . t_ldopm_Type++instance Rec T_LDTS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_LDTS a01 a02+    recPut bh r = do put bh $ t_ldts_Type r; put bh $ t_ldts r; return ()+    recSizeOf r = sum [ sizeOf $ t_ldts_Type r, sizeOf $ t_ldts r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ldts_Type r), viewField "" (viewNStr $ t_ldts r) ]+    recType = fromEnum . t_ldts_Type++instance Rec T_MA where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MA a01 a02+    recPut bh r = do put bh $ t_ma_Type r; put bh $ t_ma r; return ()+    recSizeOf r = sum [ sizeOf $ t_ma_Type r, sizeOf $ t_ma r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ma_Type r), viewField "" (viewNStr $ t_ma r) ]+    recType = fromEnum . t_ma_Type++instance Rec T_MEC where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MEC a01 a02+    recPut bh r = do put bh $ t_mec_Type r; put bh $ t_mec r; return ()+    recSizeOf r = sum [ sizeOf $ t_mec_Type r, sizeOf $ t_mec r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mec_Type r), viewField "" (viewNStr $ t_mec r) ]+    recType = fromEnum . t_mec_Type++instance Rec T_MF where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MF a01 a02+    recPut bh r = do put bh $ t_mf_Type r; put bh $ t_mf r; return ()+    recSizeOf r = sum [ sizeOf $ t_mf_Type r, sizeOf $ t_mf r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mf_Type r), viewField "" (viewNStr $ t_mf r) ]+    recType = fromEnum . t_mf_Type++instance Rec T_MIS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MIS a01 a02+    recPut bh r = do put bh $ t_mis_Type r; put bh $ t_mis r; return ()+    recSizeOf r = sum [ sizeOf $ t_mis_Type r, sizeOf $ t_mis r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mis_Type r), viewField "" (viewNStr $ t_mis r) ]+    recType = fromEnum . t_mis_Type++instance Rec T_MMPN where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MMPN a01 a02+    recPut bh r = do put bh $ t_mmpn_Type r; put bh $ t_mmpn r; return ()+    recSizeOf r = sum [ sizeOf $ t_mmpn_Type r, sizeOf $ t_mmpn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mmpn_Type r), viewField "" (viewNStr $ t_mmpn r) ]+    recType = fromEnum . t_mmpn_Type++instance Rec T_MO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MO a01 a02+    recPut bh r = do put bh $ t_mo_Type r; put bh $ t_mo r; return ()+    recSizeOf r = sum [ sizeOf $ t_mo_Type r, sizeOf $ t_mo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mo_Type r), viewField "" (viewNStr $ t_mo r) ]+    recType = fromEnum . t_mo_Type++instance Rec T_MOR where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_MOR a01 a02+    recPut bh r = do put bh $ t_mor_Type r; put bh $ t_mor r; return ()+    recSizeOf r = sum [ sizeOf $ t_mor_Type r, sizeOf $ t_mor r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_mor_Type r), viewField "" (viewNStr $ t_mor r) ]+    recType = fromEnum . t_mor_Type++instance Rec T_OAMU where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OAMU a01 a02+    recPut bh r = do put bh $ t_oamu_Type r; put bh $ t_oamu r; return ()+    recSizeOf r = sum [ sizeOf $ t_oamu_Type r, sizeOf $ t_oamu r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_oamu_Type r), viewField "" (viewNStr $ t_oamu r) ]+    recType = fromEnum . t_oamu_Type++instance Rec T_OAS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OAS a01 a02+    recPut bh r = do put bh $ t_oas_Type r; put bh $ t_oas r; return ()+    recSizeOf r = sum [ sizeOf $ t_oas_Type r, sizeOf $ t_oas r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_oas_Type r), viewField "" (viewNStr $ t_oas r) ]+    recType = fromEnum . t_oas_Type++instance Rec T_OBE where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OBE a01 a02+    recPut bh r = do put bh $ t_obe_Type r; put bh $ t_obe r; return ()+    recSizeOf r = sum [ sizeOf $ t_obe_Type r, sizeOf $ t_obe r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_obe_Type r), viewField "" (viewNStr $ t_obe r) ]+    recType = fromEnum . t_obe_Type++instance Rec T_OBO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OBO a01 a02+    recPut bh r = do put bh $ t_obo_Type r; put bh $ t_obo r; return ()+    recSizeOf r = sum [ sizeOf $ t_obo_Type r, sizeOf $ t_obo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_obo_Type r), viewField "" (viewNStr $ t_obo r) ]+    recType = fromEnum . t_obo_Type++instance Rec T_OCH where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OCH a01 a02+    recPut bh r = do put bh $ t_och_Type r; put bh $ t_och r; return ()+    recSizeOf r = sum [ sizeOf $ t_och_Type r, sizeOf $ t_och r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_och_Type r), viewField "" (viewNStr $ t_och r) ]+    recType = fromEnum . t_och_Type++instance Rec T_OCL where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OCL a01 a02+    recPut bh r = do put bh $ t_ocl_Type r; put bh $ t_ocl r; return ()+    recSizeOf r = sum [ sizeOf $ t_ocl_Type r, sizeOf $ t_ocl r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ocl_Type r), viewField "" (viewNStr $ t_ocl r) ]+    recType = fromEnum . t_ocl_Type++instance Rec T_OCO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OCO a01 a02+    recPut bh r = do put bh $ t_oco_Type r; put bh $ t_oco r; return ()+    recSizeOf r = sum [ sizeOf $ t_oco_Type r, sizeOf $ t_oco r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_oco_Type r), viewField "" (viewNStr $ t_oco r) ]+    recType = fromEnum . t_oco_Type++instance Rec T_OFSS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OFSS a01 a02+    recPut bh r = do put bh $ t_ofss_Type r; put bh $ t_ofss r; return ()+    recSizeOf r = sum [ sizeOf $ t_ofss_Type r, sizeOf $ t_ofss r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ofss_Type r), viewField "" (viewNStr $ t_ofss r) ]+    recType = fromEnum . t_ofss_Type++instance Rec T_OO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OO a01 a02+    recPut bh r = do put bh $ t_oo_Type r; put bh $ t_oo r; return ()+    recSizeOf r = sum [ sizeOf $ t_oo_Type r, sizeOf $ t_oo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_oo_Type r), viewField "" (viewNStr $ t_oo r) ]+    recType = fromEnum . t_oo_Type++instance Rec T_OOI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OOI a01 a02+    recPut bh r = do put bh $ t_ooi_Type r; put bh $ t_ooi r; return ()+    recSizeOf r = sum [ sizeOf $ t_ooi_Type r, sizeOf $ t_ooi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ooi_Type r), viewField "" (viewNStr $ t_ooi r) ]+    recType = fromEnum . t_ooi_Type++instance Rec T_OSFE where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OSFE a01 a02+    recPut bh r = do put bh $ t_osfe_Type r; put bh $ t_osfe r; return ()+    recSizeOf r = sum [ sizeOf $ t_osfe_Type r, sizeOf $ t_osfe r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_osfe_Type r), viewField "" (viewNStr $ t_osfe r) ]+    recType = fromEnum . t_osfe_Type++instance Rec T_OSFO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_OSFO a01 a02+    recPut bh r = do put bh $ t_osfo_Type r; put bh $ t_osfo r; return ()+    recSizeOf r = sum [ sizeOf $ t_osfo_Type r, sizeOf $ t_osfo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_osfo_Type r), viewField "" (viewNStr $ t_osfo r) ]+    recType = fromEnum . t_osfo_Type++instance Rec T_PC where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_PC a01 a02+    recPut bh r = do put bh $ t_pc_Type r; put bh $ t_pc r; return ()+    recSizeOf r = sum [ sizeOf $ t_pc_Type r, sizeOf $ t_pc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_pc_Type r), viewField "" (viewNStr $ t_pc r) ]+    recType = fromEnum . t_pc_Type++instance Rec T_POCP where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_POCP a01 a02+    recPut bh r = do put bh $ t_pocp_Type r; put bh $ t_pocp r; return ()+    recSizeOf r = sum [ sizeOf $ t_pocp_Type r, sizeOf $ t_pocp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_pocp_Type r), viewField "" (viewNStr $ t_pocp r) ]+    recType = fromEnum . t_pocp_Type++instance Rec T_PPI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_PPI a01 a02+    recPut bh r = do put bh $ t_ppi_Type r; put bh $ t_ppi r; return ()+    recSizeOf r = sum [ sizeOf $ t_ppi_Type r, sizeOf $ t_ppi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ppi_Type r), viewField "" (viewNStr $ t_ppi r) ]+    recType = fromEnum . t_ppi_Type++instance Rec T_PSMR where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_PSMR a01 a02+    recPut bh r = do put bh $ t_psmr_Type r; put bh $ t_psmr r; return ()+    recSizeOf r = sum [ sizeOf $ t_psmr_Type r, sizeOf $ t_psmr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_psmr_Type r), viewField "" (viewNStr $ t_psmr r) ]+    recType = fromEnum . t_psmr_Type++instance Rec T_PSRM where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_PSRM a01 a02+    recPut bh r = do put bh $ t_psrm_Type r; put bh $ t_psrm r; return ()+    recSizeOf r = sum [ sizeOf $ t_psrm_Type r, sizeOf $ t_psrm r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_psrm_Type r), viewField "" (viewNStr $ t_psrm r) ]+    recType = fromEnum . t_psrm_Type++instance Rec T_PV where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_PV a01 a02+    recPut bh r = do put bh $ t_pv_Type r; put bh $ t_pv r; return ()+    recSizeOf r = sum [ sizeOf $ t_pv_Type r, sizeOf $ t_pv r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_pv_Type r), viewField "" (viewNStr $ t_pv r) ]+    recType = fromEnum . t_pv_Type++instance Rec T_RLI where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ T_RLI a01 a02 a03+    recPut bh r = do put bh $ t_rli_Type r; put bh $ t_rli_SubType r; put bh $ t_rli r; return ()+    recSizeOf r = sum [ sizeOf $ t_rli_Type r, sizeOf $ t_rli_SubType r, sizeOf $ t_rli r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_rli_Type r), viewField "SubType" (viewNumber $ t_rli_SubType r), viewField "" (viewNumber $ t_rli r) ]+    recType = fromEnum . t_rli_Type++instance Rec T_ROI where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_ROI a01 a02+    recPut bh r = do put bh $ t_roi_Type r; put bh $ t_roi r; return ()+    recSizeOf r = sum [ sizeOf $ t_roi_Type r, sizeOf $ t_roi r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_roi_Type r), viewField "" (viewNStr $ t_roi r) ]+    recType = fromEnum . t_roi_Type++instance Rec T_ROT where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_ROT a01 a02+    recPut bh r = do put bh $ t_rot_Type r; put bh $ t_rot r; return ()+    recSizeOf r = sum [ sizeOf $ t_rot_Type r, sizeOf $ t_rot r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_rot_Type r), viewField "" (viewNStr $ t_rot r) ]+    recType = fromEnum . t_rot_Type++instance Rec T_RSN where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_RSN a01 a02+    recPut bh r = do put bh $ t_rsn_Type r; put bh $ t_rsn r; return ()+    recSizeOf r = sum [ sizeOf $ t_rsn_Type r, sizeOf $ t_rsn r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_rsn_Type r), viewField "" (viewNStr $ t_rsn r) ]+    recType = fromEnum . t_rsn_Type++instance Rec T_RUA where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_RUA a01 a02+    recPut bh r = do put bh $ t_rua_Type r; put bh $ t_rua r; return ()+    recSizeOf r = sum [ sizeOf $ t_rua_Type r, sizeOf $ t_rua r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_rua_Type r), viewField "" (viewNStr $ t_rua r) ]+    recType = fromEnum . t_rua_Type++instance Rec T_T1CRMT where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_T1CRMT a01 a02+    recPut bh r = do put bh $ t_t1crmt_Type r; put bh $ t_t1crmt r; return ()+    recSizeOf r = sum [ sizeOf $ t_t1crmt_Type r, sizeOf $ t_t1crmt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_t1crmt_Type r), viewField "" (viewNStr $ t_t1crmt r) ]+    recType = fromEnum . t_t1crmt_Type++instance Rec T_T2FRMT where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_T2FRMT a01 a02+    recPut bh r = do put bh $ t_t2frmt_Type r; put bh $ t_t2frmt r; return ()+    recSizeOf r = sum [ sizeOf $ t_t2frmt_Type r, sizeOf $ t_t2frmt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_t2frmt_Type r), viewField "" (viewNStr $ t_t2frmt r) ]+    recType = fromEnum . t_t2frmt_Type++instance Rec T_TO where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_TO a01 a02+    recPut bh r = do put bh $ t_to_Type r; put bh $ t_to r; return ()+    recSizeOf r = sum [ sizeOf $ t_to_Type r, sizeOf $ t_to r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_to_Type r), viewField "" (viewNStr $ t_to r) ]+    recType = fromEnum . t_to_Type++instance Rec T_TS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_TS a01 a02+    recPut bh r = do put bh $ t_ts_Type r; put bh $ t_ts r; return ()+    recSizeOf r = sum [ sizeOf $ t_ts_Type r, sizeOf $ t_ts r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_ts_Type r), viewField "" (viewNStr $ t_ts r) ]+    recType = fromEnum . t_ts_Type++instance Rec T_UDTS where+    recGet bh = do a01 <- get bh; a02 <- get bh; return $ T_UDTS a01 a02+    recPut bh r = do put bh $ t_udts_Type r; put bh $ t_udts r; return ()+    recSizeOf r = sum [ sizeOf $ t_udts_Type r, sizeOf $ t_udts r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ t_udts_Type r), viewField "" (viewNStr $ t_udts r) ]+    recType = fromEnum . t_udts_Type++instance ChunkBuf T_ N1 Buffer1 where+    chunkCon = T_+    chunkDecon (T_ x) = x+    chunkTypeLookup = lookupT+    chunkApply = applyT++applyT :: forall m x. (MonadIO m)+    => N1 -> T_ -> (forall a. (Rec a) => (a -> m x)) -> m x+applyT x rec f = case x of+    0x01 -> apply recOf rec (f :: T_CGCSGI -> m x)+    0x02 -> apply recOf rec (f :: T_FQN -> m x)+    0x04 -> apply recOf rec (f :: T_MO -> m x)+    0x10 -> apply recOf rec (f :: T_OCL -> m x)+    0x18 -> apply recOf rec (f :: T_MIS -> m x)+    0x1D -> apply recOf rec (f :: T_TO -> m x)+    0x1F -> apply recOf rec (f :: T_FDS -> m x)+    0x20 -> apply recOf rec (f :: T_FCGCSGI -> m x)+    0x21 -> apply recOf rec (f :: T_OFSS -> m x)+    0x22 -> apply recOf rec (f :: T_ROT -> m x)+    0x23 -> apply recOf rec (f :: T_ERLI -> m x)+    0x24 -> apply recOf rec (f :: T_RLI -> m x)+    0x25 -> apply recOf rec (f :: T_RSN -> m x)+    0x26 -> apply recOf rec (f :: T_CR -> m x)+    0x27 -> apply recOf rec (f :: T_LDOPM -> m x)+    0x2D -> apply recOf rec (f :: T_OBO -> m x)+    0x36 -> apply recOf rec (f :: T_AV -> m x)+    0x43 -> apply recOf rec (f :: T_DP -> m x)+    0x45 -> apply recOf rec (f :: T_MEC -> m x)+    0x46 -> apply recOf rec (f :: T_POCP -> m x)+    0x47 -> apply recOf rec (f :: T_RUA -> m x)+    0x4B -> apply recOf rec (f :: T_OAMU -> m x)+    0x4C -> apply recOf rec (f :: T_OAS -> m x)+    0x4D -> apply recOf rec (f :: T_AD -> m x)+    0x4E -> apply recOf rec (f :: T_CS -> m x)+    0x50 -> apply recOf rec (f :: T_ESI -> m x)+    0x56 -> apply recOf rec (f :: T_MMPN -> m x)+    0x57 -> apply recOf rec (f :: T_OBE -> m x)+    0x58 -> apply recOf rec (f :: T_OSFO -> m x)+    0x59 -> apply recOf rec (f :: T_OSFE -> m x)+    0x5A -> apply recOf rec (f :: T_OO -> m x)+    0x5D -> apply recOf rec (f :: T_FHSF -> m x)+    0x5E -> apply recOf rec (f :: T_OCO -> m x)+    0x62 -> apply recOf rec (f :: T_LDTS -> m x)+    0x63 -> apply recOf rec (f :: T_T2FRMT -> m x)+    0x64 -> apply recOf rec (f :: T_OOI -> m x)+    0x65 -> apply recOf rec (f :: T_C -> m x)+    0x68 -> apply recOf rec (f :: T_MOR -> m x)+    0x6C -> apply recOf rec (f :: T_ROI -> m x)+    0x6D -> apply recOf rec (f :: T_EF -> m x)+    0x70 -> apply recOf rec (f :: T_PSRM -> m x)+    0x71 -> apply recOf rec (f :: T_PSMR -> m x)+    0x72 -> apply recOf rec (f :: T_UDTS -> m x)+    0x73 -> apply recOf rec (f :: T_II -> m x)+    0x74 -> apply recOf rec (f :: T_TS -> m x)+    0x75 -> apply recOf rec (f :: T_CF -> m x)+    0x78 -> apply recOf rec (f :: T_FF -> m x)+    0x79 -> apply recOf rec (f :: T_MA -> m x)+    0x80 -> apply recOf rec (f :: T_AQ -> m x)+    0x81 -> apply recOf rec (f :: T_PPI -> m x)+    0x82 -> apply recOf rec (f :: T_PV -> m x)+    0x83 -> apply recOf rec (f :: T_PC -> m x)+    0x84 -> apply recOf rec (f :: T_FRMT -> m x)+    0x85 -> apply recOf rec (f :: T_FO -> m x)+    0x87 -> apply recOf rec (f :: T_MF -> m x)+    _    -> apply recOf rec (f :: Unknown -> m x)+
+ src/OpenAFP/Prelude/Instances.hs view
@@ -0,0 +1,386 @@+{-# OPTIONS -fglasgow-exts #-}++module OpenAFP.Prelude.Instances where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals+import OpenAFP.Prelude.InstanceT+import OpenAFP.Prelude.InstancePTX+import OpenAFP.Prelude.InstanceAFP++instance Rec T_ where+    recSizeOf c = 1 + (snd $ chunkToPStrLen c)++instance ChunkBuf AFP_ N3 Buffer2 where+    chunkCon = AFP_+    chunkDecon (AFP_ x) = x+    chunkTypeLookup = lookupAFP+    chunkApply = applyAFP++recOf :: (ChunkBuf c n b, Binary (Record r)) => c -> IO r+recOf c = return . fromRecord =<< chunkToRecord c++apply :: (MonadIO m) => (t -> IO a) -> t -> (a -> m b) -> m b+apply ctr c f = f =<< (liftIO $ ctr c)++applyAFP :: forall m x. (MonadIO m)+    => N3 -> AFP_ -> (forall a. (Rec a) => (a -> m x)) -> m x+applyAFP x rec f = case x of+    0xD38C87 -> apply recOf rec (f :: CPI -> m x)+    0xD38C89 -> apply recOf rec (f :: FNI -> m x)+    0xD38C8A -> apply recOf rec (f :: CFI -> m x)+    0xD3A088 -> apply recOf rec (f :: MFC -> m x)+    0xD3A090 -> apply recOf rec (f :: TLE -> m x)+    0xD3A288 -> apply recOf rec (f :: MCC -> m x)+    0xD3A289 -> apply recOf rec (f :: FNM -> m x)+    0xD3A66B -> apply recOf rec (f :: OBD -> m x)+    0xD3A67B -> apply recOf rec (f :: IID -> m x)+    0xD3A687 -> apply recOf rec (f :: CPD -> m x)+    0xD3A688 -> apply recOf rec (f :: MDD -> m x)+    0xD3A689 -> apply recOf rec (f :: FND -> m x)+    0xD3A692 -> apply recOf rec (f :: CDD -> m x)+    0xD3A69B -> apply recOf rec (f :: PTD1 -> m x)+    0xD3A6AF -> apply recOf rec (f :: PGD -> m x)+    0xD3A6BB -> apply recOf rec (f :: GDD -> m x)+    0xD3A6C5 -> apply recOf rec (f :: FGD -> m x)+    0xD3A6E3 -> apply recOf rec (f :: DXD -> m x)+    0xD3A6E7 -> apply recOf rec (f :: LND -> m x)+    0xD3A6EB -> apply recOf rec (f :: BDD -> m x)+    0xD3A6FB -> apply recOf rec (f :: IDD -> m x)+    0xD3A77B -> apply recOf rec (f :: IOC -> m x)+    0xD3A787 -> apply recOf rec (f :: CPC -> m x)+    0xD3A788 -> apply recOf rec (f :: MMC -> m x)+    0xD3A789 -> apply recOf rec (f :: FNC -> m x)+    0xD3A78A -> apply recOf rec (f :: CFC -> m x)+    0xD3A79B -> apply recOf rec (f :: CTC -> m x)+    0xD3A7AF -> apply recOf rec (f :: PMC -> m x)+    0xD3A85F -> apply recOf rec (f :: BPS -> m x)+    0xD3A877 -> apply recOf rec (f :: BCA -> m x)+    0xD3A87B -> apply recOf rec (f :: BII -> m x)+    0xD3A887 -> apply recOf rec (f :: BCP -> m x)+    0xD3A889 -> apply recOf rec (f :: BFN -> m x)+    0xD3A88A -> apply recOf rec (f :: BCF -> m x)+    0xD3A892 -> apply recOf rec (f :: BOC -> m x)+    0xD3A89B -> apply recOf rec (f :: BPT -> m x)+    0xD3A8A7 -> apply recOf rec (f :: BDI -> m x)+    0xD3A8A8 -> apply recOf rec (f :: BDT -> m x)+    0xD3A8AD -> apply recOf rec (f :: BNG -> m x)+    0xD3A8AF -> apply recOf rec (f :: BPG -> m x)+    0xD3A8BB -> apply recOf rec (f :: BGR -> m x)+    0xD3A8C4 -> apply recOf rec (f :: BDG -> m x)+    0xD3A8C5 -> apply recOf rec (f :: BFG -> m x)+    0xD3A8C6 -> apply recOf rec (f :: BRG -> m x)+    0xD3A8C7 -> apply recOf rec (f :: BOG -> m x)+    0xD3A8C9 -> apply recOf rec (f :: BAG -> m x)+    0xD3A8CA -> apply recOf rec (f :: BDM -> m x)+    0xD3A8CB -> apply recOf rec (f :: BPM -> m x)+    0xD3A8CC -> apply recOf rec (f :: BMM -> m x)+    0xD3A8CD -> apply recOf rec (f :: BFM -> m x)+    0xD3A8CE -> apply recOf rec (f :: BR -> m x)+    0xD3A8D9 -> apply recOf rec (f :: BSG -> m x)+    0xD3A8DF -> apply recOf rec (f :: BMO -> m x)+    0xD3A8E3 -> apply recOf rec (f :: BDX -> m x)+    0xD3A8EB -> apply recOf rec (f :: BBC -> m x)+    0xD3A8FB -> apply recOf rec (f :: BIM -> m x)+    0xD3A95F -> apply recOf rec (f :: EPS -> m x)+    0xD3A977 -> apply recOf rec (f :: ECA -> m x)+    0xD3A97B -> apply recOf rec (f :: EII -> m x)+    0xD3A987 -> apply recOf rec (f :: ECP -> m x)+    0xD3A989 -> apply recOf rec (f :: EFN -> m x)+    0xD3A98A -> apply recOf rec (f :: ECF -> m x)+    0xD3A992 -> apply recOf rec (f :: EOC -> m x)+    0xD3A99B -> apply recOf rec (f :: EPT -> m x)+    0xD3A9A7 -> apply recOf rec (f :: EDI -> m x)+    0xD3A9A8 -> apply recOf rec (f :: EDT -> m x)+    0xD3A9AD -> apply recOf rec (f :: ENG -> m x)+    0xD3A9AF -> apply recOf rec (f :: EPG -> m x)+    0xD3A9BB -> apply recOf rec (f :: EGR -> m x)+    0xD3A9C4 -> apply recOf rec (f :: EDG -> m x)+    0xD3A9C5 -> apply recOf rec (f :: EFG -> m x)+    0xD3A9C6 -> apply recOf rec (f :: ERG -> m x)+    0xD3A9C7 -> apply recOf rec (f :: EOG -> m x)+    0xD3A9C9 -> apply recOf rec (f :: EAG -> m x)+    0xD3A9CA -> apply recOf rec (f :: EDM -> m x)+    0xD3A9CB -> apply recOf rec (f :: EPM -> m x)+    0xD3A9CC -> apply recOf rec (f :: EMM -> m x)+    0xD3A9CD -> apply recOf rec (f :: EFM -> m x)+    0xD3A9CE -> apply recOf rec (f :: ER -> m x)+    0xD3A9D9 -> apply recOf rec (f :: ESG -> m x)+    0xD3A9DF -> apply recOf rec (f :: EMO -> m x)+    0xD3A9E3 -> apply recOf rec (f :: EDX -> m x)+    0xD3A9EB -> apply recOf rec (f :: EBC -> m x)+    0xD3A9FB -> apply recOf rec (f :: EIM -> m x)+    0xD3AAE7 -> apply recOf rec (f :: LNC -> m x)+    0xD3AB77 -> apply recOf rec (f :: MCA -> m x)+    0xD3AB88 -> apply recOf rec (f :: MMT -> m x)+    0xD3AB89 -> apply recOf rec (f :: FNN -> m x)+    0xD3AB8A -> apply recOf rec (f :: MCF -> m x)+    0xD3AB92 -> apply recOf rec (f :: MCD -> m x)+    0xD3ABAF -> apply recOf rec (f :: MPG -> m x)+    0xD3ABBB -> apply recOf rec (f :: MGO -> m x)+    0xD3ABC3 -> apply recOf rec (f :: MDR -> m x)+    0xD3ABCC -> apply recOf rec (f :: IMM -> m x)+    0xD3ABD8 -> apply recOf rec (f :: MPO -> m x)+    0xD3ABEA -> apply recOf rec (f :: MSU -> m x)+    0xD3ABEB -> apply recOf rec (f :: MBC -> m x)+    0xD3ABFB -> apply recOf rec (f :: MIO -> m x)+    0xD3AC6B -> apply recOf rec (f :: OBP -> m x)+    0xD3AC7B -> apply recOf rec (f :: ICP -> m x)+    0xD3AC89 -> apply recOf rec (f :: FNP -> m x)+    0xD3ACAF -> apply recOf rec (f :: PGP1 -> m x)+    0xD3AE89 -> apply recOf rec (f :: FNO -> m x)+    0xD3AF5F -> apply recOf rec (f :: IPS -> m x)+    0xD3AFAF -> apply recOf rec (f :: IPG -> m x)+    0xD3AFC3 -> apply recOf rec (f :: IOB -> m x)+    0xD3AFD8 -> apply recOf rec (f :: IPO -> m x)+    0xD3B077 -> apply recOf rec (f :: CAT -> m x)+    0xD3B15F -> apply recOf rec (f :: MPS -> m x)+    0xD3B18A -> apply recOf rec (f :: MCF1 -> m x)+    0xD3B19B -> apply recOf rec (f :: PTD -> m x)+    0xD3B1AF -> apply recOf rec (f :: PGP -> m x)+    0xD3B1DF -> apply recOf rec (f :: MMO -> m x)+    0xD3B288 -> apply recOf rec (f :: PFC -> m x)+    0xD3B2A7 -> apply recOf rec (f :: IEL -> m x)+    0xD3B490 -> apply recOf rec (f :: LLE -> m x)+    0xD3EE7B -> apply recOf rec (f :: IRD -> m x)+    0xD3EE89 -> apply recOf rec (f :: FNG -> m x)+    0xD3EE92 -> apply recOf rec (f :: OCD -> m x)+    0xD3EE9B -> apply recOf rec (f :: PTX -> m x)+    0xD3EEBB -> apply recOf rec (f :: GAD -> m x)+    0xD3EEEB -> apply recOf rec (f :: BDA -> m x)+    0xD3EEEE -> apply recOf rec (f :: NOP -> m x)+    0xD3EEFB -> apply recOf rec (f :: IPD -> m x)+    _        -> apply recOf rec (f :: Unknown -> m x)++instance ChunkBuf MCF_ N0 Buffer2 where+    chunkCon = MCF_+    chunkDecon (MCF_ x) = x+    chunkTypeLookup = lookupMCF+    chunkApply = applyMCF++applyMCF :: forall m x. (MonadIO m)+    => N0 -> MCF_ -> (forall a. (Rec a) => (a -> m x)) -> m x+applyMCF x rec f = case x of+    _        -> apply recOf rec (f :: MCF_T -> m x)++instance RecChunk MCF MCF_ N0 Buffer2 where+    readChunks r = mcf_Chunks r+    writeChunks r io = do+        cs <- io+        return $ r { mcf_Chunks = cs }++instance Rec MCF_ where+    recSizeOf c = 2 + (snd $ chunkToPStrLen c)++instance Rec MCF where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MCF a01 a02 a03+    recPut bh r = do put bh $ mcf_Type r; put bh $ mcf_ r; put bh $ mcf_Chunks r; return ()+    recSizeOf r = sum [ sizeOf $ mcf_Type r, sizeOf $ mcf_ r, sizeOf $ mcf_Chunks r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mcf_Type r), viewField "_" (viewNumber $ mcf_ r), viewField "Chunks" (viewChunks $ mcf_Chunks r) ]+    recType = fromEnum . mcf_Type++instance Rec MCF1_Data where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; return $ MCF1_Data a01 a02 a03 a04 a05 a06 a07 a08+    recPut bh r = do put bh $ mcf1_CodedFontLocalId r; put bh $ mcf1_Reserved1 r; put bh $ mcf1_CodedFontResourceSectionId r; put bh $ mcf1_Reserved2 r; put bh $ mcf1_CodedFontName r; put bh $ mcf1_CodePageName r; put bh $ mcf1_FontCharacterSetName r; put bh $ mcf1_CharacterRotation r; return ()+    recSizeOf r = sum [ sizeOf $ mcf1_CodedFontLocalId r, sizeOf $ mcf1_Reserved1 r, sizeOf $ mcf1_CodedFontResourceSectionId r, sizeOf $ mcf1_Reserved2 r, sizeOf $ mcf1_CodedFontName r, sizeOf $ mcf1_CodePageName r, sizeOf $ mcf1_FontCharacterSetName r, sizeOf $ mcf1_CharacterRotation r ]+    recView r = viewRecord (typeOf r) [ viewField "CodedFontLocalId" (viewNumber $ mcf1_CodedFontLocalId r), viewField "Reserved1" (viewString $ mcf1_Reserved1 r), viewField "CodedFontResourceSectionId" (viewNumber $ mcf1_CodedFontResourceSectionId r), viewField "Reserved2" (viewString $ mcf1_Reserved2 r), viewField "CodedFontName" (viewString $ mcf1_CodedFontName r), viewField "CodePageName" (viewString $ mcf1_CodePageName r), viewField "FontCharacterSetName" (viewString $ mcf1_FontCharacterSetName r), viewField "CharacterRotation" (viewNumber $ mcf1_CharacterRotation r) ]+    recType r = 0++instance RecData MCF1 MCF1_Data where+    readData r = mcf1_Data r+    writeData r cs = r { mcf1_Data = cs }++instance Rec MCF1 where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; return $ MCF1 a01 a02 a03 a04 a05+    recPut bh r = do put bh $ mcf1_Type r; put bh $ mcf1_ r; put bh $ mcf1_RepeatingGroupLength r; put bh $ mcf1__ r; put bh $ mcf1_Data r; return ()+    recSizeOf r = sum [ sizeOf $ mcf1_Type r, sizeOf $ mcf1_ r, sizeOf $ mcf1_RepeatingGroupLength r, sizeOf $ mcf1__ r, sizeOf $ mcf1_Data r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mcf1_Type r), viewField "_" (viewNumber $ mcf1_ r), viewField "RepeatingGroupLength" (viewNumber $ mcf1_RepeatingGroupLength r), viewField "__" (viewString $ mcf1__ r), viewField "Data" (viewData $ mcf1_Data r) ]+    recType = fromEnum . mcf1_Type++instance Rec MDD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MDD a01 a02 a03+    recPut bh r = do put bh $ mdd_Type r; put bh $ mdd_ r; put bh $ mdd r; return ()+    recSizeOf r = sum [ sizeOf $ mdd_Type r, sizeOf $ mdd_ r, sizeOf $ mdd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mdd_Type r), viewField "_" (viewNumber $ mdd_ r), viewField "" (viewNStr $ mdd r) ]+    recType = fromEnum . mdd_Type++instance Rec MDR where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MDR a01 a02 a03+    recPut bh r = do put bh $ mdr_Type r; put bh $ mdr_ r; put bh $ mdr r; return ()+    recSizeOf r = sum [ sizeOf $ mdr_Type r, sizeOf $ mdr_ r, sizeOf $ mdr r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mdr_Type r), viewField "_" (viewNumber $ mdr_ r), viewField "" (viewNStr $ mdr r) ]+    recType = fromEnum . mdr_Type++instance Rec MFC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MFC a01 a02 a03+    recPut bh r = do put bh $ mfc_Type r; put bh $ mfc_ r; put bh $ mfc r; return ()+    recSizeOf r = sum [ sizeOf $ mfc_Type r, sizeOf $ mfc_ r, sizeOf $ mfc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mfc_Type r), viewField "_" (viewNumber $ mfc_ r), viewField "" (viewNStr $ mfc r) ]+    recType = fromEnum . mfc_Type++instance Rec MGO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MGO a01 a02 a03+    recPut bh r = do put bh $ mgo_Type r; put bh $ mgo_ r; put bh $ mgo r; return ()+    recSizeOf r = sum [ sizeOf $ mgo_Type r, sizeOf $ mgo_ r, sizeOf $ mgo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mgo_Type r), viewField "_" (viewNumber $ mgo_ r), viewField "" (viewNStr $ mgo r) ]+    recType = fromEnum . mgo_Type++instance Rec MIO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MIO a01 a02 a03+    recPut bh r = do put bh $ mio_Type r; put bh $ mio_ r; put bh $ mio r; return ()+    recSizeOf r = sum [ sizeOf $ mio_Type r, sizeOf $ mio_ r, sizeOf $ mio r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mio_Type r), viewField "_" (viewNumber $ mio_ r), viewField "" (viewNStr $ mio r) ]+    recType = fromEnum . mio_Type++instance Rec MMC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MMC a01 a02 a03+    recPut bh r = do put bh $ mmc_Type r; put bh $ mmc_ r; put bh $ mmc r; return ()+    recSizeOf r = sum [ sizeOf $ mmc_Type r, sizeOf $ mmc_ r, sizeOf $ mmc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mmc_Type r), viewField "_" (viewNumber $ mmc_ r), viewField "" (viewNStr $ mmc r) ]+    recType = fromEnum . mmc_Type++instance Rec MMO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MMO a01 a02 a03+    recPut bh r = do put bh $ mmo_Type r; put bh $ mmo_ r; put bh $ mmo r; return ()+    recSizeOf r = sum [ sizeOf $ mmo_Type r, sizeOf $ mmo_ r, sizeOf $ mmo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mmo_Type r), viewField "_" (viewNumber $ mmo_ r), viewField "" (viewNStr $ mmo r) ]+    recType = fromEnum . mmo_Type++instance Rec MMT where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MMT a01 a02 a03+    recPut bh r = do put bh $ mmt_Type r; put bh $ mmt_ r; put bh $ mmt r; return ()+    recSizeOf r = sum [ sizeOf $ mmt_Type r, sizeOf $ mmt_ r, sizeOf $ mmt r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mmt_Type r), viewField "_" (viewNumber $ mmt_ r), viewField "" (viewNStr $ mmt r) ]+    recType = fromEnum . mmt_Type++instance Rec MPG where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MPG a01 a02 a03+    recPut bh r = do put bh $ mpg_Type r; put bh $ mpg_ r; put bh $ mpg r; return ()+    recSizeOf r = sum [ sizeOf $ mpg_Type r, sizeOf $ mpg_ r, sizeOf $ mpg r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mpg_Type r), viewField "_" (viewNumber $ mpg_ r), viewField "" (viewNStr $ mpg r) ]+    recType = fromEnum . mpg_Type++instance Rec MPO where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MPO a01 a02 a03+    recPut bh r = do put bh $ mpo_Type r; put bh $ mpo_ r; put bh $ mpo r; return ()+    recSizeOf r = sum [ sizeOf $ mpo_Type r, sizeOf $ mpo_ r, sizeOf $ mpo r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mpo_Type r), viewField "_" (viewNumber $ mpo_ r), viewField "" (viewNStr $ mpo r) ]+    recType = fromEnum . mpo_Type++instance Rec MPS where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MPS a01 a02 a03+    recPut bh r = do put bh $ mps_Type r; put bh $ mps_ r; put bh $ mps r; return ()+    recSizeOf r = sum [ sizeOf $ mps_Type r, sizeOf $ mps_ r, sizeOf $ mps r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ mps_Type r), viewField "_" (viewNumber $ mps_ r), viewField "" (viewNStr $ mps r) ]+    recType = fromEnum . mps_Type++instance Rec MSU where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ MSU a01 a02 a03+    recPut bh r = do put bh $ msu_Type r; put bh $ msu_ r; put bh $ msu r; return ()+    recSizeOf r = sum [ sizeOf $ msu_Type r, sizeOf $ msu_ r, sizeOf $ msu r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ msu_Type r), viewField "_" (viewNumber $ msu_ r), viewField "" (viewNStr $ msu r) ]+    recType = fromEnum . msu_Type++instance Rec NOP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ NOP a01 a02 a03+    recPut bh r = do put bh $ nop_Type r; put bh $ nop_ r; put bh $ nop r; return ()+    recSizeOf r = sum [ sizeOf $ nop_Type r, sizeOf $ nop_ r, sizeOf $ nop r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ nop_Type r), viewField "_" (viewNumber $ nop_ r), viewField "" (viewNStr $ nop r) ]+    recType = fromEnum . nop_Type++instance Rec OBD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ OBD a01 a02 a03+    recPut bh r = do put bh $ obd_Type r; put bh $ obd_ r; put bh $ obd r; return ()+    recSizeOf r = sum [ sizeOf $ obd_Type r, sizeOf $ obd_ r, sizeOf $ obd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ obd_Type r), viewField "_" (viewNumber $ obd_ r), viewField "" (viewNStr $ obd r) ]+    recType = fromEnum . obd_Type++instance Rec OBP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ OBP a01 a02 a03+    recPut bh r = do put bh $ obp_Type r; put bh $ obp_ r; put bh $ obp r; return ()+    recSizeOf r = sum [ sizeOf $ obp_Type r, sizeOf $ obp_ r, sizeOf $ obp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ obp_Type r), viewField "_" (viewNumber $ obp_ r), viewField "" (viewNStr $ obp r) ]+    recType = fromEnum . obp_Type++instance Rec OCD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ OCD a01 a02 a03+    recPut bh r = do put bh $ ocd_Type r; put bh $ ocd_ r; put bh $ ocd r; return ()+    recSizeOf r = sum [ sizeOf $ ocd_Type r, sizeOf $ ocd_ r, sizeOf $ ocd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ocd_Type r), viewField "_" (viewNumber $ ocd_ r), viewField "" (viewNStr $ ocd r) ]+    recType = fromEnum . ocd_Type++instance Rec PFC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PFC a01 a02 a03+    recPut bh r = do put bh $ pfc_Type r; put bh $ pfc_ r; put bh $ pfc r; return ()+    recSizeOf r = sum [ sizeOf $ pfc_Type r, sizeOf $ pfc_ r, sizeOf $ pfc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ pfc_Type r), viewField "_" (viewNumber $ pfc_ r), viewField "" (viewNStr $ pfc r) ]+    recType = fromEnum . pfc_Type++instance Rec PGD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; a11 <- get bh; return $ PGD a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11+    recPut bh r = do put bh $ pgd_Type r; put bh $ pgd_ r; put bh $ pgd_XUnitBase r; put bh $ pgd_YUnitBase r; put bh $ pgd_XLUnitsperUnitBase r; put bh $ pgd_YLUnitsperUnitBase r; put bh $ pgd_Reserved1 r; put bh $ pgd_XPageSize r; put bh $ pgd_Reserved2 r; put bh $ pgd_YPageSize r; put bh $ pgd__ r; return ()+    recSizeOf r = sum [ sizeOf $ pgd_Type r, sizeOf $ pgd_ r, sizeOf $ pgd_XUnitBase r, sizeOf $ pgd_YUnitBase r, sizeOf $ pgd_XLUnitsperUnitBase r, sizeOf $ pgd_YLUnitsperUnitBase r, sizeOf $ pgd_Reserved1 r, sizeOf $ pgd_XPageSize r, sizeOf $ pgd_Reserved2 r, sizeOf $ pgd_YPageSize r, sizeOf $ pgd__ r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ pgd_Type r), viewField "_" (viewNumber $ pgd_ r), viewField "XUnitBase" (viewNumber $ pgd_XUnitBase r), viewField "YUnitBase" (viewNumber $ pgd_YUnitBase r), viewField "XLUnitsperUnitBase" (viewNumber $ pgd_XLUnitsperUnitBase r), viewField "YLUnitsperUnitBase" (viewNumber $ pgd_YLUnitsperUnitBase r), viewField "Reserved1" (viewNumber $ pgd_Reserved1 r), viewField "XPageSize" (viewNumber $ pgd_XPageSize r), viewField "Reserved2" (viewNumber $ pgd_Reserved2 r), viewField "YPageSize" (viewNumber $ pgd_YPageSize r), viewField "__" (viewNStr $ pgd__ r) ]+    recType = fromEnum . pgd_Type++instance Rec PGP where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PGP a01 a02 a03+    recPut bh r = do put bh $ pgp_Type r; put bh $ pgp_ r; put bh $ pgp r; return ()+    recSizeOf r = sum [ sizeOf $ pgp_Type r, sizeOf $ pgp_ r, sizeOf $ pgp r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ pgp_Type r), viewField "_" (viewNumber $ pgp_ r), viewField "" (viewNStr $ pgp r) ]+    recType = fromEnum . pgp_Type++instance Rec PGP1 where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PGP1 a01 a02 a03+    recPut bh r = do put bh $ pgp1_Type r; put bh $ pgp1_ r; put bh $ pgp1 r; return ()+    recSizeOf r = sum [ sizeOf $ pgp1_Type r, sizeOf $ pgp1_ r, sizeOf $ pgp1 r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ pgp1_Type r), viewField "_" (viewNumber $ pgp1_ r), viewField "" (viewNStr $ pgp1 r) ]+    recType = fromEnum . pgp1_Type++instance Rec PMC where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PMC a01 a02 a03+    recPut bh r = do put bh $ pmc_Type r; put bh $ pmc_ r; put bh $ pmc r; return ()+    recSizeOf r = sum [ sizeOf $ pmc_Type r, sizeOf $ pmc_ r, sizeOf $ pmc r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ pmc_Type r), viewField "_" (viewNumber $ pmc_ r), viewField "" (viewNStr $ pmc r) ]+    recType = fromEnum . pmc_Type++instance Rec PTD where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PTD a01 a02 a03+    recPut bh r = do put bh $ ptd_Type r; put bh $ ptd_ r; put bh $ ptd r; return ()+    recSizeOf r = sum [ sizeOf $ ptd_Type r, sizeOf $ ptd_ r, sizeOf $ ptd r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptd_Type r), viewField "_" (viewNumber $ ptd_ r), viewField "" (viewNStr $ ptd r) ]+    recType = fromEnum . ptd_Type++instance Rec PTD1 where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; return $ PTD1 a01 a02 a03+    recPut bh r = do put bh $ ptd1_Type r; put bh $ ptd1_ r; put bh $ ptd1 r; return ()+    recSizeOf r = sum [ sizeOf $ ptd1_Type r, sizeOf $ ptd1_ r, sizeOf $ ptd1 r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ ptd1_Type r), viewField "_" (viewNumber $ ptd1_ r), viewField "" (viewNStr $ ptd1 r) ]+    recType = fromEnum . ptd1_Type++instance RecChunk TLE T_ N1 Buffer1 where+    readChunks r = tle_Chunks r+    writeChunks r io = do+        cs <- io+        return $ r { tle_Chunks = cs }++instance Rec TLE where+    recGet bh = do a01 <- get bh; a02 <- get bh; a03 <- get bh; a04 <- get bh; a05 <- get bh; a06 <- get bh; a07 <- get bh; a08 <- get bh; a09 <- get bh; a10 <- get bh; return $ TLE a01 a02 a03 a04 a05 a06 a07 a08 a09 a10+    recPut bh r = do put bh $ tle_Type r; put bh $ tle_ r; put bh $ tle_Chunks r; put bh $ tle_XUnitBase r; put bh $ tle_YUnitBase r; put bh $ tle_XLUnitsperUnitBase r; put bh $ tle_YLUnitsperUnitBase r; put bh $ tle_XPageSize r; put bh $ tle_YPageSize r; put bh $ tle__ r; return ()+    recSizeOf r = sum [ sizeOf $ tle_Type r, sizeOf $ tle_ r, sizeOf $ tle_Chunks r, sizeOf $ tle_XUnitBase r, sizeOf $ tle_YUnitBase r, sizeOf $ tle_XLUnitsperUnitBase r, sizeOf $ tle_YLUnitsperUnitBase r, sizeOf $ tle_XPageSize r, sizeOf $ tle_YPageSize r, sizeOf $ tle__ r ]+    recView r = viewRecord (typeOf r) [ viewField "Type" (viewNumber $ tle_Type r), viewField "_" (viewNumber $ tle_ r), viewField "Chunks" (viewChunks $ tle_Chunks r), viewField "XUnitBase" (viewNumber $ tle_XUnitBase r), viewField "YUnitBase" (viewNumber $ tle_YUnitBase r), viewField "XLUnitsperUnitBase" (viewNumber $ tle_XLUnitsperUnitBase r), viewField "YLUnitsperUnitBase" (viewNumber $ tle_YLUnitsperUnitBase r), viewField "XPageSize" (viewNumber $ tle_XPageSize r), viewField "YPageSize" (viewNumber $ tle_YPageSize r), viewField "__" (viewNStr $ tle__ r) ]+    recType = fromEnum . tle_Type++instance RecChunk MCF_T T_ N1 Buffer1 where+    readChunks r = mcf_t_Chunks r+    writeChunks r io = do+        cs <- io+        return $ r { mcf_t_Chunks = cs }++instance Rec MCF_T where+    recGet bh = do a01 <- get bh; return $ MCF_T a01+    recPut bh r = do put bh $ mcf_t_Chunks r; return ()+    recSizeOf r = sum [ sizeOf $ mcf_t_Chunks r ]+    recView r = viewRecord (typeOf r) [ viewField "Chunks" (viewChunks $ mcf_t_Chunks r) ]+    recType r = 0+
+ src/OpenAFP/Prelude/Lookups.hs view
@@ -0,0 +1,216 @@+{-# OPTIONS -fglasgow-exts #-}++module OpenAFP.Prelude.Lookups where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals+import OpenAFP.Prelude.Instances+import qualified Data.Map as Map++descLookup :: ChunkType -> String+descLookup typ = Map.findWithDefault "(Unknown)" typ descMap++descMap :: Map.Map ChunkType String+descMap = Map.fromList+    [ (chunkTypeOf _MCF_T, "MCF Triplets")+    , (chunkTypeOf _CPI, "Code Page Index")+    , (chunkTypeOf _FNI, "Font Index")+    , (chunkTypeOf _CFI, "Coded Font Index")+    , (chunkTypeOf _MFC, "Medium Finishing Control")+    , (chunkTypeOf _TLE, "Tag Logical Element")+    , (chunkTypeOf _MCC, "Medium Copy Count")+    , (chunkTypeOf _FNM, "Font Patterns Map")+    , (chunkTypeOf _OBD, "Object Area Descriptor")+    , (chunkTypeOf _IID, "IM Image Input Descriptor (C)")+    , (chunkTypeOf _CPD, "Code Page Descriptor")+    , (chunkTypeOf _MDD, "Medium Descriptor")+    , (chunkTypeOf _FND, "Font Descriptor")+    , (chunkTypeOf _CDD, "Container Data Descriptor")+    , (chunkTypeOf _PTD1, "Presentation Text Descriptor Format-1 (C)")+    , (chunkTypeOf _PGD, "Page Descriptor")+    , (chunkTypeOf _GDD, "Graphics Data Descriptor")+    , (chunkTypeOf _FGD, "Form Environment Group Descriptor (O)")+    , (chunkTypeOf _DXD, "Data Map Transmission Subcase Descriptor")+    , (chunkTypeOf _LND, "Line Descriptor")+    , (chunkTypeOf _BDD, "Bar Code Data Descriptor")+    , (chunkTypeOf _IDD, "Image Data Descriptor")+    , (chunkTypeOf _IOC, "IM Image Output Control (C)")+    , (chunkTypeOf _CPC, "Code Page Control")+    , (chunkTypeOf _MMC, "Medium Modification Control")+    , (chunkTypeOf _FNC, "Font Control")+    , (chunkTypeOf _CFC, "Coded Font Control")+    , (chunkTypeOf _CTC, "Composed Text Control (O)")+    , (chunkTypeOf _PMC, "Page Modification Control")+    , (chunkTypeOf _BPS, "Begin Page Segment")+    , (chunkTypeOf _BCA, "Begin Color Attribute Table")+    , (chunkTypeOf _BII, "Begin IM Image (C)")+    , (chunkTypeOf _BCP, "Begin Code Page")+    , (chunkTypeOf _BFN, "Begin Font")+    , (chunkTypeOf _BCF, "Begin Coded Font")+    , (chunkTypeOf _BOC, "Begin Object Container")+    , (chunkTypeOf _BPT, "Begin Presentation Text Object")+    , (chunkTypeOf _BDI, "Begin Document Index")+    , (chunkTypeOf _BDT, "Begin Document")+    , (chunkTypeOf _BNG, "Begin Named Page Group")+    , (chunkTypeOf _BPG, "Begin Page")+    , (chunkTypeOf _BGR, "Begin Graphics Object")+    , (chunkTypeOf _BDG, "Begin Document Environment Group")+    , (chunkTypeOf _BFG, "Begin Form Environment Group (O)")+    , (chunkTypeOf _BRG, "Begin Resource Group")+    , (chunkTypeOf _BOG, "Begin Object Environment Group")+    , (chunkTypeOf _BAG, "Begin Active Environment Group")+    , (chunkTypeOf _BDM, "Begin Data Map")+    , (chunkTypeOf _BPM, "Begin Page Map")+    , (chunkTypeOf _BMM, "Begin Medium Map")+    , (chunkTypeOf _BFM, "Begin Form Map")+    , (chunkTypeOf _BR, "Begin Resource (R)")+    , (chunkTypeOf _BSG, "Begin Resource Environment Group")+    , (chunkTypeOf _BMO, "Begin Overlay")+    , (chunkTypeOf _BDX, "Begin Data Map Transmission Subcase")+    , (chunkTypeOf _BBC, "Begin Bar Code Object")+    , (chunkTypeOf _BIM, "Begin Image Object")+    , (chunkTypeOf _EPS, "End Page Segment")+    , (chunkTypeOf _ECA, "End Color Attribute Table")+    , (chunkTypeOf _EII, "End IM Image (C)")+    , (chunkTypeOf _ECP, "End Code Page")+    , (chunkTypeOf _EFN, "End Font")+    , (chunkTypeOf _ECF, "End Coded Font")+    , (chunkTypeOf _EOC, "End Object Container")+    , (chunkTypeOf _EPT, "End Presentation Text Object")+    , (chunkTypeOf _EDI, "End Document Index")+    , (chunkTypeOf _EDT, "End Document")+    , (chunkTypeOf _ENG, "End Named Page Group")+    , (chunkTypeOf _EPG, "End Page")+    , (chunkTypeOf _EGR, "End Graphics Object")+    , (chunkTypeOf _EDG, "End Document Environment Group")+    , (chunkTypeOf _EFG, "End Form Environment Group (O)")+    , (chunkTypeOf _ERG, "End Resource Group")+    , (chunkTypeOf _EOG, "End Object Environment Group")+    , (chunkTypeOf _EAG, "End Active Environment Group")+    , (chunkTypeOf _EDM, "End Data Map")+    , (chunkTypeOf _EPM, "End Page Map")+    , (chunkTypeOf _EMM, "End Medium Map")+    , (chunkTypeOf _EFM, "End Form Map")+    , (chunkTypeOf _ER, "End Resource (R)")+    , (chunkTypeOf _ESG, "End Resource Environment Group")+    , (chunkTypeOf _EMO, "End Overlay")+    , (chunkTypeOf _EDX, "End Data Map Transmission Subcase")+    , (chunkTypeOf _EBC, "End Bar Code Object")+    , (chunkTypeOf _EIM, "End Image Object")+    , (chunkTypeOf _LNC, "Line Descriptor Count")+    , (chunkTypeOf _MCA, "Map Color Attribute Table")+    , (chunkTypeOf _MMT, "Map Media Type")+    , (chunkTypeOf _FNN, "Font Names (Outline Fonts Only)")+    , (chunkTypeOf _MCF, "Map Coded Font")+    , (chunkTypeOf _MCD, "Map Container Data")+    , (chunkTypeOf _MPG, "Map Page")+    , (chunkTypeOf _MGO, "Map Graphics Object")+    , (chunkTypeOf _MDR, "Map Data Resource")+    , (chunkTypeOf _IMM, "Invoke Medium Map")+    , (chunkTypeOf _MPO, "Map Page Overlay")+    , (chunkTypeOf _MSU, "Map Suppression")+    , (chunkTypeOf _MBC, "Map Bar Code Object")+    , (chunkTypeOf _MIO, "Map Image Object")+    , (chunkTypeOf _OBP, "Object Area Position")+    , (chunkTypeOf _ICP, "IM Image Cell Position (C)")+    , (chunkTypeOf _FNP, "Font Position")+    , (chunkTypeOf _PGP1, "Page Position Format-1 (C)")+    , (chunkTypeOf _FNO, "Font Orientation")+    , (chunkTypeOf _IPS, "Include Page Segment")+    , (chunkTypeOf _IPG, "Include Page")+    , (chunkTypeOf _IOB, "Include Object")+    , (chunkTypeOf _IPO, "Include Page Overlay")+    , (chunkTypeOf _CAT, "Color Attribute Table")+    , (chunkTypeOf _MPS, "Map Page Segment")+    , (chunkTypeOf _MCF1, "Map Coded Font Format-1 (C)")+    , (chunkTypeOf _PTD, "Presentation Text Data Descriptor")+    , (chunkTypeOf _PGP, "Page Position")+    , (chunkTypeOf _MMO, "Map Medium Overlay")+    , (chunkTypeOf _PFC, "Presentation Fidelity Control")+    , (chunkTypeOf _IEL, "Index Element")+    , (chunkTypeOf _LLE, "Link Logical Element")+    , (chunkTypeOf _IRD, "IM Image Raster Data (C)")+    , (chunkTypeOf _FNG, "Font Patterns")+    , (chunkTypeOf _OCD, "Object Container Data")+    , (chunkTypeOf _PTX, "Presentation Text Data")+    , (chunkTypeOf _GAD, "Graphics Data")+    , (chunkTypeOf _BDA, "Bar Code Data")+    , (chunkTypeOf _NOP, "No Operation")+    , (chunkTypeOf _IPD, "Image Picture Data")+    , (chunkTypeOf _T_CGCSGI, "Coded Graphic Character Set Global ID")+    , (chunkTypeOf _T_FQN, "Fully Qualified Name")+    , (chunkTypeOf _T_MO, "Mapping Option")+    , (chunkTypeOf _T_OCL, "Object Classification")+    , (chunkTypeOf _T_MIS, "MO:DCA Interchange Set")+    , (chunkTypeOf _T_TO, "Text Orientation (R)")+    , (chunkTypeOf _T_FDS, "Font Descriptor Specification")+    , (chunkTypeOf _T_FCGCSGI, "Font Coded Graphic Character Set Global Identifier")+    , (chunkTypeOf _T_OFSS, "Object Function Set Specification")+    , (chunkTypeOf _T_ROT, "Resource Object Type (R)")+    , (chunkTypeOf _T_ERLI, "Extended Resource Local ID")+    , (chunkTypeOf _T_RLI, "Resource Local ID")+    , (chunkTypeOf _T_RSN, "Resource Section Number")+    , (chunkTypeOf _T_CR, "Character Rotation")+    , (chunkTypeOf _T_LDOPM, "Line Data Object Position Migration (R)")+    , (chunkTypeOf _T_OBO, "Object Byte Offset")+    , (chunkTypeOf _T_AV, "Attribute Value")+    , (chunkTypeOf _T_DP, "Descriptor Position")+    , (chunkTypeOf _T_MEC, "Media Eject Control")+    , (chunkTypeOf _T_POCP, "Page Overlay Conditional Processing")+    , (chunkTypeOf _T_RUA, "Resource Usage Attribute")+    , (chunkTypeOf _T_OAMU, "Object Area Measurement Units")+    , (chunkTypeOf _T_OAS, "Object Area Size")+    , (chunkTypeOf _T_AD, "Area Definition")+    , (chunkTypeOf _T_CS, "Color Specification")+    , (chunkTypeOf _T_ESI, "Encoding Scheme ID")+    , (chunkTypeOf _T_MMPN, "Medium Map Page Number")+    , (chunkTypeOf _T_OBE, "Object Byte Extent")+    , (chunkTypeOf _T_OSFO, "Object Structured Field Offset")+    , (chunkTypeOf _T_OSFE, "Object Structured Field Extent")+    , (chunkTypeOf _T_OO, "Object Offset")+    , (chunkTypeOf _T_FHSF, "Font Horizontal Scale Factor")+    , (chunkTypeOf _T_OCO, "Object Count")+    , (chunkTypeOf _T_LDTS, "Local Date and Time Stamp")+    , (chunkTypeOf _T_OCH, "Object Checksum (R)")+    , (chunkTypeOf _T_T1CRMT, "Type 1 - CRC Resource Management Triplet")+    , (chunkTypeOf _T_T2FRMT, "Type 2 - Font Resource Management Triplet")+    , (chunkTypeOf _T_OOI, "Object Origin Identifier (R)")+    , (chunkTypeOf _T_C, "Comment")+    , (chunkTypeOf _T_MOR, "Medium Orientation")+    , (chunkTypeOf _T_ROI, "Resource Object Include")+    , (chunkTypeOf _T_EF, "Extension Font")+    , (chunkTypeOf _T_PSRM, "Presentation Space Reset Mixing")+    , (chunkTypeOf _T_PSMR, "Presentation Space Mixing Rules")+    , (chunkTypeOf _T_UDTS, "Universal Date and Time Stamp")+    , (chunkTypeOf _T_II, "IMM Insertion (R)")+    , (chunkTypeOf _T_TS, "Toner Saver")+    , (chunkTypeOf _T_CF, "Color Fidelity")+    , (chunkTypeOf _T_FF, "Font Fidelity")+    , (chunkTypeOf _T_MA, "Metric Adjustment")+    , (chunkTypeOf _T_AQ, "Attribute Qualifier")+    , (chunkTypeOf _T_PPI, "Page Position Information")+    , (chunkTypeOf _T_PV, "Parameter Value")+    , (chunkTypeOf _T_PC, "Presentation Control")+    , (chunkTypeOf _T_FRMT, "Font Resolution and Metric Technology")+    , (chunkTypeOf _T_FO, "Finishing Operation")+    , (chunkTypeOf _T_MF, "Media Fidelity")+    , (chunkTypeOf _PTX_STC, "Set Text Color")+    , (chunkTypeOf _PTX_SIM, "Set Inline Margin")+    , (chunkTypeOf _PTX_SIA, "Set Intercharacter Adjustment")+    , (chunkTypeOf _PTX_SVI, "Set Variable-Space Character Increment")+    , (chunkTypeOf _PTX_AMI, "Absolute Move Inline")+    , (chunkTypeOf _PTX_RMI, "Relative Move Inline")+    , (chunkTypeOf _PTX_SBI, "Set Baseline Increment")+    , (chunkTypeOf _PTX_AMB, "Absolute Move Baseline")+    , (chunkTypeOf _PTX_RMB, "Relative Move Baseline")+    , (chunkTypeOf _PTX_BLN, "Begin Line Next")+    , (chunkTypeOf _PTX_DIR, "Draw I-Axis Rule")+    , (chunkTypeOf _PTX_DBR, "Draw B-Axis Rule")+    , (chunkTypeOf _PTX_RPS, "Repeat String")+    , (chunkTypeOf _PTX_SCFL, "Set Coded Font Local")+    , (chunkTypeOf _PTX_BSU, "Begin Suppression")+    , (chunkTypeOf _PTX_ESU, "Begin Suppression")+    , (chunkTypeOf _PTX_STO, "Set Text Orientation")+    , (chunkTypeOf _PTX_NOP, "No Operation")+    , (chunkTypeOf _PTX_TRN, "Transparent Data")+    ]
+ src/OpenAFP/Prelude/Utils.hs view
@@ -0,0 +1,201 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Prelude.Utils+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module provides various AFP manipulation utilities.+--+-----------------------------------------------------------------------------++module OpenAFP.Prelude.Utils where+import OpenAFP.Types+import OpenAFP.Records+import OpenAFP.Internals++infixl 5 $$+infixl 5 $=+infixl 5 +=+infixl 5 %?+infixl 5 %:+infixl 5 @=+infixl 5 %=+infixl 5 %%=++readVar l = do+    vars <- ask+    liftIO $ readIORef $ l vars++readArray l i = do+    vars <- ask+    liftIO $ readIOArray (l vars) i++l $$ s = do+    vars    <- ask+    when (l vars) $ do+        liftIO . putStrLn $ "*** " ++ s++l $= f = \v -> do+    vars    <- ask+    liftIO $ writeIORef (l vars) (f v)+    return ()+l += f = \v -> do+    vars    <- ask+    v'      <- liftIO $ readIORef (l vars)+    liftIO $ writeIORef (l vars) (f v + v')+    return ()+l @= v = do+    vars    <- ask+    v'      <- liftIO $ readIORef (l vars)+    liftIO $ writeIORef (l vars) (v : v')+    return ()+l %= (k, v) = do+    vars    <- ask+    liftIO $ hashInsert (l vars) k v+    return ()+l %? k = do+    vars    <- ask+    liftIO $ hashLookup (l vars) k+l %: k = return . fromJust'' =<< (l %? k)++l %%= kvList = do+    vars    <- ask+    liftIO $ mapM_ (\(k, v) -> writeIOArray (l vars) k v) kvList++applyToChunk :: (Rec a, ChunkBuf c n b) => (a -> x) -> c -> IOm x+applyToChunk f c = return . f . fromRecord =<< (liftIO . chunkToRecord) c++withChunk :: (ChunkBuf a n b, MonadIO m) => a -> (forall r. (Rec r) => r -> m x) -> m x+withChunk c = chunkApply (fst . chunkDecon $ c) c++splitRecords :: (ChunkBuf c n b, Typeable t) => t -> [c] -> [[c]]+splitRecords t = groupBy (const $ not . (~~ t))++findRecord :: (a -> Bool) -> [Record a] -> a+findRecord f = fromRecord . fromJust' . find (f . fromRecord)++fromJust' (Just x) = x+fromJust' Nothing = error "fromJust1 - fail"++fromJust'' (Just x) = x+fromJust'' Nothing = error "fromJust2 - fail"++matchRecord :: (RecData a b, Eq c) => c -> (b -> c) -> a -> b+matchRecord n f = findRecord ((n ==) . f) . readData++matchRecordMaybe :: (RecData a b, Eq c) => c -> (b -> c) -> a -> Maybe b+matchRecordMaybe n f = findRecordMaybe ((n ==) . f) . readData++findRecordMaybe :: (a -> Bool) -> [Record a] -> Maybe a+findRecordMaybe f = maybe Nothing (Just . fromRecord) . find (f . fromRecord)++fromA :: (Binary a, Storable a) => a -> IOm String+fromA item = liftIO $ do+    bh  <- newBinBuf (sizeOf item)+    put bh item+    seekBin bh 0+    return . trim =<< fromAStr =<< get bh++trim :: String -> String+trim = takeWhile $ not . isSpace++catBuf :: (Buf a) => a -> a -> IOm a+catBuf b1 b2 = liftIO $ do+    pstr    <- mallocForeignPtrBytes len+    withForeignPtr pstr $ \cstr -> do+        when (l1 > 0) $+            withForeignPtr p1 $ \c1 -> copyBytes cstr c1 l1+        when (l2 > 0) $+            withForeignPtr p2 $ \c2 -> copyBytes (plusPtr cstr l1) c2 l2+    return $ bufFromPStrLen (pstr, len)+    where+    len      = l1 + l2+    (p1, l1) = bufToPStrLen b1+    (p2, l2) = bufToPStrLen b2++subBuf :: (Buf a, Integral b, Integral c) => a -> b -> c -> IOm a+subBuf buf pos len = liftIO $ do+    withForeignPtr pstr $ \cstr -> do+        pstr' <- newForeignPtr_ (plusPtr cstr $ fromEnum pos)+        addFinalizer pstr' $ touchForeignPtr pstr -- ???+        return $ bufFromPStrLen (pstr', fromEnum len)+    where+    (pstr, _) = bufToPStrLen buf -- XXX - check size bounds?++subBufs :: (Buf a, Integral b, Integral c) => [a] -> b -> c -> IOm a+subBufs (b:bs) pos len = do+    if (pos <= len') then+        subBuf b pos len+        else+        subBufs bs (pos - len') len+    where+    len' = toEnum $ snd $ bufToPStrLen b -- XXX - check size bounds?++showBitmap :: (Integral i, Show a) => [a] -> i -> IOm ()+showBitmap [] _ = return ()+showBitmap bitmap n = do+    liftIO $ putStrLn . concatMap hex2bin . concatMap show $ genericTake n bitmap+    showBitmap (genericDrop n bitmap) n++hex2bin '0' = "...."+hex2bin '1' = "...@"+hex2bin '2' = "..@."+hex2bin '3' = "..@@"+hex2bin '4' = ".@.."+hex2bin '5' = ".@.@"+hex2bin '6' = ".@@."+hex2bin '7' = ".@@@"+hex2bin '8' = "@..."+hex2bin '9' = "@..@"+hex2bin 'A' = "@.@."+hex2bin 'B' = "@.@@"+hex2bin 'C' = "@@.."+hex2bin 'D' = "@@.@"+hex2bin 'E' = "@@@."+hex2bin 'F' = "@@@@"++fromA8 :: A8 -> String+fromA8 w = [+    (ebc2asc ! fromIntegral (w `shiftR` 56)),+    (ebc2asc ! fromIntegral ((w `shiftR` 48) .&. 0xff)),+    (ebc2asc ! fromIntegral ((w `shiftR` 40) .&. 0xff)),+    (ebc2asc ! fromIntegral ((w `shiftR` 32) .&. 0xff)),+    (ebc2asc ! fromIntegral ((w `shiftR` 24) .&. 0xff)),+    (ebc2asc ! fromIntegral ((w `shiftR` 16) .&. 0xff)),+    (ebc2asc ! fromIntegral ((w `shiftR` 8)  .&. 0xff)),+    (ebc2asc ! fromIntegral (w .&. 0xff))+    ]++warn :: String -> IOm ()+warn [] = return ()+warn s  = liftIO $ do+    hPutStrLn stderr $ "*** Warning: " ++ s++die :: String -> IOm a+die s = liftIO $ do+    hPutStrLn stderr $ "*** Error: " ++ s+    exitFailure++reqArg a b c d e = Option a b (ReqArg e c) d+noArg  a b c d   = Option a b (NoArg d) c++showUsage options info arg = do+    prg <- getProgName+    let banner = (`usageInfo` options) $+                 info prg ++ "\n\n" +++                 "Options:"+    if (null arg) then do+        putStrLn banner+        exitWith ExitSuccess+        else die $ arg ++ "\n\n" ++ banner++requiredOpt :: (String -> IO a) -> String -> a+requiredOpt usage r = unsafePerformIO $ do+    usage $ "missing argument: --" ++ r+
+ src/OpenAFP/Records.hs view
@@ -0,0 +1,329 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Records+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module imports and re-exports various AFP data structures, and+-- implements an additional "Unknown" type for data without corresponding+-- structures.+--+-----------------------------------------------------------------------------++module OpenAFP.Records (+    module OpenAFP.Records.AFP,+    module OpenAFP.Records.PTX,+    module OpenAFP.Records.MCF,+    module OpenAFP.Records.T,+    AFP_(..),+    Unknown(..), _Unknown,++    lookupAFP, lookupMCF, lookupPTX, lookupT,+) where +import OpenAFP.Types+import OpenAFP.Internals+import OpenAFP.Records.AFP+import OpenAFP.Records.PTX+import OpenAFP.Records.MCF+import OpenAFP.Records.T++---[ Unknown ]--------------------------------------------------++newtype Unknown = Unknown NStr+    deriving (Show, Typeable)++instance Rec Unknown where+    recGet bh = get bh >>= return . Unknown+    recPut bh (Unknown r) = put bh r+    recSizeOf (Unknown r) = sizeOf r+    recView (Unknown r) = viewRecord (typeOf _Unknown) [ viewField "" (viewNStr r) ]++instance Binary Unknown where+    get bh = return $ Unknown $ bufFromPStrLen (bufOf bh)+    put bh (Unknown buf) = putBuf bh $ bufToPStrLen buf++_Unknown = Unknown _NStr++---[ AFP ]-----------------------------------------------------++newtype AFP_ = AFP_ (N3, Buffer2) deriving (Show, Typeable)++instance Binary AFP_ where+    put bh (AFP_ (_, buf)) = do+        put bh ('\x5A', buf)+    get bh = do+        getByte bh+	get' AFP_ bh++lookupMCF :: MCF_ -> N0 -> ChunkType+lookupMCF _ _ = chunkTypeOf _MCF_T    -- MCF Triplets++lookupAFP :: AFP_ -> N3 -> ChunkType+lookupAFP _ x = case x of+    0xD38C87 -> chunkTypeOf _CPI      -- Code Page Index+    0xD38C89 -> chunkTypeOf _FNI      -- Font Index+    0xD38C8A -> chunkTypeOf _CFI      -- Coded Font Index+    0xD3A088 -> chunkTypeOf _MFC      -- Medium Finishing Control+    0xD3A090 -> chunkTypeOf _TLE      -- Tag Logical Element+    0xD3A288 -> chunkTypeOf _MCC      -- Medium Copy Count+    0xD3A289 -> chunkTypeOf _FNM      -- Font Patterns Map+    0xD3A66B -> chunkTypeOf _OBD      -- Object Area Descriptor+    0xD3A67B -> chunkTypeOf _IID      -- IM Image Input Descriptor (C)+    0xD3A687 -> chunkTypeOf _CPD      -- Code Page Descriptor+    0xD3A688 -> chunkTypeOf _MDD      -- Medium Descriptor+    0xD3A689 -> chunkTypeOf _FND      -- Font Descriptor+    0xD3A692 -> chunkTypeOf _CDD      -- Container Data Descriptor+    0xD3A69B -> chunkTypeOf _PTD1     -- Presentation Text Descriptor Format-1 (C)+    0xD3A6AF -> chunkTypeOf _PGD      -- Page Descriptor+    0xD3A6BB -> chunkTypeOf _GDD      -- Graphics Data Descriptor+    0xD3A6C5 -> chunkTypeOf _FGD      -- Form Environment Group Descriptor (O)+    0xD3A6E3 -> chunkTypeOf _DXD      -- Data Map Transmission Subcase Descriptor+    0xD3A6E7 -> chunkTypeOf _LND      -- Line Descriptor+    0xD3A6EB -> chunkTypeOf _BDD      -- Bar Code Data Descriptor+    0xD3A6FB -> chunkTypeOf _IDD      -- Image Data Descriptor+    0xD3A77B -> chunkTypeOf _IOC      -- IM Image Output Control (C)+    0xD3A787 -> chunkTypeOf _CPC      -- Code Page Control+    0xD3A788 -> chunkTypeOf _MMC      -- Medium Modification Control+    0xD3A789 -> chunkTypeOf _FNC      -- Font Control+    0xD3A78A -> chunkTypeOf _CFC      -- Coded Font Control+    0xD3A79B -> chunkTypeOf _CTC      -- Composed Text Control (O)+    0xD3A7AF -> chunkTypeOf _PMC      -- Page Modification Control+    0xD3A85F -> chunkTypeOf _BPS      -- Begin Page Segment+    0xD3A877 -> chunkTypeOf _BCA      -- Begin Color Attribute Table+    0xD3A87B -> chunkTypeOf _BII      -- Begin IM Image (C)+    0xD3A887 -> chunkTypeOf _BCP      -- Begin Code Page+    0xD3A889 -> chunkTypeOf _BFN      -- Begin Font+    0xD3A88A -> chunkTypeOf _BCF      -- Begin Coded Font+    0xD3A892 -> chunkTypeOf _BOC      -- Begin Object Container+    0xD3A89B -> chunkTypeOf _BPT      -- Begin Presentation Text Object+    0xD3A8A7 -> chunkTypeOf _BDI      -- Begin Document Index+    0xD3A8A8 -> chunkTypeOf _BDT      -- Begin Document+    0xD3A8AD -> chunkTypeOf _BNG      -- Begin Named Page Group+    0xD3A8AF -> chunkTypeOf _BPG      -- Begin Page+    0xD3A8BB -> chunkTypeOf _BGR      -- Begin Graphics Object+    0xD3A8C4 -> chunkTypeOf _BDG      -- Begin Document Environment Group+    0xD3A8C5 -> chunkTypeOf _BFG      -- Begin Form Environment Group (O)+    0xD3A8C6 -> chunkTypeOf _BRG      -- Begin Resource Group+    0xD3A8C7 -> chunkTypeOf _BOG      -- Begin Object Environment Group+    0xD3A8C9 -> chunkTypeOf _BAG      -- Begin Active Environment Group+    0xD3A8CA -> chunkTypeOf _BDM      -- Begin Data Map+    0xD3A8CB -> chunkTypeOf _BPM      -- Begin Page Map+    0xD3A8CC -> chunkTypeOf _BMM      -- Begin Medium Map+    0xD3A8CD -> chunkTypeOf _BFM      -- Begin Form Map+    0xD3A8CE -> chunkTypeOf _BR       -- Begin Resource (R)+    0xD3A8D9 -> chunkTypeOf _BSG      -- Begin Resource Environment Group+    0xD3A8DF -> chunkTypeOf _BMO      -- Begin Overlay+    0xD3A8E3 -> chunkTypeOf _BDX      -- Begin Data Map Transmission Subcase+    0xD3A8EB -> chunkTypeOf _BBC      -- Begin Bar Code Object+    0xD3A8FB -> chunkTypeOf _BIM      -- Begin Image Object+    0xD3A95F -> chunkTypeOf _EPS      -- End Page Segment+    0xD3A977 -> chunkTypeOf _ECA      -- End Color Attribute Table+    0xD3A97B -> chunkTypeOf _EII      -- End IM Image (C)+    0xD3A987 -> chunkTypeOf _ECP      -- End Code Page+    0xD3A989 -> chunkTypeOf _EFN      -- End Font+    0xD3A98A -> chunkTypeOf _ECF      -- End Coded Font+    0xD3A992 -> chunkTypeOf _EOC      -- End Object Container+    0xD3A99B -> chunkTypeOf _EPT      -- End Presentation Text Object+    0xD3A9A7 -> chunkTypeOf _EDI      -- End Document Index+    0xD3A9A8 -> chunkTypeOf _EDT      -- End Document+    0xD3A9AD -> chunkTypeOf _ENG      -- End Named Page Group+    0xD3A9AF -> chunkTypeOf _EPG      -- End Page+    0xD3A9BB -> chunkTypeOf _EGR      -- End Graphics Object+    0xD3A9C4 -> chunkTypeOf _EDG      -- End Document Environment Group+    0xD3A9C5 -> chunkTypeOf _EFG      -- End Form Environment Group (O)+    0xD3A9C6 -> chunkTypeOf _ERG      -- End Resource Group+    0xD3A9C7 -> chunkTypeOf _EOG      -- End Object Environment Group+    0xD3A9C9 -> chunkTypeOf _EAG      -- End Active Environment Group+    0xD3A9CA -> chunkTypeOf _EDM      -- End Data Map+    0xD3A9CB -> chunkTypeOf _EPM      -- End Page Map+    0xD3A9CC -> chunkTypeOf _EMM      -- End Medium Map+    0xD3A9CD -> chunkTypeOf _EFM      -- End Form Map+    0xD3A9CE -> chunkTypeOf _ER       -- End Resource (R)+    0xD3A9D9 -> chunkTypeOf _ESG      -- End Resource Environment Group+    0xD3A9DF -> chunkTypeOf _EMO      -- End Overlay+    0xD3A9E3 -> chunkTypeOf _EDX      -- End Data Map Transmission Subcase+    0xD3A9EB -> chunkTypeOf _EBC      -- End Bar Code Object+    0xD3A9FB -> chunkTypeOf _EIM      -- End Image Object+    0xD3AAE7 -> chunkTypeOf _LNC      -- Line Descriptor Count+    0xD3AB77 -> chunkTypeOf _MCA      -- Map Color Attribute Table+    0xD3AB88 -> chunkTypeOf _MMT      -- Map Media Type+    0xD3AB89 -> chunkTypeOf _FNN      -- Font Names (Outline Fonts Only)+    0xD3AB8A -> chunkTypeOf _MCF      -- Map Coded Font+    0xD3AB92 -> chunkTypeOf _MCD      -- Map Container Data+    0xD3ABAF -> chunkTypeOf _MPG      -- Map Page+    0xD3ABBB -> chunkTypeOf _MGO      -- Map Graphics Object+    0xD3ABC3 -> chunkTypeOf _MDR      -- Map Data Resource+    0xD3ABCC -> chunkTypeOf _IMM      -- Invoke Medium Map+    0xD3ABD8 -> chunkTypeOf _MPO      -- Map Page Overlay+    0xD3ABEA -> chunkTypeOf _MSU      -- Map Suppression+    0xD3ABEB -> chunkTypeOf _MBC      -- Map Bar Code Object+    0xD3ABFB -> chunkTypeOf _MIO      -- Map Image Object+    0xD3AC6B -> chunkTypeOf _OBP      -- Object Area Position+    0xD3AC7B -> chunkTypeOf _ICP      -- IM Image Cell Position (C)+    0xD3AC89 -> chunkTypeOf _FNP      -- Font Position+    0xD3ACAF -> chunkTypeOf _PGP1     -- Page Position Format-1 (C)+    0xD3AE89 -> chunkTypeOf _FNO      -- Font Orientation+    0xD3AF5F -> chunkTypeOf _IPS      -- Include Page Segment+    0xD3AFAF -> chunkTypeOf _IPG      -- Include Page+    0xD3AFC3 -> chunkTypeOf _IOB      -- Include Object+    0xD3AFD8 -> chunkTypeOf _IPO      -- Include Page Overlay+    0xD3B077 -> chunkTypeOf _CAT      -- Color Attribute Table+    0xD3B15F -> chunkTypeOf _MPS      -- Map Page Segment+    0xD3B18A -> chunkTypeOf _MCF1     -- Map Coded Font Format-1 (C)+    0xD3B19B -> chunkTypeOf _PTD      -- Presentation Text Data Descriptor+    0xD3B1AF -> chunkTypeOf _PGP      -- Page Position+    0xD3B1DF -> chunkTypeOf _MMO      -- Map Medium Overlay+    0xD3B288 -> chunkTypeOf _PFC      -- Presentation Fidelity Control+    0xD3B2A7 -> chunkTypeOf _IEL      -- Index Element+    0xD3B490 -> chunkTypeOf _LLE      -- Link Logical Element+    0xD3EE7B -> chunkTypeOf _IRD      -- IM Image Raster Data (C)+    0xD3EE89 -> chunkTypeOf _FNG      -- Font Patterns+    0xD3EE92 -> chunkTypeOf _OCD      -- Object Container Data+    0xD3EE9B -> chunkTypeOf _PTX      -- Presentation Text Data+    0xD3EEBB -> chunkTypeOf _GAD      -- Graphics Data+    0xD3EEEB -> chunkTypeOf _BDA      -- Bar Code Data+    0xD3EEEE -> chunkTypeOf _NOP      -- No Operation+    0xD3EEFB -> chunkTypeOf _IPD      -- Image Picture Data+    _        -> chunkTypeOf _Unknown+++---[ Triplets ]-------------------------------------------------++lookupT :: T_ -> N1 -> ChunkType+lookupT _ x = case x of+    0x01 -> chunkTypeOf _T_CGCSGI    -- Coded Graphic Character Set Global ID+    0x02 -> chunkTypeOf _T_FQN       -- Fully Qualified Name+    0x04 -> chunkTypeOf _T_MO        -- Mapping Option+    0x10 -> chunkTypeOf _T_OCL       -- Object Classification+    0x18 -> chunkTypeOf _T_MIS       -- MO:DCA Interchange Set+    0x1D -> chunkTypeOf _T_TO        -- Text Orientation (R)+    0x1F -> chunkTypeOf _T_FDS       -- Font Descriptor Specification+    0x20 -> chunkTypeOf _T_FCGCSGI   -- Font Coded Graphic Character Set Global Identifier+    0x21 -> chunkTypeOf _T_OFSS      -- Object Function Set Specification+    0x22 -> chunkTypeOf _T_ROT       -- Resource Object Type (R)+    0x23 -> chunkTypeOf _T_ERLI      -- Extended Resource Local ID+    0x24 -> chunkTypeOf _T_RLI       -- Resource Local ID+    0x25 -> chunkTypeOf _T_RSN       -- Resource Section Number+    0x26 -> chunkTypeOf _T_CR        -- Character Rotation+    0x27 -> chunkTypeOf _T_LDOPM     -- Line Data Object Position Migration (R)+    0x2D -> chunkTypeOf _T_OBO       -- Object Byte Offset+    0x36 -> chunkTypeOf _T_AV        -- Attribute Value+    0x43 -> chunkTypeOf _T_DP        -- Descriptor Position+    0x45 -> chunkTypeOf _T_MEC       -- Media Eject Control+    0x46 -> chunkTypeOf _T_POCP      -- Page Overlay Conditional Processing+    0x47 -> chunkTypeOf _T_RUA       -- Resource Usage Attribute+    0x4B -> chunkTypeOf _T_OAMU      -- Object Area Measurement Units+    0x4C -> chunkTypeOf _T_OAS       -- Object Area Size+    0x4D -> chunkTypeOf _T_AD        -- Area Definition+    0x4E -> chunkTypeOf _T_CS        -- Color Specification+    0x50 -> chunkTypeOf _T_ESI       -- Encoding Scheme ID+    0x56 -> chunkTypeOf _T_MMPN      -- Medium Map Page Number+    0x57 -> chunkTypeOf _T_OBE       -- Object Byte Extent+    0x58 -> chunkTypeOf _T_OSFO      -- Object Structured Field Offset+    0x59 -> chunkTypeOf _T_OSFE      -- Object Structured Field Extent+    0x5A -> chunkTypeOf _T_OO        -- Object Offset+    0x5D -> chunkTypeOf _T_FHSF      -- Font Horizontal Scale Factor+    0x5E -> chunkTypeOf _T_OCO       -- Object Count+    0x62 -> chunkTypeOf _T_LDTS      -- Local Date and Time Stamp+    0x63 -> chunkTypeOf _T_OCH       -- Object Checksum (R)+--  0x63 -> chunkTypeOf _T_T1CRMT    -- Type 1 - CRC Resource Management Triplet+--  0x63 -> chunkTypeOf _T_T2FRMT    -- Type 2 - Font Resource Management Triplet+    0x64 -> chunkTypeOf _T_OOI       -- Object Origin Identifier (R)+    0x65 -> chunkTypeOf _T_C         -- Comment+    0x68 -> chunkTypeOf _T_MOR       -- Medium Orientation+    0x6C -> chunkTypeOf _T_ROI       -- Resource Object Include+    0x6D -> chunkTypeOf _T_EF        -- Extension Font+    0x70 -> chunkTypeOf _T_PSRM      -- Presentation Space Reset Mixing+    0x71 -> chunkTypeOf _T_PSMR      -- Presentation Space Mixing Rules+    0x72 -> chunkTypeOf _T_UDTS      -- Universal Date and Time Stamp+    0x73 -> chunkTypeOf _T_II        -- IMM Insertion (R)+    0x74 -> chunkTypeOf _T_TS        -- Toner Saver+    0x75 -> chunkTypeOf _T_CF        -- Color Fidelity+    0x78 -> chunkTypeOf _T_FF        -- Font Fidelity+    0x79 -> chunkTypeOf _T_MA        -- Metric Adjustment+    0x80 -> chunkTypeOf _T_AQ        -- Attribute Qualifier+    0x81 -> chunkTypeOf _T_PPI       -- Page Position Information+    0x82 -> chunkTypeOf _T_PV        -- Parameter Value+    0x83 -> chunkTypeOf _T_PC        -- Presentation Control+    0x84 -> chunkTypeOf _T_FRMT      -- Font Resolution and Metric Technology+    0x85 -> chunkTypeOf _T_FO        -- Finishing Operation+    0x87 -> chunkTypeOf _T_MF        -- Media Fidelity+    _    -> chunkTypeOf _Unknown++---[ PTX ]------------------------------------------------------++lookupPTX :: PTX_ -> N1 -> ChunkType+lookupPTX _ x = case x of+    0x74 -> chunkTypeOf _PTX_STC      -- Set Text Color+    0x75 -> chunkTypeOf _PTX_STC+    0xC0 -> chunkTypeOf _PTX_SIM      -- Set Inline Margin+    0xC1 -> chunkTypeOf _PTX_SIM+    0xC2 -> chunkTypeOf _PTX_SIA      -- Set Intercharacter Adjustment+    0xC3 -> chunkTypeOf _PTX_SIA+    0xC4 -> chunkTypeOf _PTX_SVI      -- Set Variable-Space Character Increment+    0xC5 -> chunkTypeOf _PTX_SVI+    0xC6 -> chunkTypeOf _PTX_AMI      -- Absolute Move Inline+    0xC7 -> chunkTypeOf _PTX_AMI+    0xC8 -> chunkTypeOf _PTX_RMI      -- Relative Move Inline+    0xC9 -> chunkTypeOf _PTX_RMI+    0xD0 -> chunkTypeOf _PTX_SBI      -- Set Baseline Increment+    0xD1 -> chunkTypeOf _PTX_SBI+    0xD2 -> chunkTypeOf _PTX_AMB      -- Absolute Move Baseline+    0xD3 -> chunkTypeOf _PTX_AMB+    0xD4 -> chunkTypeOf _PTX_RMB      -- Relative Move Baseline+    0xD5 -> chunkTypeOf _PTX_RMB+    0xD8 -> chunkTypeOf _PTX_BLN      -- Begin Line Next+    0xD9 -> chunkTypeOf _PTX_BLN+    0xE4 -> chunkTypeOf _PTX_DIR      -- Draw I-Axis Rule+    0xE5 -> chunkTypeOf _PTX_DIR+    0xE6 -> chunkTypeOf _PTX_DBR      -- Draw B-Axis Rule+    0xE7 -> chunkTypeOf _PTX_DBR+    0xEE -> chunkTypeOf _PTX_RPS      -- Repeat String+    0xEF -> chunkTypeOf _PTX_RPS+    0xF0 -> chunkTypeOf _PTX_SCFL     -- Set Coded Font Local+    0xF1 -> chunkTypeOf _PTX_SCFL+    0xF2 -> chunkTypeOf _PTX_BSU      -- Begin Suppression+    0xF3 -> chunkTypeOf _PTX_BSU+    0xF4 -> chunkTypeOf _PTX_ESU      -- Begin Suppression+    0xF5 -> chunkTypeOf _PTX_ESU+    0xF6 -> chunkTypeOf _PTX_STO      -- Set Text Orientation+    0xF7 -> chunkTypeOf _PTX_STO+    0xF8 -> chunkTypeOf _PTX_NOP      -- No Operation+    0xF9 -> chunkTypeOf _PTX_NOP+    0xDA -> chunkTypeOf _PTX_TRN      -- Transparent Data+    0xDB -> chunkTypeOf _PTX_TRN+    _    -> chunkTypeOf _Unknown++-- XXX -- refactor it back to class+get' :: (Binary t, Buf b, Binary b) => ((t, b) -> c) -> BinHandle -> IO c+get' constr bh = do+    buf     <- get bh+    buftype <- getBufType buf+    let chunk = constr (buftype, buf)+    let (pstr, len) = bufToPStrLen buf+    addFinalizer chunk $ touchForeignPtr pstr+    return chunk++getBufType buf = do+    bh <- openBinBuf $ bufToPStrLen buf+    get bh++instance Binary PTX_ where+    put bh (PTX_ (_, buf)) = put bh buf+    get = get' PTX_++instance Binary MCF_ where+    put bh (MCF_ (_, buf)) = put bh buf+    get bh = do+        buf     <- get bh+        return $ MCF_ (N0 (), buf)++instance Binary T_ where+    put bh (T_ (_, buf)) = put bh buf+    get = get' T_
+ src/OpenAFP/Records/AFP.hs view
@@ -0,0 +1,516 @@+module OpenAFP.Records.AFP (+    module OpenAFP.Records.AFP.BAG, _BAG,+    module OpenAFP.Records.AFP.BBC, _BBC,+    module OpenAFP.Records.AFP.BCA, _BCA,+    module OpenAFP.Records.AFP.BCF, _BCF,+    module OpenAFP.Records.AFP.BCP, _BCP,+    module OpenAFP.Records.AFP.BDA, _BDA,+    module OpenAFP.Records.AFP.BDD, _BDD,+    module OpenAFP.Records.AFP.BDG, _BDG,+    module OpenAFP.Records.AFP.BDI, _BDI,+    module OpenAFP.Records.AFP.BDM, _BDM,+    module OpenAFP.Records.AFP.BDT, _BDT,+    module OpenAFP.Records.AFP.BDX, _BDX,+    module OpenAFP.Records.AFP.BFG, _BFG,+    module OpenAFP.Records.AFP.BFM, _BFM,+    module OpenAFP.Records.AFP.BFN, _BFN,+    module OpenAFP.Records.AFP.BGR, _BGR,+    module OpenAFP.Records.AFP.BII, _BII,+    module OpenAFP.Records.AFP.BIM, _BIM,+    module OpenAFP.Records.AFP.BMM, _BMM,+    module OpenAFP.Records.AFP.BMO, _BMO,+    module OpenAFP.Records.AFP.BNG, _BNG,+    module OpenAFP.Records.AFP.BOC, _BOC,+    module OpenAFP.Records.AFP.BOG, _BOG,+    module OpenAFP.Records.AFP.BPG, _BPG,+    module OpenAFP.Records.AFP.BPM, _BPM,+    module OpenAFP.Records.AFP.BPS, _BPS,+    module OpenAFP.Records.AFP.BPT, _BPT,+    module OpenAFP.Records.AFP.BR, _BR,+    module OpenAFP.Records.AFP.BRG, _BRG,+    module OpenAFP.Records.AFP.BSG, _BSG,+    module OpenAFP.Records.AFP.CAT, _CAT,+    module OpenAFP.Records.AFP.CDD, _CDD,+    module OpenAFP.Records.AFP.CFC, _CFC,+    module OpenAFP.Records.AFP.CFI, _CFI,+    _CFI_Data,+    module OpenAFP.Records.AFP.CPC, _CPC,+    module OpenAFP.Records.AFP.CPD, _CPD,+    module OpenAFP.Records.AFP.CPI, _CPI,+    _CPI_Data,+    module OpenAFP.Records.AFP.CTC, _CTC,+    module OpenAFP.Records.AFP.DXD, _DXD,+    module OpenAFP.Records.AFP.EAG, _EAG,+    module OpenAFP.Records.AFP.EBC, _EBC,+    module OpenAFP.Records.AFP.ECA, _ECA,+    module OpenAFP.Records.AFP.ECF, _ECF,+    module OpenAFP.Records.AFP.ECP, _ECP,+    module OpenAFP.Records.AFP.EDG, _EDG,+    module OpenAFP.Records.AFP.EDI, _EDI,+    module OpenAFP.Records.AFP.EDM, _EDM,+    module OpenAFP.Records.AFP.EDT, _EDT,+    module OpenAFP.Records.AFP.EDX, _EDX,+    module OpenAFP.Records.AFP.EFG, _EFG,+    module OpenAFP.Records.AFP.EFM, _EFM,+    module OpenAFP.Records.AFP.EFN, _EFN,+    module OpenAFP.Records.AFP.EGR, _EGR,+    module OpenAFP.Records.AFP.EII, _EII,+    module OpenAFP.Records.AFP.EIM, _EIM,+    module OpenAFP.Records.AFP.EMM, _EMM,+    module OpenAFP.Records.AFP.EMO, _EMO,+    module OpenAFP.Records.AFP.ENG, _ENG,+    module OpenAFP.Records.AFP.EOC, _EOC,+    module OpenAFP.Records.AFP.EOG, _EOG,+    module OpenAFP.Records.AFP.EPG, _EPG,+    module OpenAFP.Records.AFP.EPM, _EPM,+    module OpenAFP.Records.AFP.EPS, _EPS,+    module OpenAFP.Records.AFP.EPT, _EPT,+    module OpenAFP.Records.AFP.ER, _ER,+    module OpenAFP.Records.AFP.ERG, _ERG,+    module OpenAFP.Records.AFP.ESG, _ESG,+    module OpenAFP.Records.AFP.FGD, _FGD,+    module OpenAFP.Records.AFP.FNC, _FNC,+    module OpenAFP.Records.AFP.FND, _FND,+    module OpenAFP.Records.AFP.FNG, _FNG,+    module OpenAFP.Records.AFP.FNI, _FNI,+    _FNI_Data,+    module OpenAFP.Records.AFP.FNM, _FNM,+    _FNM_Data,+    module OpenAFP.Records.AFP.FNN, _FNN,+    module OpenAFP.Records.AFP.FNO, _FNO,+    module OpenAFP.Records.AFP.FNP, _FNP,+    module OpenAFP.Records.AFP.GAD, _GAD,+    module OpenAFP.Records.AFP.GDD, _GDD,+    module OpenAFP.Records.AFP.ICP, _ICP,+    module OpenAFP.Records.AFP.IDD, _IDD,+    module OpenAFP.Records.AFP.IEL, _IEL,+    module OpenAFP.Records.AFP.IID, _IID,+    module OpenAFP.Records.AFP.IMM, _IMM,+    module OpenAFP.Records.AFP.IOB, _IOB,+    module OpenAFP.Records.AFP.IOC, _IOC,+    module OpenAFP.Records.AFP.IPD, _IPD,+    module OpenAFP.Records.AFP.IPG, _IPG,+    module OpenAFP.Records.AFP.IPO, _IPO,+    module OpenAFP.Records.AFP.IPS, _IPS,+    module OpenAFP.Records.AFP.IRD, _IRD,+    module OpenAFP.Records.AFP.LLE, _LLE,+    module OpenAFP.Records.AFP.LNC, _LNC,+    module OpenAFP.Records.AFP.LND, _LND,+    module OpenAFP.Records.AFP.MBC, _MBC,+    module OpenAFP.Records.AFP.MCA, _MCA,+    module OpenAFP.Records.AFP.MCC, _MCC,+    module OpenAFP.Records.AFP.MCD, _MCD,+    module OpenAFP.Records.AFP.MCF, _MCF,+    module OpenAFP.Records.AFP.MCF1, _MCF1,+    _MCF1_Data,+    module OpenAFP.Records.AFP.MDD, _MDD,+    module OpenAFP.Records.AFP.MDR, _MDR,+    module OpenAFP.Records.AFP.MFC, _MFC,+    module OpenAFP.Records.AFP.MGO, _MGO,+    module OpenAFP.Records.AFP.MIO, _MIO,+    module OpenAFP.Records.AFP.MMC, _MMC,+    module OpenAFP.Records.AFP.MMO, _MMO,+    module OpenAFP.Records.AFP.MMT, _MMT,+    module OpenAFP.Records.AFP.MPG, _MPG,+    module OpenAFP.Records.AFP.MPO, _MPO,+    module OpenAFP.Records.AFP.MPS, _MPS,+    module OpenAFP.Records.AFP.MSU, _MSU,+    module OpenAFP.Records.AFP.NOP, _NOP,+    module OpenAFP.Records.AFP.OBD, _OBD,+    module OpenAFP.Records.AFP.OBP, _OBP,+    module OpenAFP.Records.AFP.OCD, _OCD,+    module OpenAFP.Records.AFP.PFC, _PFC,+    module OpenAFP.Records.AFP.PGD, _PGD,+    module OpenAFP.Records.AFP.PGP, _PGP,+    module OpenAFP.Records.AFP.PGP1, _PGP1,+    module OpenAFP.Records.AFP.PMC, _PMC,+    module OpenAFP.Records.AFP.PTD, _PTD,+    module OpenAFP.Records.AFP.PTD1, _PTD1,+    module OpenAFP.Records.AFP.PTX, _PTX,+    module OpenAFP.Records.AFP.TLE, _TLE,+) where+import OpenAFP.Types+import OpenAFP.Records.AFP.BAG+import OpenAFP.Records.AFP.BBC+import OpenAFP.Records.AFP.BCA+import OpenAFP.Records.AFP.BCF+import OpenAFP.Records.AFP.BCP+import OpenAFP.Records.AFP.BDA+import OpenAFP.Records.AFP.BDD+import OpenAFP.Records.AFP.BDG+import OpenAFP.Records.AFP.BDI+import OpenAFP.Records.AFP.BDM+import OpenAFP.Records.AFP.BDT+import OpenAFP.Records.AFP.BDX+import OpenAFP.Records.AFP.BFG+import OpenAFP.Records.AFP.BFM+import OpenAFP.Records.AFP.BFN+import OpenAFP.Records.AFP.BGR+import OpenAFP.Records.AFP.BII+import OpenAFP.Records.AFP.BIM+import OpenAFP.Records.AFP.BMM+import OpenAFP.Records.AFP.BMO+import OpenAFP.Records.AFP.BNG+import OpenAFP.Records.AFP.BOC+import OpenAFP.Records.AFP.BOG+import OpenAFP.Records.AFP.BPG+import OpenAFP.Records.AFP.BPM+import OpenAFP.Records.AFP.BPS+import OpenAFP.Records.AFP.BPT+import OpenAFP.Records.AFP.BR+import OpenAFP.Records.AFP.BRG+import OpenAFP.Records.AFP.BSG+import OpenAFP.Records.AFP.CAT+import OpenAFP.Records.AFP.CDD+import OpenAFP.Records.AFP.CFC+import OpenAFP.Records.AFP.CFI+import OpenAFP.Records.AFP.CPC+import OpenAFP.Records.AFP.CPD+import OpenAFP.Records.AFP.CPI+import OpenAFP.Records.AFP.CTC+import OpenAFP.Records.AFP.DXD+import OpenAFP.Records.AFP.EAG+import OpenAFP.Records.AFP.EBC+import OpenAFP.Records.AFP.ECA+import OpenAFP.Records.AFP.ECF+import OpenAFP.Records.AFP.ECP+import OpenAFP.Records.AFP.EDG+import OpenAFP.Records.AFP.EDI+import OpenAFP.Records.AFP.EDM+import OpenAFP.Records.AFP.EDT+import OpenAFP.Records.AFP.EDX+import OpenAFP.Records.AFP.EFG+import OpenAFP.Records.AFP.EFM+import OpenAFP.Records.AFP.EFN+import OpenAFP.Records.AFP.EGR+import OpenAFP.Records.AFP.EII+import OpenAFP.Records.AFP.EIM+import OpenAFP.Records.AFP.EMM+import OpenAFP.Records.AFP.EMO+import OpenAFP.Records.AFP.ENG+import OpenAFP.Records.AFP.EOC+import OpenAFP.Records.AFP.EOG+import OpenAFP.Records.AFP.EPG+import OpenAFP.Records.AFP.EPM+import OpenAFP.Records.AFP.EPS+import OpenAFP.Records.AFP.EPT+import OpenAFP.Records.AFP.ER+import OpenAFP.Records.AFP.ERG+import OpenAFP.Records.AFP.ESG+import OpenAFP.Records.AFP.FGD+import OpenAFP.Records.AFP.FNC+import OpenAFP.Records.AFP.FND+import OpenAFP.Records.AFP.FNG+import OpenAFP.Records.AFP.FNI+import OpenAFP.Records.AFP.FNM+import OpenAFP.Records.AFP.FNN+import OpenAFP.Records.AFP.FNO+import OpenAFP.Records.AFP.FNP+import OpenAFP.Records.AFP.GAD+import OpenAFP.Records.AFP.GDD+import OpenAFP.Records.AFP.ICP+import OpenAFP.Records.AFP.IDD+import OpenAFP.Records.AFP.IEL+import OpenAFP.Records.AFP.IID+import OpenAFP.Records.AFP.IMM+import OpenAFP.Records.AFP.IOB+import OpenAFP.Records.AFP.IOC+import OpenAFP.Records.AFP.IPD+import OpenAFP.Records.AFP.IPG+import OpenAFP.Records.AFP.IPO+import OpenAFP.Records.AFP.IPS+import OpenAFP.Records.AFP.IRD+import OpenAFP.Records.AFP.LLE+import OpenAFP.Records.AFP.LNC+import OpenAFP.Records.AFP.LND+import OpenAFP.Records.AFP.MBC+import OpenAFP.Records.AFP.MCA+import OpenAFP.Records.AFP.MCC+import OpenAFP.Records.AFP.MCD+import OpenAFP.Records.AFP.MCF+import OpenAFP.Records.AFP.MCF1+import OpenAFP.Records.AFP.MDD+import OpenAFP.Records.AFP.MDR+import OpenAFP.Records.AFP.MFC+import OpenAFP.Records.AFP.MGO+import OpenAFP.Records.AFP.MIO+import OpenAFP.Records.AFP.MMC+import OpenAFP.Records.AFP.MMO+import OpenAFP.Records.AFP.MMT+import OpenAFP.Records.AFP.MPG+import OpenAFP.Records.AFP.MPO+import OpenAFP.Records.AFP.MPS+import OpenAFP.Records.AFP.MSU+import OpenAFP.Records.AFP.NOP+import OpenAFP.Records.AFP.OBD+import OpenAFP.Records.AFP.OBP+import OpenAFP.Records.AFP.OCD+import OpenAFP.Records.AFP.PFC+import OpenAFP.Records.AFP.PGD+import OpenAFP.Records.AFP.PGP+import OpenAFP.Records.AFP.PGP1+import OpenAFP.Records.AFP.PMC+import OpenAFP.Records.AFP.PTD+import OpenAFP.Records.AFP.PTD1+import OpenAFP.Records.AFP.PTX+import OpenAFP.Records.AFP.TLE++_BAG  :: BAG+_BAG  = BAG  0xD3A8C9 0 _NStr+_BBC  :: BBC+_BBC  = BBC  0xD3A8EB 0 _NStr+_BCA  :: BCA+_BCA  = BCA  0xD3A877 0 _NStr+_BCF  :: BCF+_BCF  = BCF  0xD3A88A 0 _NStr+_BCP  :: BCP+_BCP  = BCP  0xD3A887 0 _NStr+_BDA  :: BDA+_BDA  = BDA  0xD3EEEB 0 _NStr+_BDD  :: BDD+_BDD  = BDD  0xD3A6EB 0 _NStr+_BDG  :: BDG+_BDG  = BDG  0xD3A8C4 0 _NStr+_BDI  :: BDI+_BDI  = BDI  0xD3A8A7 0 _NStr+_BDM  :: BDM+_BDM  = BDM  0xD3A8CA 0 _NStr+_BDT  :: BDT+_BDT  = BDT  0xD3A8A8 0 _NStr+_BDX  :: BDX+_BDX  = BDX  0xD3A8E3 0 _NStr+_BFG  :: BFG+_BFG  = BFG  0xD3A8C5 0 _NStr+_BFM  :: BFM+_BFM  = BFM  0xD3A8CD 0 _NStr+_BFN  :: BFN+_BFN  = BFN  0xD3A889 0 _NStr+_BGR  :: BGR+_BGR  = BGR  0xD3A8BB 0 _NStr+_BII  :: BII+_BII  = BII  0xD3A87B 0 0+_BIM  :: BIM+_BIM  = BIM  0xD3A8FB 0 _NStr+_BMM  :: BMM+_BMM  = BMM  0xD3A8CC 0 _NStr+_BMO  :: BMO+_BMO  = BMO  0xD3A8DF 0 _NStr+_BNG  :: BNG+_BNG  = BNG  0xD3A8AD 0 _NStr+_BOC  :: BOC+_BOC  = BOC  0xD3A892 0 _NStr+_BOG  :: BOG+_BOG  = BOG  0xD3A8C7 0 _NStr+_BPG  :: BPG+_BPG  = BPG  0xD3A8AF 0 _NStr+_BPM  :: BPM+_BPM  = BPM  0xD3A8CB 0 _NStr+_BPS  :: BPS+_BPS  = BPS  0xD3A85F 0 _NStr+_BPT  :: BPT+_BPT  = BPT  0xD3A89B 0 _NStr+_BR   :: BR+_BR   = BR   0xD3A8CE 0 _NStr+_BRG  :: BRG+_BRG  = BRG  0xD3A8C6 0 _NStr+_BSG  :: BSG+_BSG  = BSG  0xD3A8D9 0 _NStr+_CAT  :: CAT+_CAT  = CAT  0xD3B077 0 _NStr+_CDD  :: CDD+_CDD  = CDD  0xD3A692 0 _NStr+_CFC  :: CFC+_CFC  = CFC  0xD3A78A 0 0 _NStr+_CFI  :: CFI+_CFI  = CFI  0xD38C8A 0 []+_CFI_Data :: CFI_Data+_CFI_Data = CFI_Data 0 0 0 0+_CPC  :: CPC+_CPC  = CPC  0xD3A787 0 0 0 0 0 0 _NStr+_CPD  :: CPD+_CPD  = CPD  0xD3A687 0 _NStr+_CPI  :: CPI+_CPI  = CPI  0xD38C87 0 []+_CPI_Data :: CPI_Data+_CPI_Data = CPI_Data 0 0 0+_CTC  :: CTC+_CTC  = CTC  0xD3A79B 0 _NStr+_DXD  :: DXD+_DXD  = DXD  0xD3A6E3 0 _NStr+_EAG  :: EAG+_EAG  = EAG  0xD3A9C9 0 _NStr+_EBC  :: EBC+_EBC  = EBC  0xD3A9EB 0 _NStr+_ECA  :: ECA+_ECA  = ECA  0xD3A977 0 _NStr+_ECF  :: ECF+_ECF  = ECF  0xD3A98A 0 _NStr+_ECP  :: ECP+_ECP  = ECP  0xD3A987 0 _NStr+_EDG  :: EDG+_EDG  = EDG  0xD3A9C4 0 _NStr+_EDI  :: EDI+_EDI  = EDI  0xD3A9A7 0 _NStr+_EDM  :: EDM+_EDM  = EDM  0xD3A9CA 0 _NStr+_EDT  :: EDT+_EDT  = EDT  0xD3A9A8 0 _NStr+_EDX  :: EDX+_EDX  = EDX  0xD3A9E3 0 _NStr+_EFG  :: EFG+_EFG  = EFG  0xD3A9C5 0 _NStr+_EFM  :: EFM+_EFM  = EFM  0xD3A9CD 0 _NStr+_EFN  :: EFN+_EFN  = EFN  0xD3A989 0 _NStr+_EGR  :: EGR+_EGR  = EGR  0xD3A9BB 0 _NStr+_EII  :: EII+_EII  = EII  0xD3A97B 0 0+_EIM  :: EIM+_EIM  = EIM  0xD3A9FB 0 _NStr+_EMM  :: EMM+_EMM  = EMM  0xD3A9CC 0 _NStr+_EMO  :: EMO+_EMO  = EMO  0xD3A9DF 0 _NStr+_ENG  :: ENG+_ENG  = ENG  0xD3A9AD 0 _NStr+_EOC  :: EOC+_EOC  = EOC  0xD3A992 0 _NStr+_EOG  :: EOG+_EOG  = EOG  0xD3A9C7 0 _NStr+_EPG  :: EPG+_EPG  = EPG  0xD3A9AF 0 _NStr+_EPM  :: EPM+_EPM  = EPM  0xD3A9CB 0 _NStr+_EPS  :: EPS+_EPS  = EPS  0xD3A95F 0 _NStr+_EPT  :: EPT+_EPT  = EPT  0xD3A99B 0 _NStr+_ER   :: ER+_ER   = ER   0xD3A9CE 0 _NStr+_ERG  :: ERG+_ERG  = ERG  0xD3A9C6 0 _NStr+_ESG  :: ESG+_ESG  = ESG  0xD3A9D9 0 _NStr+_FGD  :: FGD+_FGD  = FGD  0xD3A6C5 0 _NStr+_FNC  :: FNC+_FNC  = FNC  0xD3A789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _NStr+_FND  :: FND+_FND  = FND  0xD3A689 0 _NStr+_FNG  :: FNG+_FNG  = FNG  0xD3EE89 0 _NStr+_FNI  :: FNI+_FNI  = FNI  0xD38C89 0 []+_FNI_Data :: FNI_Data+_FNI_Data = FNI_Data 0 0 0 0 0 0 0 0 0 0 0+_FNM  :: FNM+_FNM  = FNM  0xD3A289 0 []+_FNM_Data :: FNM_Data+_FNM_Data = FNM_Data 0 0 0+_FNN  :: FNN+_FNN  = FNN  0xD3AB89 0 _NStr+_FNO  :: FNO+_FNO  = FNO  0xD3AE89 0 0 0 0 0 0 _NStr+_FNP  :: FNP+_FNP  = FNP  0xD3AC89 0 _NStr+_GAD  :: GAD+_GAD  = GAD  0xD3EEBB 0 _NStr+_GDD  :: GDD+_GDD  = GDD  0xD3A6BB 0 _NStr+_ICP  :: ICP+_ICP  = ICP  0xD3AC7B 0 0 0 0 0 0 0+_IDD  :: IDD+_IDD  = IDD  0xD3A6FB 0 _NStr+_IEL  :: IEL+_IEL  = IEL  0xD3B2A7 0 _NStr+_IID  :: IID+_IID  = IID  0xD3A67B 0 0 0 0 0 0 0 0 0 0 0 0 0+_IMM  :: IMM+_IMM  = IMM  0xD3ABCC 0 _NStr+_IOB  :: IOB+_IOB  = IOB  0xD3AFC3 0 _NStr+_IOC  :: IOC+_IOC  = IOC  0xD3A77B 0 0 0 0 0 0 0 0 0 0 0+_IPD  :: IPD+_IPD  = IPD  0xD3EEFB 0 _NStr+_IPG  :: IPG+_IPG  = IPG  0xD3AFAF 0 _NStr+_IPO  :: IPO+_IPO  = IPO  0xD3AFD8 0 _NStr+_IPS  :: IPS+_IPS  = IPS  0xD3AF5F 0 _NStr+_IRD  :: IRD+_IRD  = IRD  0xD3EE7B 0 _NStr+_LLE  :: LLE+_LLE  = LLE  0xD3B490 0 _NStr+_LNC  :: LNC+_LNC  = LNC  0xD3AAE7 0 _NStr+_LND  :: LND+_LND  = LND  0xD3A6E7 0 _NStr+_MBC  :: MBC+_MBC  = MBC  0xD3ABEB 0 _NStr+_MCA  :: MCA+_MCA  = MCA  0xD3AB77 0 _NStr+_MCC  :: MCC+_MCC  = MCC  0xD3A288 0 _NStr+_MCD  :: MCD+_MCD  = MCD  0xD3AB92 0 _NStr+_MCF  :: MCF+_MCF  = MCF  0xD3AB8A 0 []+_MCF1 :: MCF1+_MCF1 = MCF1 0xD3B18A 0 0 0 []+_MCF1_Data :: MCF1_Data+_MCF1_Data = MCF1_Data 0 0 0 0 0 0 0 0+_MDD  :: MDD+_MDD  = MDD  0xD3A688 0 _NStr+_MDR  :: MDR+_MDR  = MDR  0xD3ABC3 0 _NStr+_MFC  :: MFC+_MFC  = MFC  0xD3A088 0 _NStr+_MGO  :: MGO+_MGO  = MGO  0xD3ABBB 0 _NStr+_MIO  :: MIO+_MIO  = MIO  0xD3ABFB 0 _NStr+_MMC  :: MMC+_MMC  = MMC  0xD3A788 0 _NStr+_MMO  :: MMO+_MMO  = MMO  0xD3B1DF 0 _NStr+_MMT  :: MMT+_MMT  = MMT  0xD3AB88 0 _NStr+_MPG  :: MPG+_MPG  = MPG  0xD3ABAF 0 _NStr+_MPO  :: MPO+_MPO  = MPO  0xD3ABD8 0 _NStr+_MPS  :: MPS+_MPS  = MPS  0xD3B15F 0 _NStr+_MSU  :: MSU+_MSU  = MSU  0xD3ABEA 0 _NStr+_NOP  :: NOP+_NOP  = NOP  0xD3EEEE 0 _NStr+_OBD  :: OBD+_OBD  = OBD  0xD3A66B 0 _NStr+_OBP  :: OBP+_OBP  = OBP  0xD3AC6B 0 _NStr+_OCD  :: OCD+_OCD  = OCD  0xD3EE92 0 _NStr+_PFC  :: PFC+_PFC  = PFC  0xD3B288 0 _NStr+_PGD  :: PGD+_PGD  = PGD  0xD3A6AF 0 0 0 0 0 0 0 0 0 _NStr+_PGP  :: PGP+_PGP  = PGP  0xD3B1AF 0 _NStr+_PGP1 :: PGP1+_PGP1 = PGP1 0xD3ACAF 0 _NStr+_PMC  :: PMC+_PMC  = PMC  0xD3A7AF 0 _NStr+_PTD  :: PTD+_PTD  = PTD  0xD3B19B 0 _NStr+_PTD1 :: PTD1+_PTD1 = PTD1 0xD3A69B 0 _NStr+_PTX  :: PTX+_PTX  = PTX  0xD3EE9B 0 0 []+_TLE  :: TLE+_TLE  = TLE  0xD3A090 0 [] 0 0 0 0 0 0 _NStr+
+ src/OpenAFP/Records/AFP/BAG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BAG where+import OpenAFP.Types+import OpenAFP.Internals++data BAG = BAG {+    bag_Type                         :: !N3+    ,bag_                            :: !N3+    ,bag                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BBC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BBC where+import OpenAFP.Types+import OpenAFP.Internals+ +data BBC = BBC {+    bbc_Type                         :: !N3+    ,bbc_                            :: !N3+    ,bbc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BCA.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BCA where+import OpenAFP.Types+import OpenAFP.Internals+ +data BCA = BCA {+    bca_Type                         :: !N3+    ,bca_                            :: !N3+    ,bca                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BCF.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BCF where+import OpenAFP.Types+import OpenAFP.Internals+ +data BCF = BCF {+    bcf_Type                         :: !N3+    ,bcf_                            :: !N3+    ,bcf                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BCP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BCP where+import OpenAFP.Types+import OpenAFP.Internals+ +data BCP = BCP {+    bcp_Type                         :: !N3+    ,bcp_                            :: !N3+    ,bcp                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDA.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDA where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDA = BDA {+    bda_Type                         :: !N3+    ,bda_                            :: !N3+    ,bda                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDD where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDD = BDD {+    bdd_Type                         :: !N3+    ,bdd_                            :: !N3+    ,bdd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDG = BDG {+    bdg_Type                         :: !N3+    ,bdg_                            :: !N3+    ,bdg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDI.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDI where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDI = BDI {+    bdi_Type                         :: !N3+    ,bdi_                            :: !N3+    ,bdi                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDM where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDM = BDM {+    bdm_Type                         :: !N3+    ,bdm_                            :: !N3+    ,bdm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDT where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDT = BDT {+    bdt_Type                         :: !N3+    ,bdt_                            :: !N3+    ,bdt                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BDX.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BDX where+import OpenAFP.Types+import OpenAFP.Internals+ +data BDX = BDX {+    bdx_Type                         :: !N3+    ,bdx_                            :: !N3+    ,bdx                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BFG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BFG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BFG = BFG {+    bfg_Type                         :: !N3+    ,bfg_                            :: !N3+    ,bfg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BFM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BFM where+import OpenAFP.Types+import OpenAFP.Internals+ +data BFM = BFM {+    bfm_Type                         :: !N3+    ,bfm_                            :: !N3+    ,bfm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BFN.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BFN where+import OpenAFP.Types+import OpenAFP.Internals+ +data BFN = BFN {+    bfn_Type                         :: !N3+    ,bfn_                            :: !N3+    ,bfn                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BGR.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BGR where+import OpenAFP.Types+import OpenAFP.Internals+ +data BGR = BGR {+    bgr_Type                         :: !N3+    ,bgr_                            :: !N3+    ,bgr                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BII.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BII where+import OpenAFP.Types+import OpenAFP.Internals+ +data BII = BII {+    bii_Type                         :: !N3+    ,bii_                            :: !N3+    ,bii_ImageObjectName             :: !A8+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BIM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BIM where+import OpenAFP.Types+import OpenAFP.Internals+ +data BIM = BIM {+    bim_Type                         :: !N3+    ,bim_                            :: !N3+    ,bim                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BMM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BMM where+import OpenAFP.Types+import OpenAFP.Internals+ +data BMM = BMM {+    bmm_Type                         :: !N3+    ,bmm_                            :: !N3+    ,bmm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BMO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BMO where+import OpenAFP.Types+import OpenAFP.Internals+ +data BMO = BMO {+    bmo_Type                         :: !N3+    ,bmo_                            :: !N3+    ,bmo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BNG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BNG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BNG = BNG {+    bng_Type                         :: !N3+    ,bng_                            :: !N3+    ,bng                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BOC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BOC where+import OpenAFP.Types+import OpenAFP.Internals+ +data BOC = BOC {+    boc_Type                         :: !N3+    ,boc_                            :: !N3+    ,boc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BOG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BOG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BOG = BOG {+    bog_Type                         :: !N3+    ,bog_                            :: !N3+    ,bog                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BPG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BPG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BPG = BPG {+    bpg_Type                         :: !N3+    ,bpg_                            :: !N3+    ,bpg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BPM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BPM where+import OpenAFP.Types+import OpenAFP.Internals+ +data BPM = BPM {+    bpm_Type                         :: !N3+    ,bpm_                            :: !N3+    ,bpm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BPS.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BPS where+import OpenAFP.Types+import OpenAFP.Internals+ +data BPS = BPS {+    bps_Type                         :: !N3+    ,bps_                            :: !N3+    ,bps                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BPT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BPT where+import OpenAFP.Types+import OpenAFP.Internals+ +data BPT = BPT {+    bpt_Type                         :: !N3+    ,bpt_                            :: !N3+    ,bpt                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BR.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BR where+import OpenAFP.Types+import OpenAFP.Internals+ +data BR = BR {+    br_Type                          :: !N3+    ,br_                             :: !N3+    ,br                              :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BRG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BRG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BRG = BRG {+    brg_Type                         :: !N3+    ,brg_                            :: !N3+    ,brg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/BSG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.BSG where+import OpenAFP.Types+import OpenAFP.Internals+ +data BSG = BSG {+    bsg_Type                         :: !N3+    ,bsg_                            :: !N3+    ,bsg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CAT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CAT where+import OpenAFP.Types+import OpenAFP.Internals+ +data CAT = CAT {+    cat_Type                         :: !N3+    ,cat_                            :: !N3+    ,cat                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CDD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CDD where+import OpenAFP.Types+import OpenAFP.Internals+ +data CDD = CDD {+    cdd_Type                         :: !N3+    ,cdd_                            :: !N3+    ,cdd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CFC.hs view
@@ -0,0 +1,13 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CFC where+import OpenAFP.Types+import OpenAFP.Internals+ +data CFC = CFC {+    cfc_Type                         :: !N3+    ,cfc_                            :: !N3+    ,cfc_CFIRepeatingGroupLength     :: !N1+    ,cfc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CFI.hs view
@@ -0,0 +1,19 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CFI where+import OpenAFP.Types+import OpenAFP.Internals++data CFI = CFI {+    cfi_Type                         :: !N3+    ,cfi_                            :: !N3+    ,cfi_Data                        :: ![Record CFI_Data]+} deriving (Show, Typeable)++data CFI_Data = CFI_Data {+     cfi_FontCharacterSetName        :: !A8+    ,cfi_CodePageName                :: !A8+    ,cfi_CodedFontName               :: !A8+    ,cfi_Section                     :: !N1+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CPC.hs view
@@ -0,0 +1,17 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CPC where+import OpenAFP.Types+import OpenAFP.Internals+ +data CPC = CPC {+    cpc_Type                         :: !N3+    ,cpc_                            :: !N3+    ,cpc_GCGID                       :: !A8+    ,cpc_UseFlags                    :: !N1+    ,cpc_CPIRepeatingGroupLength     :: !N1+    ,cpc_SpaceCharacterSection       :: !N1+    ,cpc_UseFlags2                   :: !N1+    ,cpc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CPD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CPD where+import OpenAFP.Types+import OpenAFP.Internals+ +data CPD = CPD {+    cpd_Type                         :: !N3+    ,cpd_                            :: !N3+    ,cpd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/CPI.hs view
@@ -0,0 +1,18 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CPI where+import OpenAFP.Types+import OpenAFP.Internals++data CPI = CPI {+    cpi_Type                         :: !N3+    ,cpi_                            :: !N3+    ,cpi_Data                        :: ![Record CPI_Data]+} deriving (Show, Typeable)++data CPI_Data = CPI_Data {+     cpi_GCGID                       :: !A8+    ,cpi_Section                     :: !N1+    ,cpi_CodePoint                   :: !N1+} deriving (Show, Typeable)+ 
+ src/OpenAFP/Records/AFP/CTC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.CTC where+import OpenAFP.Types+import OpenAFP.Internals+ +data CTC = CTC {+    ctc_Type                         :: !N3+    ,ctc_                            :: !N3+    ,ctc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/DXD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.DXD where+import OpenAFP.Types+import OpenAFP.Internals+ +data DXD = DXD {+    dxd_Type                         :: !N3+    ,dxd_                            :: !N3+    ,dxd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EAG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EAG where+import OpenAFP.Types+import OpenAFP.Internals+ +data EAG = EAG {+    eag_Type                         :: !N3+    ,eag_                            :: !N3+    ,eag                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EBC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EBC where+import OpenAFP.Types+import OpenAFP.Internals+ +data EBC = EBC {+    ebc_Type                         :: !N3+    ,ebc_                            :: !N3+    ,ebc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ECA.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ECA where+import OpenAFP.Types+import OpenAFP.Internals+ +data ECA = ECA {+    eca_Type                         :: !N3+    ,eca_                            :: !N3+    ,eca                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ECF.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ECF where+import OpenAFP.Types+import OpenAFP.Internals+ +data ECF = ECF {+    ecf_Type                         :: !N3+    ,ecf_                            :: !N3+    ,ecf                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ECP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ECP where+import OpenAFP.Types+import OpenAFP.Internals+ +data ECP = ECP {+    ecp_Type                         :: !N3+    ,ecp_                            :: !N3+    ,ecp                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EDG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EDG where+import OpenAFP.Types+import OpenAFP.Internals+ +data EDG = EDG {+    edg_Type                         :: !N3+    ,edg_                            :: !N3+    ,edg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EDI.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EDI where+import OpenAFP.Types+import OpenAFP.Internals+ +data EDI = EDI {+    edi_Type                         :: !N3+    ,edi_                            :: !N3+    ,edi                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EDM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EDM where+import OpenAFP.Types+import OpenAFP.Internals+ +data EDM = EDM {+    edm_Type                         :: !N3+    ,edm_                            :: !N3+    ,edm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EDT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EDT where+import OpenAFP.Types+import OpenAFP.Internals+ +data EDT = EDT {+    edt_Type                         :: !N3+    ,edt_                            :: !N3+    ,edt                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EDX.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EDX where+import OpenAFP.Types+import OpenAFP.Internals+ +data EDX = EDX {+    edx_Type                         :: !N3+    ,edx_                            :: !N3+    ,edx                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EFG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EFG where+import OpenAFP.Types+import OpenAFP.Internals+ +data EFG = EFG {+    efg_Type                         :: !N3+    ,efg_                            :: !N3+    ,efg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EFM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EFM where+import OpenAFP.Types+import OpenAFP.Internals+ +data EFM = EFM {+    efm_Type                         :: !N3+    ,efm_                            :: !N3+    ,efm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EFN.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EFN where+import OpenAFP.Types+import OpenAFP.Internals+ +data EFN = EFN {+    efn_Type                         :: !N3+    ,efn_                            :: !N3+    ,efn                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EGR.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EGR where+import OpenAFP.Types+import OpenAFP.Internals+ +data EGR = EGR {+    egr_Type                         :: !N3+    ,egr_                            :: !N3+    ,egr                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EII.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EII where+import OpenAFP.Types+import OpenAFP.Internals+ +data EII = EII {+    eii_Type                         :: !N3+    ,eii_                            :: !N3+    ,eii_ImageObjectName             :: !A8+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EIM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EIM where+import OpenAFP.Types+import OpenAFP.Internals+ +data EIM = EIM {+    eim_Type                         :: !N3+    ,eim_                            :: !N3+    ,eim                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EMM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EMM where+import OpenAFP.Types+import OpenAFP.Internals+ +data EMM = EMM {+    emm_Type                         :: !N3+    ,emm_                            :: !N3+    ,emm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EMO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EMO where+import OpenAFP.Types+import OpenAFP.Internals+ +data EMO = EMO {+    emo_Type                         :: !N3+    ,emo_                            :: !N3+    ,emo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ENG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ENG where+import OpenAFP.Types+import OpenAFP.Internals+ +data ENG = ENG {+    eng_Type                         :: !N3+    ,eng_                            :: !N3+    ,eng                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EOC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EOC where+import OpenAFP.Types+import OpenAFP.Internals+ +data EOC = EOC {+    eoc_Type                         :: !N3+    ,eoc_                            :: !N3+    ,eoc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EOG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EOG where+import OpenAFP.Types+import OpenAFP.Internals+ +data EOG = EOG {+    eog_Type                         :: !N3+    ,eog_                            :: !N3+    ,eog                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EPG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EPG where+import OpenAFP.Types+import OpenAFP.Internals+ +data EPG = EPG {+    epg_Type                         :: !N3+    ,epg_                            :: !N3+    ,epg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EPM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EPM where+import OpenAFP.Types+import OpenAFP.Internals+ +data EPM = EPM {+    epm_Type                         :: !N3+    ,epm_                            :: !N3+    ,epm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EPS.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EPS where+import OpenAFP.Types+import OpenAFP.Internals+ +data EPS = EPS {+    eps_Type                         :: !N3+    ,eps_                            :: !N3+    ,eps                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/EPT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.EPT where+import OpenAFP.Types+import OpenAFP.Internals+ +data EPT = EPT {+    ept_Type                         :: !N3+    ,ept_                            :: !N3+    ,ept                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ER.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ER where+import OpenAFP.Types+import OpenAFP.Internals+ +data ER = ER {+    er_Type                          :: !N3+    ,er_                             :: !N3+    ,er                              :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ERG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ERG where+import OpenAFP.Types+import OpenAFP.Internals+ +data ERG = ERG {+    erg_Type                         :: !N3+    ,erg_                            :: !N3+    ,erg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ESG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ESG where+import OpenAFP.Types+import OpenAFP.Internals+ +data ESG = ESG {+    esg_Type                         :: !N3+    ,esg_                            :: !N3+    ,esg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FGD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FGD where+import OpenAFP.Types+import OpenAFP.Internals+ +data FGD = FGD {+    fgd_Type                         :: !N3+    ,fgd_                            :: !N3+    ,fgd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FNC.hs view
@@ -0,0 +1,30 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNC where+import OpenAFP.Types+import OpenAFP.Internals++--- XXX - not parsed completely - see FNC.pm+ +data FNC = FNC {+    fnc_Type                         :: !N3+    ,fnc_                            :: !N3+    ,fnc_Constant                    :: !A1+    ,fnc_PatternTechnologyIdentifier :: !N1+    ,fnc_FNCReserved1                :: !A1+    ,fnc_UseFlags                    :: !N1+    ,fnc_UnitXBase                   :: !N1+    ,fnc_UnitYBase                   :: !N1+    ,fnc_UnitXValue                  :: !N2+    ,fnc_UnitYValue                  :: !N2+    ,fnc_MaxWidth                    :: !N2+    ,fnc_MaxHeight                   :: !N2+    ,fnc_FNORepeatingGroupLength     :: !N1+    ,fnc_FNIRepeatingGroupLength     :: !N1+    ,fnc_PatternDataAlignmentCode    :: !N1+    ,fnc_PatternDataCount1           :: !A3+    ,fnc_FNPRepeatingGroupLength     :: !N1+    ,fnc_FNMRepeatingGroupLength     :: !N1+    ,fnc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FND.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FND where+import OpenAFP.Types+import OpenAFP.Internals+ +data FND = FND {+    fnd_Type                         :: !N3+    ,fnd_                            :: !N3+    ,fnd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FNG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNG where+import OpenAFP.Types+import OpenAFP.Internals+ +data FNG = FNG {+    fng_Type                         :: !N3+    ,fng_                            :: !N3+    ,fng                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FNI.hs view
@@ -0,0 +1,26 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNI where+import OpenAFP.Types+import OpenAFP.Internals+ +data FNI = FNI {+    fni_Type                         :: !N3+    ,fni_                            :: !N3+    ,fni_Data                        :: ![Record FNI_Data]+} deriving (Show, Typeable)++data FNI_Data = FNI_Data {+     fni_GCGID                       :: !A8+    ,fni_CharacterIncrement          :: !N2+    ,fni_AscendHeight                :: !I2+    ,fni_DescendDepth                :: !I2+    ,fni_Reserved1                   :: !N2+    ,fni_FNMCount                    :: !N2+    ,fni_ASpace                      :: !I2+    ,fni_BSpace                      :: !N2+    ,fni_CSpace                      :: !I2+    ,fni_Reserved2                   :: !N2+    ,fni_BaseOffset                  :: !I2+} deriving (Show, Typeable)+ 
+ src/OpenAFP/Records/AFP/FNM.hs view
@@ -0,0 +1,18 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNM where+import OpenAFP.Types+import OpenAFP.Internals++data FNM = FNM {+    fnm_Type                         :: !N3+    ,fnm_                            :: !N3+    ,fnm_Data                        :: ![Record FNM_Data]+} deriving (Show, Typeable)++data FNM_Data = FNM_Data {+     fnm_Width                       :: !N2+    ,fnm_Height                      :: !N2+    ,fnm_Offset                      :: !N4+} deriving (Show, Typeable)+ 
+ src/OpenAFP/Records/AFP/FNN.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNN where+import OpenAFP.Types+import OpenAFP.Internals+ +data FNN = FNN {+    fnn_Type                         :: !N3+    ,fnn_                            :: !N3+    ,fnn                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FNO.hs view
@@ -0,0 +1,17 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNO where+import OpenAFP.Types+import OpenAFP.Internals+ +data FNO = FNO {+    fno_Type                         :: !N3+    ,fno_                            :: !N3+    ,fno_Reserved                    :: !N2+    ,fno_CharacterRotation           :: !N2+    ,fno_MaxBaseOffset               :: !N2+    ,fno_MaxCharacterIncrement       :: !N2+    ,fno_SpaceCharacterIncrement     :: !N2+    ,fno                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/FNP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.FNP where+import OpenAFP.Types+import OpenAFP.Internals+ +data FNP = FNP {+    fnp_Type                         :: !N3+    ,fnp_                            :: !N3+    ,fnp                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/GAD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.GAD where+import OpenAFP.Types+import OpenAFP.Internals+ +data GAD = GAD {+    gad_Type                         :: !N3+    ,gad_                            :: !N3+    ,gad                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/GDD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.GDD where+import OpenAFP.Types+import OpenAFP.Internals+ +data GDD = GDD {+    gdd_Type                         :: !N3+    ,gdd_                            :: !N3+    ,gdd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/ICP.hs view
@@ -0,0 +1,17 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.ICP where+import OpenAFP.Types+import OpenAFP.Internals+ +data ICP = ICP {+    icp_Type                         :: !N3+    ,icp_                            :: !N3+    ,icp_XCellOffset                 :: !N2+    ,icp_YCellOffset                 :: !N2+    ,icp_XCellSize                   :: !N2+    ,icp_YCellSize                   :: !N2+    ,icp_XFillSize                   :: !N2+    ,icp_YFillSize                   :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IDD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IDD where+import OpenAFP.Types+import OpenAFP.Internals+ +data IDD = IDD {+    idd_Type                         :: !N3+    ,idd_                            :: !N3+    ,idd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IEL.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IEL where+import OpenAFP.Types+import OpenAFP.Internals+ +data IEL = IEL {+    iel_Type                         :: !N3+    ,iel_                            :: !N3+    ,iel                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IID.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IID where+import OpenAFP.Types+import OpenAFP.Internals+ +data IID = IID {+    iid_Type                         :: !N3+    ,iid_                            :: !N3+    ,iid_ConstantData1               :: !A12+    ,iid_XBase                       :: !N1+    ,iid_YBase                       :: !N1+    ,iid_XUnits                      :: !N2+    ,iid_YUnits                      :: !N2+    ,iid_XSize                       :: !N2+    ,iid_YSize                       :: !N2+    ,iid_ConstantData2               :: !A6+    ,iid_XCellSizeDefault            :: !N2+    ,iid_YCellSizeDefault            :: !N2+    ,iid_ConstantData3               :: !A1+    ,iid_Color                       :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IMM.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IMM where+import OpenAFP.Types+import OpenAFP.Internals+ +data IMM = IMM {+    imm_Type                         :: !N3+    ,imm_                            :: !N3+    ,imm                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IOB.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IOB where+import OpenAFP.Types+import OpenAFP.Internals+ +data IOB = IOB {+    iob_Type                         :: !N3+    ,iob_                            :: !N3+    ,iob                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IOC.hs view
@@ -0,0 +1,21 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IOC where+import OpenAFP.Types+import OpenAFP.Internals+ +data IOC = IOC {+    ioc_Type                         :: !N3+    ,ioc_                            :: !N3+    ,ioc_Reserved1                   :: !A1+    ,ioc_XOffset                     :: !N2+    ,ioc_Reserved2                   :: !A1+    ,ioc_YOffset                     :: !N2+    ,ioc_XOrientation                :: !N2+    ,ioc_YOrientation                :: !N2+    ,ioc_ConstantData1               :: !A8+    ,ioc_XMap                        :: !N2+    ,ioc_YMap                        :: !N2+    ,ioc_ConstantData2               :: !A2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IPD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IPD where+import OpenAFP.Types+import OpenAFP.Internals+ +data IPD = IPD {+    ipd_Type                         :: !N3+    ,ipd_                            :: !N3+    ,ipd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IPG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IPG where+import OpenAFP.Types+import OpenAFP.Internals+ +data IPG = IPG {+    ipg_Type                         :: !N3+    ,ipg_                            :: !N3+    ,ipg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IPO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IPO where+import OpenAFP.Types+import OpenAFP.Internals+ +data IPO = IPO {+    ipo_Type                         :: !N3+    ,ipo_                            :: !N3+    ,ipo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IPS.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IPS where+import OpenAFP.Types+import OpenAFP.Internals+ +data IPS = IPS {+    ips_Type                         :: !N3+    ,ips_                            :: !N3+    ,ips                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/IRD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.IRD where+import OpenAFP.Types+import OpenAFP.Internals+ +data IRD = IRD {+    ird_Type                         :: !N3+    ,ird_                            :: !N3+    ,ird_ImageData                   :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/LLE.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.LLE where+import OpenAFP.Types+import OpenAFP.Internals+ +data LLE = LLE {+    lle_Type                         :: !N3+    ,lle_                            :: !N3+    ,lle                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/LNC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.LNC where+import OpenAFP.Types+import OpenAFP.Internals+ +data LNC = LNC {+    lnc_Type                         :: !N3+    ,lnc_                            :: !N3+    ,lnc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/LND.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.LND where+import OpenAFP.Types+import OpenAFP.Internals+ +data LND = LND {+    lnd_Type                         :: !N3+    ,lnd_                            :: !N3+    ,lnd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MBC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MBC where+import OpenAFP.Types+import OpenAFP.Internals+ +data MBC = MBC {+    mbc_Type                         :: !N3+    ,mbc_                            :: !N3+    ,mbc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MCA.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MCA where+import OpenAFP.Types+import OpenAFP.Internals+ +data MCA = MCA {+    mca_Type                         :: !N3+    ,mca_                            :: !N3+    ,mca                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MCC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MCC where+import OpenAFP.Types+import OpenAFP.Internals+ +data MCC = MCC {+    mcc_Type                         :: !N3+    ,mcc_                            :: !N3+    ,mcc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MCD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MCD where+import OpenAFP.Types+import OpenAFP.Internals+ +data MCD = MCD {+    mcd_Type                         :: !N3+    ,mcd_                            :: !N3+    ,mcd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MCF.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MCF where+import OpenAFP.Types+import OpenAFP.Internals++newtype MCF_ = MCF_ (N0, Buffer2) deriving (Show, Typeable)++data MCF = MCF {+    mcf_Type                         :: !N3+    ,mcf_                            :: !N3+    ,mcf_Chunks                      :: ![MCF_]+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MCF1.hs view
@@ -0,0 +1,25 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MCF1 where+import OpenAFP.Types+import OpenAFP.Internals++data MCF1_Data = MCF1_Data {+     mcf1_CodedFontLocalId             :: !N1+    ,mcf1_Reserved1                    :: !A1+    ,mcf1_CodedFontResourceSectionId   :: !N1+    ,mcf1_Reserved2                    :: !A1+    ,mcf1_CodedFontName                :: !A8+    ,mcf1_CodePageName                 :: !A8+    ,mcf1_FontCharacterSetName         :: !A8+    ,mcf1_CharacterRotation            :: !N2+} deriving (Show, Typeable)++data MCF1 = MCF1 {+    mcf1_Type                        :: !N3+    ,mcf1_                           :: !N3+    ,mcf1_RepeatingGroupLength       :: !N1+    ,mcf1__                          :: !A3+    ,mcf1_Data                       :: ![Record MCF1_Data]+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MDD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MDD where+import OpenAFP.Types+import OpenAFP.Internals+ +data MDD = MDD {+    mdd_Type                         :: !N3+    ,mdd_                            :: !N3+    ,mdd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MDR.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MDR where+import OpenAFP.Types+import OpenAFP.Internals+ +data MDR = MDR {+    mdr_Type                         :: !N3+    ,mdr_                            :: !N3+    ,mdr                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MFC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MFC where+import OpenAFP.Types+import OpenAFP.Internals+ +data MFC = MFC {+    mfc_Type                         :: !N3+    ,mfc_                            :: !N3+    ,mfc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MGO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MGO where+import OpenAFP.Types+import OpenAFP.Internals+ +data MGO = MGO {+    mgo_Type                         :: !N3+    ,mgo_                            :: !N3+    ,mgo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MIO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MIO where+import OpenAFP.Types+import OpenAFP.Internals+ +data MIO = MIO {+    mio_Type                         :: !N3+    ,mio_                            :: !N3+    ,mio                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MMC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MMC where+import OpenAFP.Types+import OpenAFP.Internals+ +data MMC = MMC {+    mmc_Type                         :: !N3+    ,mmc_                            :: !N3+    ,mmc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MMO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MMO where+import OpenAFP.Types+import OpenAFP.Internals+ +data MMO = MMO {+    mmo_Type                         :: !N3+    ,mmo_                            :: !N3+    ,mmo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MMT.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MMT where+import OpenAFP.Types+import OpenAFP.Internals+ +data MMT = MMT {+    mmt_Type                         :: !N3+    ,mmt_                            :: !N3+    ,mmt                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MPG.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MPG where+import OpenAFP.Types+import OpenAFP.Internals+ +data MPG = MPG {+    mpg_Type                         :: !N3+    ,mpg_                            :: !N3+    ,mpg                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MPO.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MPO where+import OpenAFP.Types+import OpenAFP.Internals+ +data MPO = MPO {+    mpo_Type                         :: !N3+    ,mpo_                            :: !N3+    ,mpo                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MPS.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MPS where+import OpenAFP.Types+import OpenAFP.Internals+ +data MPS = MPS {+    mps_Type                         :: !N3+    ,mps_                            :: !N3+    ,mps                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/MSU.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.MSU where+import OpenAFP.Types+import OpenAFP.Internals+ +data MSU = MSU {+    msu_Type                         :: !N3+    ,msu_                            :: !N3+    ,msu                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/NOP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.NOP where+import OpenAFP.Types+import OpenAFP.Internals+ +data NOP = NOP {+    nop_Type                         :: !N3+    ,nop_                            :: !N3+    ,nop                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/OBD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.OBD where+import OpenAFP.Types+import OpenAFP.Internals+ +data OBD = OBD {+    obd_Type                         :: !N3+    ,obd_                            :: !N3+    ,obd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/OBP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.OBP where+import OpenAFP.Types+import OpenAFP.Internals+ +data OBP = OBP {+    obp_Type                         :: !N3+    ,obp_                            :: !N3+    ,obp                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/OCD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.OCD where+import OpenAFP.Types+import OpenAFP.Internals+ +data OCD = OCD {+    ocd_Type                         :: !N3+    ,ocd_                            :: !N3+    ,ocd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PFC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PFC where+import OpenAFP.Types+import OpenAFP.Internals+ +data PFC = PFC {+    pfc_Type                         :: !N3+    ,pfc_                            :: !N3+    ,pfc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PGD.hs view
@@ -0,0 +1,20 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PGD where+import OpenAFP.Types+import OpenAFP.Internals+ +data PGD = PGD {+    pgd_Type                         :: !N3+    ,pgd_                            :: !N3+    ,pgd_XUnitBase                   :: !N1+    ,pgd_YUnitBase                   :: !N1+    ,pgd_XLUnitsperUnitBase          :: !N2+    ,pgd_YLUnitsperUnitBase          :: !N2+    ,pgd_Reserved1                   :: !N1+    ,pgd_XPageSize                   :: !N2+    ,pgd_Reserved2                   :: !N1+    ,pgd_YPageSize                   :: !N2+    ,pgd__                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PGP.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PGP where+import OpenAFP.Types+import OpenAFP.Internals+ +data PGP = PGP {+    pgp_Type                         :: !N3+    ,pgp_                            :: !N3+    ,pgp                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PGP1.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PGP1 where+import OpenAFP.Types+import OpenAFP.Internals+ +data PGP1 = PGP1 {+    pgp1_Type                        :: !N3+    ,pgp1_                           :: !N3+    ,pgp1                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PMC.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PMC where+import OpenAFP.Types+import OpenAFP.Internals+ +data PMC = PMC {+    pmc_Type                         :: !N3+    ,pmc_                            :: !N3+    ,pmc                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PTD.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PTD where+import OpenAFP.Types+import OpenAFP.Internals+ +data PTD = PTD {+    ptd_Type                         :: !N3+    ,ptd_                            :: !N3+    ,ptd                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PTD1.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PTD1 where+import OpenAFP.Types+import OpenAFP.Internals+ +data PTD1 = PTD1 {+    ptd1_Type                        :: !N3+    ,ptd1_                           :: !N3+    ,ptd1                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/PTX.hs view
@@ -0,0 +1,15 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.PTX where+import OpenAFP.Types+import OpenAFP.Internals++newtype PTX_ = PTX_ (N1, Buffer1) deriving (Show, Typeable)++data PTX = PTX {+    ptx_Type                         :: !N3+    ,ptx_                            :: !N3+    ,ptx_EscapeSequence              :: !N2+    ,ptx_Chunks                      :: ![PTX_]+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/AFP/TLE.hs view
@@ -0,0 +1,19 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}++module OpenAFP.Records.AFP.TLE where+import OpenAFP.Types+import OpenAFP.Internals++data TLE = TLE {+    tle_Type                         :: !N3+    ,tle_                            :: !N3+    ,tle_Chunks                      :: ![T_]+    ,tle_XUnitBase                   :: !N1+    ,tle_YUnitBase                   :: !N1+    ,tle_XLUnitsperUnitBase          :: !N2+    ,tle_YLUnitsperUnitBase          :: !N2+    ,tle_XPageSize                   :: !N3+    ,tle_YPageSize                   :: !N3+    ,tle__                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/MCF.hs view
@@ -0,0 +1,9 @@+module OpenAFP.Records.MCF (+    module OpenAFP.Records.MCF.T, _MCF_T,+) where+import OpenAFP.Types+import OpenAFP.Records.MCF.T++_MCF_T :: MCF_T+_MCF_T = MCF_T []+
+ src/OpenAFP/Records/MCF/T.hs view
@@ -0,0 +1,9 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.MCF.T where+import OpenAFP.Types+import OpenAFP.Internals++data MCF_T = MCF_T {+    mcf_t_Chunks                  :: ![T_]+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX.hs view
@@ -0,0 +1,81 @@+module OpenAFP.Records.PTX (+    module OpenAFP.Records.PTX.AMB, _PTX_AMB,+    module OpenAFP.Records.PTX.AMI, _PTX_AMI,+    module OpenAFP.Records.PTX.BLN, _PTX_BLN,+    module OpenAFP.Records.PTX.BSU, _PTX_BSU,+    module OpenAFP.Records.PTX.DBR, _PTX_DBR,+    module OpenAFP.Records.PTX.DIR, _PTX_DIR,+    module OpenAFP.Records.PTX.ESU, _PTX_ESU,+    module OpenAFP.Records.PTX.NOP, _PTX_NOP,+    module OpenAFP.Records.PTX.RMB, _PTX_RMB,+    module OpenAFP.Records.PTX.RMI, _PTX_RMI,+    module OpenAFP.Records.PTX.RPS, _PTX_RPS,+    module OpenAFP.Records.PTX.SBI, _PTX_SBI,+    module OpenAFP.Records.PTX.SCFL, _PTX_SCFL,+    module OpenAFP.Records.PTX.SIA, _PTX_SIA,+    module OpenAFP.Records.PTX.SIM, _PTX_SIM,+    module OpenAFP.Records.PTX.STC, _PTX_STC,+    module OpenAFP.Records.PTX.STO, _PTX_STO,+    module OpenAFP.Records.PTX.SVI, _PTX_SVI,+    module OpenAFP.Records.PTX.TRN, _PTX_TRN,+) where+import OpenAFP.Types+import OpenAFP.Records.PTX.AMB+import OpenAFP.Records.PTX.AMI+import OpenAFP.Records.PTX.BLN+import OpenAFP.Records.PTX.BSU+import OpenAFP.Records.PTX.DBR+import OpenAFP.Records.PTX.DIR+import OpenAFP.Records.PTX.ESU+import OpenAFP.Records.PTX.NOP+import OpenAFP.Records.PTX.RMB+import OpenAFP.Records.PTX.RMI+import OpenAFP.Records.PTX.RPS+import OpenAFP.Records.PTX.SBI+import OpenAFP.Records.PTX.SCFL+import OpenAFP.Records.PTX.SIA+import OpenAFP.Records.PTX.SIM+import OpenAFP.Records.PTX.STC+import OpenAFP.Records.PTX.STO+import OpenAFP.Records.PTX.SVI+import OpenAFP.Records.PTX.TRN++_PTX_AMB :: PTX_AMB+_PTX_AMB = PTX_AMB 0xD2 0+_PTX_AMI :: PTX_AMI+_PTX_AMI = PTX_AMI 0xC6 0+_PTX_BLN :: PTX_BLN+_PTX_BLN = PTX_BLN 0xD8 _NStr+_PTX_BSU :: PTX_BSU+_PTX_BSU = PTX_BSU 0xF2 _NStr+_PTX_DBR :: PTX_DBR+_PTX_DBR = PTX_DBR 0xE6 _NStr+_PTX_DIR :: PTX_DIR+_PTX_DIR = PTX_DIR 0xE4 _NStr+_PTX_ESU :: PTX_ESU+_PTX_ESU = PTX_ESU 0xF4 _NStr+_PTX_NOP :: PTX_NOP+_PTX_NOP = PTX_NOP 0xF8 _NStr+_PTX_RMB :: PTX_RMB+_PTX_RMB = PTX_RMB 0xD4 0+_PTX_RMI :: PTX_RMI+_PTX_RMI = PTX_RMI 0xC8 0+_PTX_RPS :: PTX_RPS+_PTX_RPS = PTX_RPS 0xEE _NStr+_PTX_SBI :: PTX_SBI+_PTX_SBI = PTX_SBI 0xD0 0+_PTX_SCFL :: PTX_SCFL+_PTX_SCFL = PTX_SCFL 0xF0 0+_PTX_SIA :: PTX_SIA+_PTX_SIA = PTX_SIA 0xC2 0+_PTX_SIM :: PTX_SIM+_PTX_SIM = PTX_SIM 0xC0 0+_PTX_STC :: PTX_STC+_PTX_STC = PTX_STC 0x74 _NStr+_PTX_STO :: PTX_STO+_PTX_STO = PTX_STO 0xF6 0 0+_PTX_SVI :: PTX_SVI+_PTX_SVI = PTX_SVI 0xC4 0+_PTX_TRN :: PTX_TRN+_PTX_TRN = PTX_TRN 0xDA _NStr+
+ src/OpenAFP/Records/PTX/AMB.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.AMB where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_AMB = PTX_AMB {+    ptx_amb_Type                     :: !N1+    ,ptx_amb                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/AMI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.AMI where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_AMI = PTX_AMI {+    ptx_ami_Type                     :: !N1+    ,ptx_ami                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/BLN.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.BLN where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_BLN = PTX_BLN {+    ptx_bln_Type                     :: !N1+    ,ptx_bln                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/BSU.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.BSU where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_BSU = PTX_BSU {+    ptx_bsu_Type                     :: !N1+    ,ptx_bsu                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/DBR.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.DBR where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_DBR = PTX_DBR {+    ptx_dbr_Type                     :: !N1+    ,ptx_dbr                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/DIR.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.DIR where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_DIR = PTX_DIR {+    ptx_dir_Type                     :: !N1+    ,ptx_dir                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/ESU.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.ESU where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_ESU = PTX_ESU {+    ptx_esu_Type                     :: !N1+    ,ptx_esu                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/NOP.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.NOP where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_NOP = PTX_NOP {+    ptx_nop_Type                     :: !N1+    ,ptx_nop                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/RMB.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.RMB where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_RMB = PTX_RMB {+    ptx_rmb_Type                     :: !N1+    ,ptx_rmb                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/RMI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.RMI where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_RMI = PTX_RMI {+    ptx_rmi_Type                     :: !N1+    ,ptx_rmi                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/RPS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.RPS where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_RPS = PTX_RPS {+    ptx_rps_Type                     :: !N1+    ,ptx_rps                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/SBI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.SBI where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_SBI = PTX_SBI {+    ptx_sbi_Type                     :: !N1+    ,ptx_sbi                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/SCFL.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.SCFL where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_SCFL = PTX_SCFL {+    ptx_scfl_Type                    :: !N1+    ,ptx_scfl                        :: !N1+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/SIA.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.SIA where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_SIA = PTX_SIA {+    ptx_sia_Type                     :: !N1+    ,ptx_sia                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/SIM.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.SIM where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_SIM = PTX_SIM {+    ptx_sim_Type                     :: !N1+    ,ptx_sim                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/STC.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.STC where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_STC = PTX_STC {+    ptx_stc_Type                     :: !N1+    ,ptx_stc                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/STO.hs view
@@ -0,0 +1,11 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.STO where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_STO = PTX_STO {+    ptx_sto_Type                     :: !N1+    ,ptx_sto_Orientation             :: !N2+    ,ptx_sto_WrapDirection           :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/SVI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.SVI where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_SVI = PTX_SVI {+    ptx_svi_Type                     :: !N1+    ,ptx_svi                         :: !N2+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/PTX/TRN.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.PTX.TRN where+import OpenAFP.Types+import OpenAFP.Internals++data PTX_TRN = PTX_TRN {+    ptx_trn_Type                     :: !N1+    ,ptx_trn                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T.hs view
@@ -0,0 +1,233 @@+module OpenAFP.Records.T (+    module OpenAFP.Records.T.AD, _T_AD,+    module OpenAFP.Records.T.AQ, _T_AQ,+    module OpenAFP.Records.T.AV, _T_AV,+    module OpenAFP.Records.T.C, _T_C,+    module OpenAFP.Records.T.CF, _T_CF,+    module OpenAFP.Records.T.CGCSGI, _T_CGCSGI,+    module OpenAFP.Records.T.CR, _T_CR,+    module OpenAFP.Records.T.CS, _T_CS,+    module OpenAFP.Records.T.DP, _T_DP,+    module OpenAFP.Records.T.EF, _T_EF,+    module OpenAFP.Records.T.ERLI, _T_ERLI,+    module OpenAFP.Records.T.ESI, _T_ESI,+    module OpenAFP.Records.T.FCGCSGI, _T_FCGCSGI,+    module OpenAFP.Records.T.FDS, _T_FDS,+    module OpenAFP.Records.T.FF, _T_FF,+    module OpenAFP.Records.T.FHSF, _T_FHSF,+    module OpenAFP.Records.T.FO, _T_FO,+    module OpenAFP.Records.T.FQN, _T_FQN,+    module OpenAFP.Records.T.FRMT, _T_FRMT,+    module OpenAFP.Records.T.II, _T_II,+    module OpenAFP.Records.T.LDOPM, _T_LDOPM,+    module OpenAFP.Records.T.LDTS, _T_LDTS,+    module OpenAFP.Records.T.MA, _T_MA,+    module OpenAFP.Records.T.MEC, _T_MEC,+    module OpenAFP.Records.T.MF, _T_MF,+    module OpenAFP.Records.T.MIS, _T_MIS,+    module OpenAFP.Records.T.MMPN, _T_MMPN,+    module OpenAFP.Records.T.MO, _T_MO,+    module OpenAFP.Records.T.MOR, _T_MOR,+    module OpenAFP.Records.T.OAMU, _T_OAMU,+    module OpenAFP.Records.T.OAS, _T_OAS,+    module OpenAFP.Records.T.OBE, _T_OBE,+    module OpenAFP.Records.T.OBO, _T_OBO,+    module OpenAFP.Records.T.OCH, _T_OCH,+    module OpenAFP.Records.T.OCL, _T_OCL,+    module OpenAFP.Records.T.OCO, _T_OCO,+    module OpenAFP.Records.T.OFSS, _T_OFSS,+    module OpenAFP.Records.T.OO, _T_OO,+    module OpenAFP.Records.T.OOI, _T_OOI,+    module OpenAFP.Records.T.OSFE, _T_OSFE,+    module OpenAFP.Records.T.OSFO, _T_OSFO,+    module OpenAFP.Records.T.PC, _T_PC,+    module OpenAFP.Records.T.POCP, _T_POCP,+    module OpenAFP.Records.T.PPI, _T_PPI,+    module OpenAFP.Records.T.PSMR, _T_PSMR,+    module OpenAFP.Records.T.PSRM, _T_PSRM,+    module OpenAFP.Records.T.PV, _T_PV,+    module OpenAFP.Records.T.RLI, _T_RLI,+    module OpenAFP.Records.T.ROI, _T_ROI,+    module OpenAFP.Records.T.ROT, _T_ROT,+    module OpenAFP.Records.T.RSN, _T_RSN,+    module OpenAFP.Records.T.RUA, _T_RUA,+    module OpenAFP.Records.T.T1CRMT, _T_T1CRMT,+    module OpenAFP.Records.T.T2FRMT, _T_T2FRMT,+    module OpenAFP.Records.T.TO, _T_TO,+    module OpenAFP.Records.T.TS, _T_TS,+    module OpenAFP.Records.T.UDTS, _T_UDTS,+) where+import OpenAFP.Types+import OpenAFP.Records.T.AD+import OpenAFP.Records.T.AQ+import OpenAFP.Records.T.AV+import OpenAFP.Records.T.C+import OpenAFP.Records.T.CF+import OpenAFP.Records.T.CGCSGI+import OpenAFP.Records.T.CR+import OpenAFP.Records.T.CS+import OpenAFP.Records.T.DP+import OpenAFP.Records.T.EF+import OpenAFP.Records.T.ERLI+import OpenAFP.Records.T.ESI+import OpenAFP.Records.T.FCGCSGI+import OpenAFP.Records.T.FDS+import OpenAFP.Records.T.FF+import OpenAFP.Records.T.FHSF+import OpenAFP.Records.T.FO+import OpenAFP.Records.T.FQN+import OpenAFP.Records.T.FRMT+import OpenAFP.Records.T.II+import OpenAFP.Records.T.LDOPM+import OpenAFP.Records.T.LDTS+import OpenAFP.Records.T.MA+import OpenAFP.Records.T.MEC+import OpenAFP.Records.T.MF+import OpenAFP.Records.T.MIS+import OpenAFP.Records.T.MMPN+import OpenAFP.Records.T.MO+import OpenAFP.Records.T.MOR+import OpenAFP.Records.T.OAMU+import OpenAFP.Records.T.OAS+import OpenAFP.Records.T.OBE+import OpenAFP.Records.T.OBO+import OpenAFP.Records.T.OCH+import OpenAFP.Records.T.OCL+import OpenAFP.Records.T.OCO+import OpenAFP.Records.T.OFSS+import OpenAFP.Records.T.OO+import OpenAFP.Records.T.OOI+import OpenAFP.Records.T.OSFE+import OpenAFP.Records.T.OSFO+import OpenAFP.Records.T.PC+import OpenAFP.Records.T.POCP+import OpenAFP.Records.T.PPI+import OpenAFP.Records.T.PSMR+import OpenAFP.Records.T.PSRM+import OpenAFP.Records.T.PV+import OpenAFP.Records.T.RLI+import OpenAFP.Records.T.ROI+import OpenAFP.Records.T.ROT+import OpenAFP.Records.T.RSN+import OpenAFP.Records.T.RUA+import OpenAFP.Records.T.T1CRMT+import OpenAFP.Records.T.T2FRMT+import OpenAFP.Records.T.TO+import OpenAFP.Records.T.TS+import OpenAFP.Records.T.UDTS++_T_AD :: T_AD+_T_AD = T_AD 0x4D _NStr+_T_AQ :: T_AQ+_T_AQ = T_AQ 0x80 _NStr+_T_AV :: T_AV+_T_AV = T_AV 0x36 _NStr+_T_C  :: T_C+_T_C  = T_C  0x65 _NStr+_T_CF :: T_CF+_T_CF = T_CF 0x75 _NStr+_T_CGCSGI :: T_CGCSGI+_T_CGCSGI = T_CGCSGI 0x01 _NStr+_T_CR :: T_CR+_T_CR = T_CR 0x26 _NStr+_T_CS :: T_CS+_T_CS = T_CS 0x4E _NStr+_T_DP :: T_DP+_T_DP = T_DP 0x43 _NStr+_T_EF :: T_EF+_T_EF = T_EF 0x6D _NStr+_T_ERLI :: T_ERLI+_T_ERLI = T_ERLI 0x23 _NStr+_T_ESI :: T_ESI+_T_ESI = T_ESI 0x50 _NStr+_T_FCGCSGI :: T_FCGCSGI+_T_FCGCSGI = T_FCGCSGI 0x20 _NStr+_T_FDS :: T_FDS+_T_FDS = T_FDS 0x1F _NStr+_T_FF :: T_FF+_T_FF = T_FF 0x78 _NStr+_T_FHSF :: T_FHSF+_T_FHSF = T_FHSF 0x5D _NStr+_T_FO :: T_FO+_T_FO = T_FO 0x85 _NStr+_T_FQN :: T_FQN+_T_FQN = T_FQN 0x02 0 0 0+_T_FRMT :: T_FRMT+_T_FRMT = T_FRMT 0x84 _NStr+_T_II :: T_II+_T_II = T_II 0x73 _NStr+_T_LDOPM :: T_LDOPM+_T_LDOPM = T_LDOPM 0x27 _NStr+_T_LDTS :: T_LDTS+_T_LDTS = T_LDTS 0x62 _NStr+_T_MA :: T_MA+_T_MA = T_MA 0x79 _NStr+_T_MEC :: T_MEC+_T_MEC = T_MEC 0x45 _NStr+_T_MF :: T_MF+_T_MF = T_MF 0x87 _NStr+_T_MIS :: T_MIS+_T_MIS = T_MIS 0x18 _NStr+_T_MMPN :: T_MMPN+_T_MMPN = T_MMPN 0x56 _NStr+_T_MO :: T_MO+_T_MO = T_MO 0x04 _NStr+_T_MOR :: T_MOR+_T_MOR = T_MOR 0x68 _NStr+_T_OAMU :: T_OAMU+_T_OAMU = T_OAMU 0x4B _NStr+_T_OAS :: T_OAS+_T_OAS = T_OAS 0x4C _NStr+_T_OBE :: T_OBE+_T_OBE = T_OBE 0x57 _NStr+_T_OBO :: T_OBO+_T_OBO = T_OBO 0x2D _NStr+_T_OCH :: T_OCH+_T_OCH = T_OCH 0x63 _NStr+_T_OCL :: T_OCL+_T_OCL = T_OCL 0x10 _NStr+_T_OCO :: T_OCO+_T_OCO = T_OCO 0x5E _NStr+_T_OFSS :: T_OFSS+_T_OFSS = T_OFSS 0x21 _NStr+_T_OO :: T_OO+_T_OO = T_OO 0x5A _NStr+_T_OOI :: T_OOI+_T_OOI = T_OOI 0x64 _NStr+_T_OSFE :: T_OSFE+_T_OSFE = T_OSFE 0x59 _NStr+_T_OSFO :: T_OSFO+_T_OSFO = T_OSFO 0x58 _NStr+_T_PC :: T_PC+_T_PC = T_PC 0x83 _NStr+_T_POCP :: T_POCP+_T_POCP = T_POCP 0x46 _NStr+_T_PPI :: T_PPI+_T_PPI = T_PPI 0x81 _NStr+_T_PSMR :: T_PSMR+_T_PSMR = T_PSMR 0x71 _NStr+_T_PSRM :: T_PSRM+_T_PSRM = T_PSRM 0x70 _NStr+_T_PV :: T_PV+_T_PV = T_PV 0x82 _NStr+_T_RLI :: T_RLI+_T_RLI = T_RLI 0x24 0 0+_T_ROI :: T_ROI+_T_ROI = T_ROI 0x6C _NStr+_T_ROT :: T_ROT+_T_ROT = T_ROT 0x22 _NStr+_T_RSN :: T_RSN+_T_RSN = T_RSN 0x25 _NStr+_T_RUA :: T_RUA+_T_RUA = T_RUA 0x47 _NStr+_T_T1CRMT :: T_T1CRMT+_T_T1CRMT = T_T1CRMT 0x63 _NStr+_T_T2FRMT :: T_T2FRMT+_T_T2FRMT = T_T2FRMT 0x63 _NStr+_T_TO :: T_TO+_T_TO = T_TO 0x1D _NStr+_T_TS :: T_TS+_T_TS = T_TS 0x74 _NStr+_T_UDTS :: T_UDTS+_T_UDTS = T_UDTS 0x72 _NStr+
+ src/OpenAFP/Records/T/AD.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.AD where+import OpenAFP.Types+import OpenAFP.Internals++data T_AD = T_AD {+    t_ad_Type                        :: !N1+    ,t_ad                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/AQ.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.AQ where+import OpenAFP.Types+import OpenAFP.Internals++data T_AQ = T_AQ {+    t_aq_Type                        :: !N1+    ,t_aq                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/AV.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.AV where+import OpenAFP.Types+import OpenAFP.Internals++data T_AV = T_AV {+    t_av_Type                        :: !N1+    ,t_av                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/C.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.C where+import OpenAFP.Types+import OpenAFP.Internals++data T_C = T_C {+    t_c_Type                         :: !N1+    ,t_c                             :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/CF.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.CF where+import OpenAFP.Types+import OpenAFP.Internals++data T_CF = T_CF {+    t_cf_Type                        :: !N1+    ,t_cf                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/CGCSGI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.CGCSGI where+import OpenAFP.Types+import OpenAFP.Internals++data T_CGCSGI = T_CGCSGI {+    t_cgcsgi_Type                    :: !N1+    ,t_cgcsgi                        :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/CR.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.CR where+import OpenAFP.Types+import OpenAFP.Internals++data T_CR = T_CR {+    t_cr_Type                        :: !N1+    ,t_cr                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/CS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.CS where+import OpenAFP.Types+import OpenAFP.Internals++data T_CS = T_CS {+    t_cs_Type                        :: !N1+    ,t_cs                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/DP.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.DP where+import OpenAFP.Types+import OpenAFP.Internals++data T_DP = T_DP {+    t_dp_Type                        :: !N1+    ,t_dp                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/EF.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.EF where+import OpenAFP.Types+import OpenAFP.Internals++data T_EF = T_EF {+    t_ef_Type                        :: !N1+    ,t_ef                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/ERLI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.ERLI where+import OpenAFP.Types+import OpenAFP.Internals++data T_ERLI = T_ERLI {+    t_erli_Type                      :: !N1+    ,t_erli                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/ESI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.ESI where+import OpenAFP.Types+import OpenAFP.Internals++data T_ESI = T_ESI {+    t_esi_Type                       :: !N1+    ,t_esi                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FCGCSGI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FCGCSGI where+import OpenAFP.Types+import OpenAFP.Internals++data T_FCGCSGI = T_FCGCSGI {+    t_fcgcsgi_Type                   :: !N1+    ,t_fcgcsgi                       :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FDS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FDS where+import OpenAFP.Types+import OpenAFP.Internals++data T_FDS = T_FDS {+    t_fds_Type                       :: !N1+    ,t_fds                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FF.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FF where+import OpenAFP.Types+import OpenAFP.Internals++data T_FF = T_FF {+    t_ff_Type                        :: !N1+    ,t_ff                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FHSF.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FHSF where+import OpenAFP.Types+import OpenAFP.Internals++data T_FHSF = T_FHSF {+    t_fhsf_Type                      :: !N1+    ,t_fhsf                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FO where+import OpenAFP.Types+import OpenAFP.Internals++data T_FO = T_FO {+    t_fo_Type                        :: !N1+    ,t_fo                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FQN.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FQN where+import OpenAFP.Types+import OpenAFP.Internals++data T_FQN = T_FQN {+    t_fqn_Type                       :: !N1+    ,t_fqn_SubType                   :: !N1+    ,t_fqn_Format                    :: !N1+    ,t_fqn                           :: !A8+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/FRMT.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.FRMT where+import OpenAFP.Types+import OpenAFP.Internals++data T_FRMT = T_FRMT {+    t_frmt_Type                      :: !N1+    ,t_frmt                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/II.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.II where+import OpenAFP.Types+import OpenAFP.Internals++data T_II = T_II {+    t_ii_Type                        :: !N1+    ,t_ii                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/LDOPM.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.LDOPM where+import OpenAFP.Types+import OpenAFP.Internals++data T_LDOPM = T_LDOPM {+    t_ldopm_Type                     :: !N1+    ,t_ldopm                         :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/LDTS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.LDTS where+import OpenAFP.Types+import OpenAFP.Internals++data T_LDTS = T_LDTS {+    t_ldts_Type                      :: !N1+    ,t_ldts                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MA.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MA where+import OpenAFP.Types+import OpenAFP.Internals++data T_MA = T_MA {+    t_ma_Type                        :: !N1+    ,t_ma                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MEC.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MEC where+import OpenAFP.Types+import OpenAFP.Internals++data T_MEC = T_MEC {+    t_mec_Type                       :: !N1+    ,t_mec                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MF.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MF where+import OpenAFP.Types+import OpenAFP.Internals++data T_MF = T_MF {+    t_mf_Type                        :: !N1+    ,t_mf                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MIS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MIS where+import OpenAFP.Types+import OpenAFP.Internals++data T_MIS = T_MIS {+    t_mis_Type                       :: !N1+    ,t_mis                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MMPN.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MMPN where+import OpenAFP.Types+import OpenAFP.Internals++data T_MMPN = T_MMPN {+    t_mmpn_Type                      :: !N1+    ,t_mmpn                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MO where+import OpenAFP.Types+import OpenAFP.Internals++data T_MO = T_MO {+    t_mo_Type                        :: !N1+    ,t_mo                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/MOR.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.MOR where+import OpenAFP.Types+import OpenAFP.Internals++data T_MOR = T_MOR {+    t_mor_Type                       :: !N1+    ,t_mor                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OAMU.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OAMU where+import OpenAFP.Types+import OpenAFP.Internals++data T_OAMU = T_OAMU {+    t_oamu_Type                      :: !N1+    ,t_oamu                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OAS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OAS where+import OpenAFP.Types+import OpenAFP.Internals++data T_OAS = T_OAS {+    t_oas_Type                       :: !N1+    ,t_oas                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OBE.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OBE where+import OpenAFP.Types+import OpenAFP.Internals++data T_OBE = T_OBE {+    t_obe_Type                       :: !N1+    ,t_obe                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OBO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OBO where+import OpenAFP.Types+import OpenAFP.Internals++data T_OBO = T_OBO {+    t_obo_Type                       :: !N1+    ,t_obo                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OCH.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OCH where+import OpenAFP.Types+import OpenAFP.Internals++data T_OCH = T_OCH {+    t_och_Type                       :: !N1+    ,t_och                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OCL.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OCL where+import OpenAFP.Types+import OpenAFP.Internals++data T_OCL = T_OCL {+    t_ocl_Type                       :: !N1+    ,t_ocl                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OCO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OCO where+import OpenAFP.Types+import OpenAFP.Internals++data T_OCO = T_OCO {+    t_oco_Type                       :: !N1+    ,t_oco                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OFSS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OFSS where+import OpenAFP.Types+import OpenAFP.Internals++data T_OFSS = T_OFSS {+    t_ofss_Type                      :: !N1+    ,t_ofss                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OO where+import OpenAFP.Types+import OpenAFP.Internals++data T_OO = T_OO {+    t_oo_Type                        :: !N1+    ,t_oo                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OOI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OOI where+import OpenAFP.Types+import OpenAFP.Internals++data T_OOI = T_OOI {+    t_ooi_Type                       :: !N1+    ,t_ooi                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OSFE.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OSFE where+import OpenAFP.Types+import OpenAFP.Internals++data T_OSFE = T_OSFE {+    t_osfe_Type                      :: !N1+    ,t_osfe                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/OSFO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.OSFO where+import OpenAFP.Types+import OpenAFP.Internals++data T_OSFO = T_OSFO {+    t_osfo_Type                      :: !N1+    ,t_osfo                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/PC.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.PC where+import OpenAFP.Types+import OpenAFP.Internals++data T_PC = T_PC {+    t_pc_Type                        :: !N1+    ,t_pc                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/POCP.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.POCP where+import OpenAFP.Types+import OpenAFP.Internals++data T_POCP = T_POCP {+    t_pocp_Type                      :: !N1+    ,t_pocp                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/PPI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.PPI where+import OpenAFP.Types+import OpenAFP.Internals++data T_PPI = T_PPI {+    t_ppi_Type                       :: !N1+    ,t_ppi                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/PSMR.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.PSMR where+import OpenAFP.Types+import OpenAFP.Internals++data T_PSMR = T_PSMR {+    t_psmr_Type                      :: !N1+    ,t_psmr                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/PSRM.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.PSRM where+import OpenAFP.Types+import OpenAFP.Internals++data T_PSRM = T_PSRM {+    t_psrm_Type                      :: !N1+    ,t_psrm                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/PV.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.PV where+import OpenAFP.Types+import OpenAFP.Internals++data T_PV = T_PV {+    t_pv_Type                        :: !N1+    ,t_pv                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/RLI.hs view
@@ -0,0 +1,11 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.RLI where+import OpenAFP.Types+import OpenAFP.Internals++data T_RLI = T_RLI {+    t_rli_Type                       :: !N1+    ,t_rli_SubType                   :: !N1+    ,t_rli                           :: !N1+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/ROI.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.ROI where+import OpenAFP.Types+import OpenAFP.Internals++data T_ROI = T_ROI {+    t_roi_Type                       :: !N1+    ,t_roi                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/ROT.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.ROT where+import OpenAFP.Types+import OpenAFP.Internals++data T_ROT = T_ROT {+    t_rot_Type                       :: !N1+    ,t_rot                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/RSN.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.RSN where+import OpenAFP.Types+import OpenAFP.Internals++data T_RSN = T_RSN {+    t_rsn_Type                       :: !N1+    ,t_rsn                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/RUA.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.RUA where+import OpenAFP.Types+import OpenAFP.Internals++data T_RUA = T_RUA {+    t_rua_Type                       :: !N1+    ,t_rua                           :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/T1CRMT.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.T1CRMT where+import OpenAFP.Types+import OpenAFP.Internals++data T_T1CRMT = T_T1CRMT {+    t_t1crmt_Type                    :: !N1+    ,t_t1crmt                        :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/T2FRMT.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.T2FRMT where+import OpenAFP.Types+import OpenAFP.Internals++data T_T2FRMT = T_T2FRMT {+    t_t2frmt_Type                    :: !N1+    ,t_t2frmt                        :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/TO.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.TO where+import OpenAFP.Types+import OpenAFP.Internals++data T_TO = T_TO {+    t_to_Type                        :: !N1+    ,t_to                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/TS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.TS where+import OpenAFP.Types+import OpenAFP.Internals++data T_TS = T_TS {+    t_ts_Type                        :: !N1+    ,t_ts                            :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Records/T/UDTS.hs view
@@ -0,0 +1,10 @@+{-# OPTIONS -fglasgow-exts -funbox-strict-fields #-}+module OpenAFP.Records.T.UDTS where+import OpenAFP.Types+import OpenAFP.Internals++data T_UDTS = T_UDTS {+    t_udts_Type                      :: !N1+    ,t_udts                          :: !NStr+} deriving (Show, Typeable)+
+ src/OpenAFP/Types.hs view
@@ -0,0 +1,64 @@+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Types+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module imports and re-exports the fundamental types in the OpenAFP+-- framework: Buffer, ChunkBuf and Record.+--+-----------------------------------------------------------------------------++module OpenAFP.Types (+    module OpenAFP.Types.Buffer,+    module OpenAFP.Types.Chunk,+    module OpenAFP.Types.Record,+    module OpenAFP.Types.View,+    T_(..), viewChunks, viewData, viewNumber,+    viewString, viewNStr, viewField, viewRecord+) where+import OpenAFP.Types.Buffer+import OpenAFP.Types.Chunk+import OpenAFP.Types.Record+import OpenAFP.Types.View+import OpenAFP.Internals++newtype T_ = T_ (N1, Buffer1) deriving (Show, Typeable)++viewChunks cs = do+    rs <- mapM viewChunk cs+    return $ ViewChunks (typeOf cs, rs)++viewChunk c = withChunk c recView++withChunk :: (ChunkBuf a n b, MonadIO m) => a -> (forall r. (Rec r) => r -> m x) -> m x+withChunk c = chunkApply (fst . chunkDecon $ c) c++viewData ds = do+    rs <- mapM recView ds+    return $ ViewData (typeOf ds, rs)++viewNumber n = return $ ViewNumber (typeOf n, fromEnum n)++viewString a = return $ ViewString (typeOf a, reverse [ toAsc n | n <- [ 0..((sizeOf a)-1) ] ])+    where toAsc n = ebc2asc ! fromIntegral ((a `shiftR` (8 * n)) .&. 0xFF)++viewNStr nstr = do+    let (pstr, len) = bufToPStrLen nstr+    withForeignPtr (castForeignPtr pstr) $ \cstr -> do+        ns <- peekArray (min len 80) cstr+        return $ ViewNStr (typeOf nstr, ns)++viewField l io = do+    content <- io+    return $ ViewField (l, content)++viewRecord t io = do+    fields <- sequence io+    return $ ViewRecord (t, fields)
+ src/OpenAFP/Types/Buffer.hs view
@@ -0,0 +1,71 @@+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Types.Buffer+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module handles sized binary buffers.+--+-----------------------------------------------------------------------------++module OpenAFP.Types.Buffer where+import OpenAFP.Internals++-- | The Buf class represents buffers, with the leading bytes+--   representing its length.+class (Show a, Typeable a) => Buf a where+    bufFromPStrLen :: PStringLen -> a+    bufToPStrLen :: a -> PStringLen++-- | Buffer0, being a simple PStringLen, is of unlimited length.+newtype Buffer0 = Buf0 PStringLen deriving (Show, Typeable)++-- | Buffer1 uses one byte as length, hence is at most 254 bytes long.+newtype Buffer1 = Buf1 PStringLen deriving (Show, Typeable)++-- | Buffer2 uses two bytes; it can store up to 65535 bytes.+newtype Buffer2 = Buf2 PStringLen deriving (Show, Typeable)++instance Buf Buffer0 where+    bufFromPStrLen = Buf0+    bufToPStrLen (Buf0 b) = b+instance Buf Buffer1 where+    bufFromPStrLen = Buf1+    bufToPStrLen (Buf1 b) = b+instance Buf Buffer2 where+    bufFromPStrLen = Buf2+    bufToPStrLen (Buf2 b) = b++instance Binary Buffer0 where+    put bh buf = putBuf bh $ bufToPStrLen buf+    get bh = do+        pos     <- tellBin bh+        size    <- sizeBin bh+        pstrlen <- getBuf bh (size - pos)+	return $ bufFromPStrLen pstrlen++instance Binary Buffer1 where+    put bh buf = do+        put bh (fromIntegral (len + 1) :: N1)+        putBuf bh $ bufToPStrLen buf+        where len = snd $ bufToPStrLen buf+    get bh = do+        size <- get bh :: IO N1+        pstrlen <- getBuf bh $ (fromEnum size) - 1+	return $ bufFromPStrLen pstrlen++instance Binary Buffer2 where+    put bh buf = do+        put bh (fromIntegral (len + 2) :: N2)+        putBuf bh $ bufToPStrLen buf+        where len = snd $ bufToPStrLen buf+    get bh = do+        size <- get bh :: IO N2+        pstrlen <- getBuf bh $ (fromEnum size) - 2+	return $ bufFromPStrLen pstrlen
+ src/OpenAFP/Types/Chunk.hs view
@@ -0,0 +1,233 @@+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Types.Chunk+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module handles pre-parsed "chunks" in AFP files.+--+-----------------------------------------------------------------------------++module OpenAFP.Types.Chunk where+import OpenAFP.Internals+import OpenAFP.Types.Buffer+import OpenAFP.Types.Record++infixl 4 ~~+infixl 4 <~~+infixl 4 ~~>+infixl 4 <==+infixl 4 ==>+infixl 4 <..+infixl 4 ..>+infixr 4 ===+infixr 4 ...+infixr 4 ....+infixr 4 .....++type NStr = Buffer0+type AStr = NStr++type ChunkWriter c = WriterT (ChunkQueue c)+type WriterStateIO v a = (ChunkBuf c n b, MonadReader v m, MonadPlus m, MonadIO m, MonadError e m, Show e, Typeable e) => ChunkWriter c m a++instance Storable NStr where+    alignment _ = 8+    sizeOf      = snd . bufToPStrLen++nullForeignPtr = unsafePerformIO (newForeignPtr_ nullPtr)++_NStr :: NStr+_NStr = bufFromPStrLen (nullForeignPtr, 0)++fromAStr :: AStr -> IOm String+fromAStr nstr = liftIO $ do+    let (pstr, len) = bufToPStrLen nstr+    withForeignPtr (castForeignPtr pstr) $ \cstr -> do+        ns <- peekArray len cstr+        return $ map (ebc2asc !) ns++toAStr :: String -> IOm AStr+toAStr str = liftIO $ do+    let len = length str+    pstr <- mallocForeignPtrBytes len+    withForeignPtr pstr $ \cstr -> do+        pokeArray cstr $ map ((asc2ebc !) . ord) str+        return $ bufFromPStrLen (castForeignPtr pstr, len)++fromNStr :: NStr -> IOm [N1]+fromNStr nstr = liftIO $ do+    let (pstr, len) = bufToPStrLen nstr+    withForeignPtr (castForeignPtr pstr) $ \cstr ->+        peekArray len cstr++toNStr :: [N1] -> IOm NStr+toNStr list = liftIO $ do+    let len = length list+    pstr <- mallocForeignPtrBytes len+    withForeignPtr pstr $ \cstr -> do+        pokeArray cstr list+        return $ bufFromPStrLen (castForeignPtr pstr, len)++newtype ChunkType = MkChunkType String+    deriving (Show, Eq, Typeable, Ord)++chunkTypeOf :: Typeable a => a -> ChunkType+chunkTypeOf = MkChunkType . show . typeOf++-- | The ChunkBuf class represents non-parsed chunks, constructed from a+--   (ChunkType, Buffer) tuple.+class (Show c, Typeable c, Buf b, Num n, Enum n) => ChunkBuf c n b | c -> n, c -> b where+    chunkApply :: (MonadIO m) => n -> c -> (forall a. (Rec a) => (a -> m x)) -> m x+    chunkCon :: (n, b) -> c+    chunkDecon :: c -> (n, b)+    chunkType :: c -> ChunkType+    chunkType c = chunkTypeLookup c . fst . chunkDecon $ c+    chunkTypeLookup :: c -> n -> ChunkType+    chunkToPStrLen :: c -> PStringLen+    chunkMapFiltersM_ :: (MonadIO m) => c -> [(ChunkType, c -> m [c])] -> m ()+    chunkMapFiltersM_ c possibleFilters+        | null filters  = return ()+        | otherwise     = mapM_ (\(_, f) -> do f c ; return ()) filters+        where filters = filter (\(t, _) -> (t == chunkType c)) possibleFilters+    chunkMapFiltersM :: (MonadIO m) => c -> [(ChunkType, c -> m [c])] -> m [c]+    chunkMapFiltersM c possibleFilters+        | null filters  = return [c]+        | otherwise     = do+            c' <- foldM applyF [c] filters+            return c'+        where+            filters = filter (\(t, _) -> (t == chunkType c)) possibleFilters+            applyF r (_, f) = do+                r' <- mapM f r+                return $ concat r'+    chunksMapFiltersM :: (MonadIO m) => [c] -> [(ChunkType, c -> m [c])] -> m [c]+    chunksMapFiltersM cs list = do+        lol <- mapM (`chunkMapFiltersM` list) cs+        return $ concat lol+    chunksMapFiltersM_ :: (MonadIO m) => [c] -> [(ChunkType, c -> m [c])] -> m ()+    chunksMapFiltersM_ cs list = mapM_ (`chunkMapFiltersM_` list) cs+    chunkToRecord :: (Binary (Record r)) => c -> IO (Record r)+    chunkToRecord c = do+	let (pstr, len) = chunkToPStrLen c+        bh <- openBinBuf (pstr, len)+        -- XXX: Associate this with the reified chunkType+        (Record r) <- get bh+        addFinalizer r $ touchForeignPtr pstr+        return $ Record r+    chunkToPStrLen c = bufToPStrLen buf where (_, buf) = chunkDecon c+    chunkFromRecord :: (Binary r, Storable r, Rec r) => r -> IO c+    chunkFromRecord item = do+        bh <- newBinBuf (sizeOf item)+        put bh item+        return $ chunkCon (toEnum . recType $ item, bufFromPStrLen $ bufOf bh)++-- | The RecChunk class unifies a Rec (parent) with its contained+--   chunk types (children).+class (Rec r, ChunkBuf c n b) => RecChunk r c n b | r -> c where+    readChunks :: r -> [c]+    readChunks = error "readChunks not defined"+    writeChunks :: (MonadIO m) => r -> m [c] -> m r+    writeChunks = error "writeChunks not defined"++-- | The RecData class unifies a Rec (parent) with its contained+--   Rec data type (children).+class (Rec a, Rec b) => RecData a b | a -> b, b -> a where+    readData :: a -> [Record b]+    readData = error "readData not defined"+    writeData :: a -> [Record b] -> a+    writeData = error "writeData not defined"++-- | The ChunkLookup class unifies a Chunk (parent) with its lookup+--   dispatch function.+{-++class ChunkLookup a b | a -> b where+    chunkLookup :: (ChunkBuf a c) => b -> c -> a++instance (ChunkLookup a b, ChunkBuf a c, Binary c) => Binary a where+    put bh chunk = put bh $ snd $ chunkDecon chunk+    get bh = do+        buf     <- get bh+        bh'     <- openBinBuf $ bufToPStrLen buf+        buftype <- get bh'+        return $ chunkLookup buftype buf+-}+++instance (Rec a, Binary a) => Storable [a] where+    alignment = undefined+    sizeOf r = recSizeOf r+    +(~~) :: (ChunkBuf c n b, Typeable t) => c -> t -> Bool+c ~~ t = (chunkTypeOf t == chunkType c)++(<~~) :: (ChunkBuf c n b, Typeable t, Rec r) => t -> [c] -> IOm r+t <~~ cs = do+    Record r <- liftIO $ chunkToRecord $ fromJust $ find (~~ t) cs+    return r++(~~>) :: (ChunkBuf c n b, Typeable t, Rec r) => [c] -> t -> IOm r+cs ~~> t = do+    Record r <- liftIO $ chunkToRecord $ fromJust $ find (~~ t) cs+    return r++(==>) :: (ChunkBuf c n b, MonadIO m) => [c] -> [(ChunkType, c -> m [c])] -> m [c]+cs ==> fs = chunksMapFiltersM cs fs++(<==) :: (ChunkBuf c n b, MonadIO m) => [(ChunkType, c -> m [c])] -> [c] -> m [c]+(<==) = flip (==>)++(..>) :: (ChunkBuf c n b, MonadIO m) => [c] -> [(ChunkType, c -> m [c])] -> m ()+cs ..> fs = chunksMapFiltersM_ cs fs++(<..) :: (ChunkBuf c n b, MonadIO m) => [(ChunkType, c -> m [c])] -> [c] -> m ()+(<..) = flip (..>)++t === f = (chunkTypeOf t, processChunk t f)+-- t ==== f = (chunkTypeOf t, processChunk t (lift . f))+-- t ===== f = (chunkTypeOf t, processChunk t (lift . lift . f))++processChunk :: (MonadIO m, Rec r, ChunkBuf c n b) =>+    r -> (r -> ChunkWriter c m a) -> (c -> m [c])+processChunk _ f c = do+    -- grab a naked record+    (Record r)          <- liftIO $ chunkToRecord c+    -- pass it to the filter along with the push function+    (_, ChunkQueue cs)  <- runWriterT (f r)+    -- collect the pushed stuff+    return cs++t ... f = (chunkTypeOf t, inspectChunk t f)+t .... f = (chunkTypeOf t, inspectChunk t (lift . f))+t ..... f = (chunkTypeOf t, inspectChunk t (lift . lift . f))++inspectChunk :: (MonadIO m, Rec a, ChunkBuf c n b) => a -> (a -> m t) -> (c -> m [c])+inspectChunk _ f c = do+    (Record r)  <- liftIO $ chunkToRecord c+    f r+    return [c]++push :: (ChunkBuf c n b, MonadIO m, Rec a) => a -> ChunkWriter c m ()+push r = do+    chunk <- liftIO $ chunkFromRecord $ Record r+    tell $ ChunkItem chunk+    return ()++filterChunks :: (MonadIO m, RecChunk r c n b, ChunkBuf c' n' b') =>+    r -> [(ChunkType, c -> ChunkWriter c' m [c])] -> ChunkWriter c' m ()+filterChunks r list = do+    push =<< (writeChunks r $ list <== readChunks r)++data ChunkQueue a = ChunkQueue [a] | ChunkItem a deriving (Show)++instance Monoid (ChunkQueue a) where+    mempty = ChunkQueue []+    mappend (ChunkItem a) (ChunkQueue b) = ChunkQueue (a:b)+    mappend (ChunkQueue a) (ChunkQueue b)     = ChunkQueue (a ++ b)
+ src/OpenAFP/Types/Record.hs view
@@ -0,0 +1,69 @@+{-# OPTIONS -O -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Types.Record+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- This module handles parsed AFP records with named fields.+--+-----------------------------------------------------------------------------++module OpenAFP.Types.Record where+import OpenAFP.Internals+import OpenAFP.Types.View++newtype Record a = Record a+    deriving (Show, Eq, Typeable)++class (Show a, Typeable a) => Rec a where+    recGet :: BinHandle -> IO a+    recGet = error "recGet not defined"+    recPut :: BinHandle -> a -> IO ()+    recPut = error "recPut not defined"+    recSizeOf :: a -> Int+    recSizeOf = error "recSizeOf not defined"+    recView :: a -> IO ViewRecord+    recView x = error ("recView not defined for " ++ show x)+    recType :: a -> Int+    recType = error "recType not defined"++-- (forall a. (Rec a) => (a -> m b))+instance (Rec a) => Storable (Record a) where+    alignment (Record r) = 8+    sizeOf (Record r) = recSizeOf r+    -- sizeOf (Record r) = sum $ recApply func r++{-+func :: (Storable x) => String -> x -> Int+func x y = sizeOf y+-}+func x y = 0++instance (Rec a) => Rec (Record a) where+    recView (Record a) = recView a++instance (Rec a) => Binary (Record a) where+    get bh = do+        b <- recGet bh+        return $ Record b+    put bh (Record a) = do+        recPut bh a+        return ()++instance (Binary a, Rec a, Show a, Typeable a) => Rec [a] where+    recSizeOf list = sum $ map recSizeOf list+    recGet bh = get bh+    recPut bh list = do+        mapM_ (put bh) list++instance Rec N1 where+    recSizeOf _ = 1++fromRecord (Record a) = a+
+ src/OpenAFP/Types/View.hs view
@@ -0,0 +1,39 @@+{-# OPTIONS -fglasgow-exts #-}++-----------------------------------------------------------------------------+-- |+-- Module      :  OpenAFP.Types.View+-- Copyright   :  (c) Audrey Tang 2004, 2006+-- License     :  BSD-style+-- +-- Maintainer  :  audreyt@audreyt.org+-- Stability   :  experimental+-- Portability :  non-portable (GHC-only)+--+-- Concrete data views on Chunks and Records.+--+-----------------------------------------------------------------------------++module OpenAFP.Types.View where+import OpenAFP.Types.Buffer+import OpenAFP.Internals++type ChunksType = TypeRep+type RecordType = TypeRep+type NumberType = TypeRep+type NStrType   = TypeRep+type StringType = TypeRep+type DataType   = TypeRep+type FieldLabel = String++-- newtype ViewChunks = ViewChunks (ChunksType, [ViewRecord])+newtype ViewRecord = ViewRecord (RecordType, [ViewField]) deriving (Show, Typeable)+newtype ViewField  = ViewField  (FieldLabel, ViewContent) deriving (Show, Typeable)+data ViewContent+    = ViewNumber (NumberType, Int)+    | ViewString (StringType, String)+    | ViewNStr   (NStrType,   [N1])+    | ViewChunks (ChunksType, [ViewRecord])+    | ViewData   (DataType,   [ViewRecord])+    deriving (Show, Typeable)+