-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Bindings for C++ demangling routines
--
-- Please see the README on Github at
-- https://github.com/0xd34df00d/cppfilt#readme
@package cppfilt
@version 0.1.0.0
-- | This module provides the type class (and a few implementations) for
-- values that can be efficiently converted to/from CString.
-- Instances for String and strict ByteString are provided,
-- and the use of ByteString is recommended if performance is a
-- concern.
module Data.CStringRepresentable
-- | Represents values that can be efficiently converted to and from
-- CStrings.
class CStringRepresentable a
-- | Perform a function on the CString representation of the value.
toCString :: CStringRepresentable a => a -> (CString -> IO b) -> IO b
-- | Convert CString to a value of the type. The ownership is not
-- transferred.
fromCString :: CStringRepresentable a => CString -> IO a
-- | Strings can be represented as CStrings (albeit
-- conversions are inefficient).
-- | ByteStrings can be represented as CStrings.
instance Data.CStringRepresentable.CStringRepresentable GHC.Base.String
instance Data.CStringRepresentable.CStringRepresentable Data.ByteString.Internal.ByteString
-- | This module provides bindings to the platform C++ ABI demangling
-- routines (where the platform is currently limited to gcc). Any
-- string-like type implementing CStringRepresentable can be used,
-- though strict bytestrings are the most performant.
--
-- This module provides the raw IO-living functions. Thin wrappers
-- pretending to be pure live in the System.Demangle.Pure module.
module System.Demangle
-- | Try to demangle a mangled C++ name.
demangle :: CStringRepresentable s => s -> IO (Maybe s)
-- | This module provides bindings to the platform C++ ABI demangling
-- routines (where the platform is currently limited to gcc). Any
-- string-like type implementing CStringRepresentable can be used,
-- though strict bytestrings are the most performant.
--
-- This module provides the pure-ish functions which hide the intrinsic
-- IO nature of doing FFI calls behind unsafePerformIO.
-- Demangling is referentially transparent, though, so that should be
-- fine.
module System.Demangle.Pure
-- | Try to demangle a mangled C++ name.
demangle :: CStringRepresentable s => s -> Maybe s