content: -- |
  --
  -- Each @Types@ module has up to 4 sections: one for enumerations, one for
  -- structures, one for pointer utilities, and one for callbacks. Any one of
  -- these may be omitted if not needed (for example, most of the @Types@ modules
  -- do not have a callback section). Most of these types are instances of
  -- `Foreign.Storable` so they can be converted to raw bytes and passed to a C
  -- function.
  --
  -- The enumerations section contains Haskell sum types that are instances of
  -- @Enum@. Each of these types corresponds to a raylib (C) @enum@ or a set of
  -- @define@ directives. The `Prelude.fromEnum` and `Prelude.toEnum` functions for
  -- these types use the numbers associated with these values in C. /NOTE: Some of/
  -- /these types correspond to C @enum@s that are defined in C source files, rather/
  -- /than header files./
  --
  -- The structures section contains Haskell types that each correspond to a raylib
  -- @struct@. Each field in these types is named @typeName'fieldName@ (e.g.
  -- @Vector2.x@ in C is `vector2'x` in Haskell). These structs also all derive the
  -- typeclass t`Raylib.Util.Freeable`. This typeclass allows types to describe how
  -- to properly free all the data associated with a pointer to that type. For
  -- example, `Image`'s implementation of @Freeable@ also frees the pointer stored
  -- in the @Image.data@ field in C.
  --
  -- The pointer utilities section contains functions starting with @p'@. These
  -- functions advance a pointer by some amount to allow for efficient memory
  -- access. These are only necessary when writing high-performance applications
  -- where memory access has to be fast.
  --
  -- The callbacks section contains `Foreign.FunPtr` types, along with higher-level
  -- Haskell wrappers. When you pass one of these wrappers (e.g.
  -- `LoadFileDataCallback`) to a function that takes one as an argument (e.g.
  -- `Raylib.Core.setLoadFileDataCallback`), the function will return a @FunPtr@
  -- type (e.g. `C'LoadFileDataCallback`). It will be automatically freed when
  -- `closeWindow` is called, you should not manually free it. In most cases,
  -- you can ignore this value.
  module Raylib.Types
    ( module Raylib.Types.Core,
      module Raylib.Types.Core.Audio,
      module Raylib.Types.Core.Camera,
      module Raylib.Types.Core.Models,
      module Raylib.Types.Core.Text,
      module Raylib.Types.Core.Textures,
      module Raylib.Types.Util.GUI,
      module Raylib.Types.Util.RLGL,
    )
  where
  
  import Raylib.Types.Core
  import Raylib.Types.Core.Audio
  import Raylib.Types.Core.Camera
  import Raylib.Types.Core.Models
  import Raylib.Types.Core.Text
  import Raylib.Types.Core.Textures
  import Raylib.Types.Util.GUI
  import Raylib.Types.Util.RLGL
  