{-# LINE 1 "lib/CPython/Types/Float.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
module CPython.Types.Float
( Float
, floatType
, toFloat
, fromFloat
) where
import Prelude hiding (Float)
import CPython.Internal
newtype Float = Float (ForeignPtr Float)
instance Object Float where
toObject (Float x) = SomeObject x
fromForeignPtr = Float
instance Concrete Float where
concreteType _ = floatType
floatType :: (Type)
floatType =
unsafePerformIO $
let {res = floatType'_} in
peekStaticObject res >>= \res' ->
return (res')
{-# LINE 41 "lib/CPython/Types/Float.chs" #-}
toFloat :: (Double) -> IO ((Float))
toFloat a1 =
let {a1' = realToFrac a1} in
toFloat'_ a1' >>= \res ->
stealObject res >>= \res' ->
return (res')
{-# LINE 45 "lib/CPython/Types/Float.chs" #-}
fromFloat :: (Float) -> IO ((Double))
fromFloat a1 =
withObject a1 $ \a1' ->
fromFloat'_ a1' >>= \res ->
let {res' = realToFrac res} in
return (res')
{-# LINE 49 "lib/CPython/Types/Float.chs" #-}
foreign import ccall unsafe "CPython/Types/Float.chs.h hscpython_PyFloat_Type"
floatType'_ :: (Ptr ())
foreign import ccall safe "CPython/Types/Float.chs.h PyFloat_FromDouble"
toFloat'_ :: (CDouble -> (IO (Ptr ())))
foreign import ccall safe "CPython/Types/Float.chs.h PyFloat_AsDouble"
fromFloat'_ :: ((Ptr ()) -> (IO CDouble))