hs-java-0.3.1: rebuild-class.hs
{-# LANGUAGE OverloadedStrings #-}
import Data.Binary
import System.Environment
import qualified Data.ByteString.Lazy as B
import qualified Data.Map as M
import JVM.Common
import JVM.ClassFile
import JVM.Converter
import JVM.Dump
main = do
args <- getArgs
case args of
[clspath,outpath] -> do
cls <- parseClassFile clspath
clsfile <- decodeFile clspath :: IO (Class File)
dumpClass cls
putStrLn $ "Source pool:\n" ++ showListIx (M.assocs $ constsPool clsfile)
let result = classDirect2File cls
putStrLn $ "Result pool:\n" ++ showListIx (M.assocs $ constsPool result)
B.writeFile outpath (encodeClass cls)
_ -> error "Synopsis: rebuild-class File.class Output.class"