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')
toFloat :: Double -> IO (Float)
toFloat a1 =
let {a1' = realToFrac a1} in
toFloat'_ a1' >>= \res ->
stealObject res >>= \res' ->
return (res')
fromFloat :: Float -> IO (Double)
fromFloat a1 =
withObject a1 $ \a1' ->
fromFloat'_ a1' >>= \res ->
let {res' = realToFrac res} in
return (res')
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))