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
import Data.Binary.Get
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
newtype Unknown = Unknown NStr
deriving (Show, Typeable)
instance Rec Unknown where
recGet = fmap Unknown get
recPut (Unknown r) = put r
recSizeOf (Unknown r) = sizeOf r
recView (Unknown r) = viewRecord (typeOf _Unknown) [ viewField "" (viewNStr r) ]
instance Binary Unknown where
get = fmap Unknown get
put (Unknown buf) = put buf
_Unknown = Unknown _NStr
data AFP_ = AFP_ !N3 !Buffer2 deriving (Show, Typeable)
instance Binary AFP_ where
put (AFP_ _ buf) = putWord8 0x5A >> put buf
get = skip 1 >> get' AFP_
lookupMCF :: MCF_ -> N0 -> ChunkType
lookupMCF _ _ = chunkTypeOf _MCF_T
lookupAFP :: AFP_ -> N3 -> ChunkType
lookupAFP _ x = case x of
0xD38C87 -> chunkTypeOf _CPI
0xD38C89 -> chunkTypeOf _FNI
0xD38C8A -> chunkTypeOf _CFI
0xD3A088 -> chunkTypeOf _MFC
0xD3A090 -> chunkTypeOf _TLE
0xD3A288 -> chunkTypeOf _MCC
0xD3A289 -> chunkTypeOf _FNM
0xD3A66B -> chunkTypeOf _OBD
0xD3A67B -> chunkTypeOf _IID
0xD3A687 -> chunkTypeOf _CPD
0xD3A688 -> chunkTypeOf _MDD
0xD3A689 -> chunkTypeOf _FND
0xD3A692 -> chunkTypeOf _CDD
0xD3A69B -> chunkTypeOf _PTD1
0xD3A6AF -> chunkTypeOf _PGD
0xD3A6BB -> chunkTypeOf _GDD
0xD3A6C5 -> chunkTypeOf _FGD
0xD3A6E3 -> chunkTypeOf _DXD
0xD3A6E7 -> chunkTypeOf _LND
0xD3A6EB -> chunkTypeOf _BDD
0xD3A6FB -> chunkTypeOf _IDD
0xD3A77B -> chunkTypeOf _IOC
0xD3A787 -> chunkTypeOf _CPC
0xD3A788 -> chunkTypeOf _MMC
0xD3A789 -> chunkTypeOf _FNC
0xD3A78A -> chunkTypeOf _CFC
0xD3A79B -> chunkTypeOf _CTC
0xD3A7AF -> chunkTypeOf _PMC
0xD3A85F -> chunkTypeOf _BPS
0xD3A877 -> chunkTypeOf _BCA
0xD3A87B -> chunkTypeOf _BII
0xD3A887 -> chunkTypeOf _BCP
0xD3A889 -> chunkTypeOf _BFN
0xD3A88A -> chunkTypeOf _BCF
0xD3A892 -> chunkTypeOf _BOC
0xD3A89B -> chunkTypeOf _BPT
0xD3A8A7 -> chunkTypeOf _BDI
0xD3A8A8 -> chunkTypeOf _BDT
0xD3A8AD -> chunkTypeOf _BNG
0xD3A8AF -> chunkTypeOf _BPG
0xD3A8BB -> chunkTypeOf _BGR
0xD3A8C4 -> chunkTypeOf _BDG
0xD3A8C5 -> chunkTypeOf _BFG
0xD3A8C6 -> chunkTypeOf _BRG
0xD3A8C7 -> chunkTypeOf _BOG
0xD3A8C9 -> chunkTypeOf _BAG
0xD3A8CA -> chunkTypeOf _BDM
0xD3A8CB -> chunkTypeOf _BPM
0xD3A8CC -> chunkTypeOf _BMM
0xD3A8CD -> chunkTypeOf _BFM
0xD3A8CE -> chunkTypeOf _BR
0xD3A8D9 -> chunkTypeOf _BSG
0xD3A8DF -> chunkTypeOf _BMO
0xD3A8E3 -> chunkTypeOf _BDX
0xD3A8EB -> chunkTypeOf _BBC
0xD3A8FB -> chunkTypeOf _BIM
0xD3A95F -> chunkTypeOf _EPS
0xD3A977 -> chunkTypeOf _ECA
0xD3A97B -> chunkTypeOf _EII
0xD3A987 -> chunkTypeOf _ECP
0xD3A989 -> chunkTypeOf _EFN
0xD3A98A -> chunkTypeOf _ECF
0xD3A992 -> chunkTypeOf _EOC
0xD3A99B -> chunkTypeOf _EPT
0xD3A9A7 -> chunkTypeOf _EDI
0xD3A9A8 -> chunkTypeOf _EDT
0xD3A9AD -> chunkTypeOf _ENG
0xD3A9AF -> chunkTypeOf _EPG
0xD3A9BB -> chunkTypeOf _EGR
0xD3A9C4 -> chunkTypeOf _EDG
0xD3A9C5 -> chunkTypeOf _EFG
0xD3A9C6 -> chunkTypeOf _ERG
0xD3A9C7 -> chunkTypeOf _EOG
0xD3A9C9 -> chunkTypeOf _EAG
0xD3A9CA -> chunkTypeOf _EDM
0xD3A9CB -> chunkTypeOf _EPM
0xD3A9CC -> chunkTypeOf _EMM
0xD3A9CD -> chunkTypeOf _EFM
0xD3A9CE -> chunkTypeOf _ER
0xD3A9D9 -> chunkTypeOf _ESG
0xD3A9DF -> chunkTypeOf _EMO
0xD3A9E3 -> chunkTypeOf _EDX
0xD3A9EB -> chunkTypeOf _EBC
0xD3A9FB -> chunkTypeOf _EIM
0xD3AAE7 -> chunkTypeOf _LNC
0xD3AB77 -> chunkTypeOf _MCA
0xD3AB88 -> chunkTypeOf _MMT
0xD3AB89 -> chunkTypeOf _FNN
0xD3AB8A -> chunkTypeOf _MCF
0xD3AB92 -> chunkTypeOf _MCD
0xD3ABAF -> chunkTypeOf _MPG
0xD3ABBB -> chunkTypeOf _MGO
0xD3ABC3 -> chunkTypeOf _MDR
0xD3ABCC -> chunkTypeOf _IMM
0xD3ABD8 -> chunkTypeOf _MPO
0xD3ABEA -> chunkTypeOf _MSU
0xD3ABEB -> chunkTypeOf _MBC
0xD3ABFB -> chunkTypeOf _MIO
0xD3AC6B -> chunkTypeOf _OBP
0xD3AC7B -> chunkTypeOf _ICP
0xD3AC89 -> chunkTypeOf _FNP
0xD3ACAF -> chunkTypeOf _PGP1
0xD3AE89 -> chunkTypeOf _FNO
0xD3AF5F -> chunkTypeOf _IPS
0xD3AFAF -> chunkTypeOf _IPG
0xD3AFC3 -> chunkTypeOf _IOB
0xD3AFD8 -> chunkTypeOf _IPO
0xD3B077 -> chunkTypeOf _CAT
0xD3B15F -> chunkTypeOf _MPS
0xD3B18A -> chunkTypeOf _MCF1
0xD3B19B -> chunkTypeOf _PTD
0xD3B1AF -> chunkTypeOf _PGP
0xD3B1DF -> chunkTypeOf _MMO
0xD3B288 -> chunkTypeOf _PFC
0xD3B2A7 -> chunkTypeOf _IEL
0xD3B490 -> chunkTypeOf _LLE
0xD3EE7B -> chunkTypeOf _IRD
0xD3EE89 -> chunkTypeOf _FNG
0xD3EE92 -> chunkTypeOf _OCD
0xD3EE9B -> chunkTypeOf _PTX
0xD3EEBB -> chunkTypeOf _GAD
0xD3EEEB -> chunkTypeOf _BDA
0xD3EEEE -> chunkTypeOf _NOP
0xD3EEFB -> chunkTypeOf _IPD
_ -> chunkTypeOf _Unknown
lookupT :: T_ -> N1 -> ChunkType
lookupT _ x = case x of
0x01 -> chunkTypeOf _T_CGCSGI
0x02 -> chunkTypeOf _T_FQN
0x04 -> chunkTypeOf _T_MO
0x10 -> chunkTypeOf _T_OCL
0x18 -> chunkTypeOf _T_MIS
0x1D -> chunkTypeOf _T_TO
0x1F -> chunkTypeOf _T_FDS
0x20 -> chunkTypeOf _T_FCGCSGI
0x21 -> chunkTypeOf _T_OFSS
0x22 -> chunkTypeOf _T_ROT
0x23 -> chunkTypeOf _T_ERLI
0x24 -> chunkTypeOf _T_RLI
0x25 -> chunkTypeOf _T_RSN
0x26 -> chunkTypeOf _T_CR
0x27 -> chunkTypeOf _T_LDOPM
0x2D -> chunkTypeOf _T_OBO
0x36 -> chunkTypeOf _T_AV
0x43 -> chunkTypeOf _T_DP
0x45 -> chunkTypeOf _T_MEC
0x46 -> chunkTypeOf _T_POCP
0x47 -> chunkTypeOf _T_RUA
0x4B -> chunkTypeOf _T_OAMU
0x4C -> chunkTypeOf _T_OAS
0x4D -> chunkTypeOf _T_AD
0x4E -> chunkTypeOf _T_CS
0x50 -> chunkTypeOf _T_ESI
0x56 -> chunkTypeOf _T_MMPN
0x57 -> chunkTypeOf _T_OBE
0x58 -> chunkTypeOf _T_OSFO
0x59 -> chunkTypeOf _T_OSFE
0x5A -> chunkTypeOf _T_OO
0x5D -> chunkTypeOf _T_FHSF
0x5E -> chunkTypeOf _T_OCO
0x62 -> chunkTypeOf _T_LDTS
0x63 -> chunkTypeOf _T_OCH
0x64 -> chunkTypeOf _T_OOI
0x65 -> chunkTypeOf _T_C
0x68 -> chunkTypeOf _T_MOR
0x6C -> chunkTypeOf _T_ROI
0x6D -> chunkTypeOf _T_EF
0x70 -> chunkTypeOf _T_PSRM
0x71 -> chunkTypeOf _T_PSMR
0x72 -> chunkTypeOf _T_UDTS
0x73 -> chunkTypeOf _T_II
0x74 -> chunkTypeOf _T_TS
0x75 -> chunkTypeOf _T_CF
0x78 -> chunkTypeOf _T_FF
0x79 -> chunkTypeOf _T_MA
0x80 -> chunkTypeOf _T_AQ
0x81 -> chunkTypeOf _T_PPI
0x82 -> chunkTypeOf _T_PV
0x83 -> chunkTypeOf _T_PC
0x84 -> chunkTypeOf _T_FRMT
0x85 -> chunkTypeOf _T_FO
0x87 -> chunkTypeOf _T_MF
_ -> chunkTypeOf _Unknown
lookupPTX :: PTX_ -> N1 -> ChunkType
lookupPTX _ x = case x of
0x74 -> chunkTypeOf _PTX_STC
0x75 -> chunkTypeOf _PTX_STC
0xC0 -> chunkTypeOf _PTX_SIM
0xC1 -> chunkTypeOf _PTX_SIM
0xC2 -> chunkTypeOf _PTX_SIA
0xC3 -> chunkTypeOf _PTX_SIA
0xC4 -> chunkTypeOf _PTX_SVI
0xC5 -> chunkTypeOf _PTX_SVI
0xC6 -> chunkTypeOf _PTX_AMI
0xC7 -> chunkTypeOf _PTX_AMI
0xC8 -> chunkTypeOf _PTX_RMI
0xC9 -> chunkTypeOf _PTX_RMI
0xD0 -> chunkTypeOf _PTX_SBI
0xD1 -> chunkTypeOf _PTX_SBI
0xD2 -> chunkTypeOf _PTX_AMB
0xD3 -> chunkTypeOf _PTX_AMB
0xD4 -> chunkTypeOf _PTX_RMB
0xD5 -> chunkTypeOf _PTX_RMB
0xD8 -> chunkTypeOf _PTX_BLN
0xD9 -> chunkTypeOf _PTX_BLN
0xE4 -> chunkTypeOf _PTX_DIR
0xE5 -> chunkTypeOf _PTX_DIR
0xE6 -> chunkTypeOf _PTX_DBR
0xE7 -> chunkTypeOf _PTX_DBR
0xEE -> chunkTypeOf _PTX_RPS
0xEF -> chunkTypeOf _PTX_RPS
0xF0 -> chunkTypeOf _PTX_SCFL
0xF1 -> chunkTypeOf _PTX_SCFL
0xF2 -> chunkTypeOf _PTX_BSU
0xF3 -> chunkTypeOf _PTX_BSU
0xF4 -> chunkTypeOf _PTX_ESU
0xF5 -> chunkTypeOf _PTX_ESU
0xF6 -> chunkTypeOf _PTX_STO
0xF7 -> chunkTypeOf _PTX_STO
0xF8 -> chunkTypeOf _PTX_NOP
0xF9 -> chunkTypeOf _PTX_NOP
0xDA -> chunkTypeOf _PTX_TRN
0xDB -> chunkTypeOf _PTX_TRN
_ -> chunkTypeOf _Unknown
get' :: (Binary t, Buf b, Binary b) => (t -> b -> c) -> Get c
get' constr = do
buf <- get
let ty = decode $ L.fromChunks [packBuf buf]
return $ constr ty buf
instance Binary PTX_ where
put (PTX_ _ buf) = put buf
get = get' PTX_
instance Binary MCF_ where
put (MCF_ _ buf) = put buf
get = do
buf <- get
return $ MCF_ N0 buf
instance Binary T_ where
put (T_ _ buf) = put buf
get = get' T_