module OpenAFP.Prelude.InstancePTX () where import OpenAFP.Types import OpenAFP.Records import OpenAFP.Internals import qualified Data.ByteString as S apply :: (Chunk c, Rec r) => c -> (r -> t) -> t apply c f = f (decodeChunk c) instance Rec PTX_AMB where recGet = do a01 <- get; a02 <- get; return $ PTX_AMB a01 a02 recPut r = do put $ ptx_amb_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_AMI a01 a02 recPut r = do put $ ptx_ami_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_BLN a01 a02 recPut r = do put $ ptx_bln_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_BSU a01 a02 recPut r = do put $ ptx_bsu_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_DBR a01 a02 recPut r = do put $ ptx_dbr_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_DIR a01 a02 recPut r = do put $ ptx_dir_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_ESU a01 a02 recPut r = do put $ ptx_esu_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_NOP a01 a02 recPut r = do put $ ptx_nop_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_RMB a01 a02 recPut r = do put $ ptx_rmb_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_RMI a01 a02 recPut r = do put $ ptx_rmi_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_RPS a01 a02 recPut r = do put $ ptx_rps_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_SBI a01 a02 recPut r = do put $ ptx_sbi_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_SCFL a01 a02 recPut r = do put $ ptx_scfl_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_SIA a01 a02 recPut r = do put $ ptx_sia_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_SIM a01 a02 recPut r = do put $ ptx_sim_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_STC a01 a02 recPut r = do put $ ptx_stc_Type r; put $ 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 = do a01 <- get; a02 <- get; a03 <- get; return $ PTX_STO a01 a02 a03 recPut r = do put $ ptx_sto_Type r; put $ ptx_sto_Orientation r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_SVI a01 a02 recPut r = do put $ ptx_svi_Type r; put $ 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 = do a01 <- get; a02 <- get; return $ PTX_TRN a01 a02 recPut r = do put $ ptx_trn_Type r; put $ 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 Chunk PTX_ where type N PTX_ = N1 type BufOf PTX_ = Buffer1 mkChunk = PTX_ chunkDecon (PTX_ x y) = (x, y) chunkTypeLookup = lookupPTX chunkApply = applyPTX applyPTX :: forall x. N1 -> PTX_ -> (forall a. (Rec a) => (a -> x)) -> x applyPTX x rec f = case x of 0x74 -> apply rec (f :: PTX_STC -> x) 0x75 -> apply rec (f :: PTX_STC -> x) 0xC0 -> apply rec (f :: PTX_SIM -> x) 0xC1 -> apply rec (f :: PTX_SIM -> x) 0xC2 -> apply rec (f :: PTX_SIA -> x) 0xC3 -> apply rec (f :: PTX_SIA -> x) 0xC4 -> apply rec (f :: PTX_SVI -> x) 0xC5 -> apply rec (f :: PTX_SVI -> x) 0xC6 -> apply rec (f :: PTX_AMI -> x) 0xC7 -> apply rec (f :: PTX_AMI -> x) 0xC8 -> apply rec (f :: PTX_RMI -> x) 0xC9 -> apply rec (f :: PTX_RMI -> x) 0xD0 -> apply rec (f :: PTX_SBI -> x) 0xD1 -> apply rec (f :: PTX_SBI -> x) 0xD2 -> apply rec (f :: PTX_AMB -> x) 0xD3 -> apply rec (f :: PTX_AMB -> x) 0xD4 -> apply rec (f :: PTX_RMB -> x) 0xD5 -> apply rec (f :: PTX_RMB -> x) 0xD8 -> apply rec (f :: PTX_BLN -> x) 0xD9 -> apply rec (f :: PTX_BLN -> x) 0xDA -> apply rec (f :: PTX_TRN -> x) 0xDB -> apply rec (f :: PTX_TRN -> x) 0xE4 -> apply rec (f :: PTX_DIR -> x) 0xE5 -> apply rec (f :: PTX_DIR -> x) 0xE6 -> apply rec (f :: PTX_DBR -> x) 0xE7 -> apply rec (f :: PTX_DBR -> x) 0xEE -> apply rec (f :: PTX_RPS -> x) 0xEF -> apply rec (f :: PTX_RPS -> x) 0xF0 -> apply rec (f :: PTX_SCFL -> x) 0xF1 -> apply rec (f :: PTX_SCFL -> x) 0xF2 -> apply rec (f :: PTX_BSU -> x) 0xF3 -> apply rec (f :: PTX_BSU -> x) 0xF4 -> apply rec (f :: PTX_ESU -> x) 0xF5 -> apply rec (f :: PTX_ESU -> x) 0xF6 -> apply rec (f :: PTX_STO -> x) 0xF7 -> apply rec (f :: PTX_STO -> x) 0xF8 -> apply rec (f :: PTX_NOP -> x) 0xF9 -> apply rec (f :: PTX_NOP -> x) _ -> apply rec (f :: Unknown -> x) instance RecChunk PTX where type ChunkOf PTX = PTX_ readChunks r = ptx_Chunks r writeChunks r io = do cs <- io return $ r { ptx_Chunks = cs } instance Rec PTX_ where recSizeOf c = 1 + (S.length $ packChunk c) instance Rec PTX where recGet = do a01 <- get; a02 <- get; a03 <- get; a04 <- getList; return $ PTX a01 a02 a03 a04 recPut r = do put $ ptx_Type r; put $ ptx_ r; put $ ptx_EscapeSequence r; putList $ 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