{-# OPTIONS -Wall #-} -- | -- -- 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