Use Data.Map.Map instead of Data.Array.Array for constants pool.
[hs-java.git] / rebuild-class.hs
1 {-# LANGUAGE OverloadedStrings #-}
2
3 import Control.Monad
4 import Data.Array
5 import Data.Binary
6 import System.Environment
7 import qualified Data.ByteString.Lazy as B
8 import Text.Printf
9
10 import JVM.Types
11 import JVM.ClassFile
12 import JVM.Converter
13 import JVM.Assembler
14 import JVM.Dump
15
16 main = do
17   args <- getArgs
18   case args of
19     [clspath,outpath] -> do
20       cls <- parseClassFile clspath
21       clsfile <- decodeFile clspath :: IO ClassFile
22       dumpClass cls
23       putStrLn $ "Source pool:\n" ++ showListIx (constsPool clsfile)
24       let result = classFile cls
25       putStrLn $ "Result pool:\n" ++ showListIx (constsPool result)
26       B.writeFile outpath (encodeClass cls)
27
28     _ -> error "Synopsis: rebuild-class File.class Output.class"