Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- getSegments :: Get [Segment]
- getSegments = do
- empty <- isEmpty
- if empty
- then return []
- else do seg <- trace "\ngetting segment\n" getSegment
- segs <- trace "\nGETTING SEGMENTS\n" getSegments
- return $ case seg of
- END -> trace "FOUND END" [seg]
- _ -> trace ("Found " ++ (show seg) ++ "keep looking!") (seg:segs)
- getSegment :: Get Segment
- getSegment = do
- typ <- trace "typ" getWord8
- len <- trace "len" getWord8
- bytes <- trace "bs" getByteString (fromIntegral len)
- return $! case typ of
- 0 -> trace "\nEND\n" END
- 1 -> trace "\nTXT\n" $ Txt $ decodeUtf8 bytes
- 2 -> trace "\nIMG\n" $ Img $ parseUUID bytes
- 3 -> trace "\nCTX\n" $ CustomTxt $ decodeUtf8 bytes
- 4 -> trace "\nCBI\n" $ CustomBin bytes
- x -> error $ "Segment with unknown type byte: " ++ show x
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement