{-| Description: Bindings directly mirroring the C interface of libcdio. Copyright: (c) 2018-2021 Sam May License: GPL-3.0-or-later Maintainer: ag@eitilt.life Stability: stable Portability: non-portable (requires libcdio) Modules in this tree are designed so users familiar with working with the original libcdio should be able to write essentially the same code they're used to, in the 'IO' monad. There have, however, been some changes made (beyond mapping the types to ones more native to Haskell), mostly to take advantage of the type safety. These have then been adapted further into the modules under "Sound.Libcdio", which aim to provide much of the same functionality but in a form the library might have taken if it had been originally written for Haskell. As /this/ interface does mirror the structure of the C library, each header file is translated into a separate module, as follows. Any changes from those original headers which might not be easily guessed are noted in the documentation for each module, along with similar equivalencies to the higher-level interface. * @cdio.h@ -> "Foreign.Libcdio" * @cd_types.h@ -> "Foreign.Libcdio.CdTypes" (not reexported by @cdio.h@, or this module) * @cdtext.h@ -> "Foreign.Libcdio.CdText" * @device.h@ -> "Foreign.Libcdio.Device" * @disc.h@ -> "Foreign.Libcdio.Disc" * @logging.h@ -> "Foreign.Libcdio.Logging" (not reexported by @cdio.h@, or this module) * @memory.h@ (removed; the only exported symbol @cdio_free@ is encapsulated into the Haskell garbage collection) * @read.h@ -> "Foreign.Libcdio.Read" * @sector.h@ -> "Foreign.Libcdio.Sector" * @track.h@ -> "Foreign.Libcdio.Track" * @types.h@ -> "Foreign.Libcdio.Types" * The original header was an interesting collection of some (but not all) types used by the library. The module is both more universal by exporting all types in the interface, and less required as each relevant type is exported by the various modules themselves. * @util.h@ -> "Foreign.Libcdio.Util" (not reexported by @cdio.h@, or this module) * @version.h@ -> "Foreign.Libcdio.Version" = @cdio.h@ == Defines * @CDIO_API_VERSION@ -> 'apiVersion' (primarily exported from "Foreign.Libcdio.Version") == Types * @CdIo_t@ -> 'Cdio' (primarily exported from "Foreign.Libcdio.Device") -} module Foreign.Libcdio ( module Foreign.Libcdio.CdText , module Foreign.Libcdio.Device , module Foreign.Libcdio.Disc , module Foreign.Libcdio.Read , module Foreign.Libcdio.Sector , module Foreign.Libcdio.Track , module Foreign.Libcdio.Version ) where import Foreign.Libcdio.Version import Foreign.Libcdio.Sector import Foreign.Libcdio.Device import Foreign.Libcdio.CdText import Foreign.Libcdio.Disc import Foreign.Libcdio.Read import Foreign.Libcdio.Track