import "JavaBuiltin" as Java import "Set" as Set import "MMap" as MMap importJava "java.util.Map" where data T a b containsKey :: T a b -> a -> Boolean containsValue :: T a b -> b -> Boolean size :: T a b -> Integer isEmpty :: T a b -> Boolean entrySet :: T a b -> Set.T (MMap.Entry a b) get :: T a b -> a -> Maybe b @JavaName get unsafeGet :: T a b -> a -> b keySet :: T a b -> Set.T a @inline iter :: (a -> b -> ()) -> T a b -> () iter f m = Set.iter (\entry -> f (MMap.keyOf entry) (MMap.valueOf entry)) (entrySet m) @inline iterB :: (a -> b -> Boolean) -> T a b -> Boolean iterB f m = Set.iterB (\entry -> f (MMap.keyOf entry) (MMap.valueOf entry)) (entrySet m) @inline fold :: (a -> b -> c -> a) -> a -> T b c -> a fold f init m = Set.fold (\cur entry -> f cur (MMap.keyOf entry) (MMap.valueOf entry)) init (entrySet m) @inline freeze :: MMap.T a b -> T a b freeze = Java.unsafeCoerce /* @inline map :: (b -> c) -> T a b -> T a c map f m = do result = MMap.createC (size m) iter (\k v -> put result k (f v)) m freeze result */