-- | -- Definitions of each FFI type that can be used in Rust. These are -- standardized accross the Rust and Haskell Curryrs library for easy -- translation of function headers between the two. module Types ( module Foreign.C.Types , module Foreign.C.String , Chr , Str , U8 , U16 , U32 , U64 , I8 , I16 , I32 , I64 , F32 , F64 , Boolean ) where import Foreign.C.Types import Foreign.C.String -- We are only defining types that map to Rust types here -- We don't need the full array of C types in Rust -- | -- Used to represent Char in both languages type Chr = CChar -- | -- Used to represent Strings in both languages type Str = CString -- | -- Used to represent 8 bit unsigned numbers in both languages type U8 = CUChar -- | -- Used to represent 16 bit unsigned numbers in both languages type U16 = CUShort -- | -- Used to represent 32 bit unsigned numbers in both languages type U32 = CUInt -- | -- Used to represent 64 bit unsigned numbers in both languages type U64 = CULong -- | -- Used to represent 8 bit signed numbers in both languages type I8 = CSChar -- | -- Used to represent 16 bit signed numbers in both languages type I16 = CShort -- | -- Used to represent 32 bit signed numbers in both languages type I32 = CInt -- | -- Used to represent 64 bit signed numbers in both languages type I64 = CLong -- | -- Used to represent 32 bit floating point numbers in both languages type F32 = CFloat -- | -- Used to represent 64 bit floating point numbers in both languages type F64 = CDouble -- | -- Used to represent Booleans in both languages type Boolean = CUChar