poolSize,
(!),
showListIx,
+ mapFindIndex,
byteString
) where
-import Codec.Binary.UTF8.String hiding (encode, decode)
import Data.Binary
import Data.Binary.Put
import qualified Data.ByteString.Lazy as B
-import Data.Char
-import Data.String
import qualified Data.Map as M
+import Data.Default
+import Data.List
import JVM.ClassFile
-instance IsString B.ByteString where
- fromString s = B.pack $ map (fromIntegral . ord) $ encodeString s
+instance Default B.ByteString where
+ def = B.empty
+
+instance Default Word16 where
+ def = 0
toCharList :: B.ByteString -> [Int]
toCharList bstr = map fromIntegral $ B.unpack bstr
(!) :: (Ord k) => M.Map k a -> k -> a
(!) = (M.!)
-showListIx :: (Show a) => [a] -> String
-showListIx list = unlines $ zipWith s [1..] list
- where s i x = show i ++ ":\t" ++ show x
+showListIx :: (Show i, Show a) => [(i,a)] -> String
+showListIx list = unlines $ map s list
+ where s (i, x) = show i ++ ":\t" ++ show x
byteString :: (Binary t) => t -> B.ByteString
byteString x = runPut (put x)
+mapFindIndex :: (Num k) => (v -> Bool) -> M.Map k v -> Maybe k
+mapFindIndex check m =
+ case find (check . snd) (M.assocs m) of
+ Nothing -> Nothing
+ Just (k,_) -> Just k
+