module RevStringDll where

import CString
import Addr
import ByteArray

foreign export stdcall revstring :: Addr -> IO Addr

revstring :: Addr -> IO Addr
revstring cstr = do
  s <- unpackCStringIO cstr
  r <- packStringIO (reverse s)
  res <- mallocAndStrCpy r
  return res

foreign import ccall unsafe mallocAndStrCpy :: ByteArray Int -> IO Addr

