unsafeWithPurePrim v fun =   case S.unsafeToForeignPtr0 v of
                    (fp,_) -> do
                        res <-  withForeignPtrPrim fp (\x -> fun x)
                        touchForeignPtrPrim fp
                        return res
unsafeWithPurePrim v fun =   case S.unsafeToForeignPtr0 v of
                    (fp,_) -> do
                        res <-  withForeignPtrPrim fp (\x -> fun x)
                        touchForeignPtrPrim fp
                        return res
unsafeWithPurePrim v fun =   case S.unsafeToForeignPtr0 v of
                    (fp,_) -> do
                        res <-  withForeignPtrPrim fp (\x -> fun x)
                        touchForeignPtrPrim fp
                        return res