stdcxx-0.7.0.0: src/STD/MapIterator/Template.hs
{-# LANGUAGE EmptyDataDecls, FlexibleInstances,
MultiParamTypeClasses, TypeFamilies #-}
module STD.MapIterator.Template where
import Foreign.C.Types
import Foreign.Ptr
import FFICXX.Runtime.Cast
import STD.Pair.Template
data RawMapIterator tpk tpv
newtype MapIterator tpk tpv = MapIterator (Ptr
(RawMapIterator tpk tpv))
class () => IMapIterator tpk tpv where
deRef :: MapIterator tpk tpv -> IO (Pair tpk tpv)
increment :: MapIterator tpk tpv -> IO (MapIterator tpk tpv)
instance () => FPtr (MapIterator tpk tpv) where
type Raw (MapIterator tpk tpv) = RawMapIterator tpk tpv
get_fptr (MapIterator ptr) = ptr
cast_fptr_to_obj = MapIterator
instance () =>
Castable (MapIterator tpk tpv) (Ptr (RawMapIterator tpk tpv))
where
cast x f = f (castPtr (get_fptr x))
uncast x f = f (cast_fptr_to_obj (castPtr x))