{-# LINE 1 "src/Foreign/SwissEphemeris.hsc" #-}
{-# LANGUAGE CPP, ForeignFunctionInterface #-}
module Foreign.SwissEphemeris where
import Foreign
import Foreign.C.Types
import Foreign.C.String
newtype PlanetNumber = PlanetNumber
{ PlanetNumber -> CInt
unPlanetNumber :: CInt } deriving (PlanetNumber -> PlanetNumber -> Bool
(PlanetNumber -> PlanetNumber -> Bool)
-> (PlanetNumber -> PlanetNumber -> Bool) -> Eq PlanetNumber
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PlanetNumber -> PlanetNumber -> Bool
$c/= :: PlanetNumber -> PlanetNumber -> Bool
== :: PlanetNumber -> PlanetNumber -> Bool
$c== :: PlanetNumber -> PlanetNumber -> Bool
Eq, Int -> PlanetNumber -> ShowS
[PlanetNumber] -> ShowS
PlanetNumber -> String
(Int -> PlanetNumber -> ShowS)
-> (PlanetNumber -> String)
-> ([PlanetNumber] -> ShowS)
-> Show PlanetNumber
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PlanetNumber] -> ShowS
$cshowList :: [PlanetNumber] -> ShowS
show :: PlanetNumber -> String
$cshow :: PlanetNumber -> String
showsPrec :: Int -> PlanetNumber -> ShowS
$cshowsPrec :: Int -> PlanetNumber -> ShowS
Show)
instance Storable PlanetNumber where
sizeOf :: PlanetNumber -> Int
sizeOf PlanetNumber
_ = CInt -> Int
forall a. Storable a => a -> Int
sizeOf (CInt
forall a. HasCallStack => a
undefined::CInt)
alignment :: PlanetNumber -> Int
alignment = PlanetNumber -> Int
forall a. Storable a => a -> Int
sizeOf
peek :: Ptr PlanetNumber -> IO PlanetNumber
peek Ptr PlanetNumber
ptr = do
CInt
n <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr CInt -> IO CInt) -> Ptr CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ Ptr PlanetNumber -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr PlanetNumber
ptr
PlanetNumber -> IO PlanetNumber
forall (f :: * -> *) a. Applicative f => a -> f a
pure (PlanetNumber -> IO PlanetNumber)
-> PlanetNumber -> IO PlanetNumber
forall a b. (a -> b) -> a -> b
$ CInt -> PlanetNumber
PlanetNumber CInt
n
poke :: Ptr PlanetNumber -> PlanetNumber -> IO ()
poke Ptr PlanetNumber
ptr (PlanetNumber CInt
n) =
Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr PlanetNumber -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr PlanetNumber
ptr) CInt
n
newtype EpheFlag = EpheFlag
{ EpheFlag -> CInt
unEpheFlag :: CInt } deriving (EpheFlag -> EpheFlag -> Bool
(EpheFlag -> EpheFlag -> Bool)
-> (EpheFlag -> EpheFlag -> Bool) -> Eq EpheFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EpheFlag -> EpheFlag -> Bool
$c/= :: EpheFlag -> EpheFlag -> Bool
== :: EpheFlag -> EpheFlag -> Bool
$c== :: EpheFlag -> EpheFlag -> Bool
Eq, Int -> EpheFlag -> ShowS
[EpheFlag] -> ShowS
EpheFlag -> String
(Int -> EpheFlag -> ShowS)
-> (EpheFlag -> String) -> ([EpheFlag] -> ShowS) -> Show EpheFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EpheFlag] -> ShowS
$cshowList :: [EpheFlag] -> ShowS
show :: EpheFlag -> String
$cshow :: EpheFlag -> String
showsPrec :: Int -> EpheFlag -> ShowS
$cshowsPrec :: Int -> EpheFlag -> ShowS
Show)
newtype GregFlag = GregFlag
{ GregFlag -> CInt
unGregFlag :: CInt } deriving (GregFlag -> GregFlag -> Bool
(GregFlag -> GregFlag -> Bool)
-> (GregFlag -> GregFlag -> Bool) -> Eq GregFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GregFlag -> GregFlag -> Bool
$c/= :: GregFlag -> GregFlag -> Bool
== :: GregFlag -> GregFlag -> Bool
$c== :: GregFlag -> GregFlag -> Bool
Eq, Int -> GregFlag -> ShowS
[GregFlag] -> ShowS
GregFlag -> String
(Int -> GregFlag -> ShowS)
-> (GregFlag -> String) -> ([GregFlag] -> ShowS) -> Show GregFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GregFlag] -> ShowS
$cshowList :: [GregFlag] -> ShowS
show :: GregFlag -> String
$cshow :: GregFlag -> String
showsPrec :: Int -> GregFlag -> ShowS
$cshowsPrec :: Int -> GregFlag -> ShowS
Show)
newtype CalcFlag = CalcFlag
{ CalcFlag -> CInt
unCalcFlag :: CInt } deriving (CalcFlag -> CalcFlag -> Bool
(CalcFlag -> CalcFlag -> Bool)
-> (CalcFlag -> CalcFlag -> Bool) -> Eq CalcFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CalcFlag -> CalcFlag -> Bool
$c/= :: CalcFlag -> CalcFlag -> Bool
== :: CalcFlag -> CalcFlag -> Bool
$c== :: CalcFlag -> CalcFlag -> Bool
Eq, Int -> CalcFlag -> ShowS
[CalcFlag] -> ShowS
CalcFlag -> String
(Int -> CalcFlag -> ShowS)
-> (CalcFlag -> String) -> ([CalcFlag] -> ShowS) -> Show CalcFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CalcFlag] -> ShowS
$cshowList :: [CalcFlag] -> ShowS
show :: CalcFlag -> String
$cshow :: CalcFlag -> String
showsPrec :: Int -> CalcFlag -> ShowS
$cshowsPrec :: Int -> CalcFlag -> ShowS
Show)
newtype SplitDegFlag = SplitDegFlag
{ SplitDegFlag -> CInt
unSplitDegFlag :: CInt } deriving (SplitDegFlag -> SplitDegFlag -> Bool
(SplitDegFlag -> SplitDegFlag -> Bool)
-> (SplitDegFlag -> SplitDegFlag -> Bool) -> Eq SplitDegFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SplitDegFlag -> SplitDegFlag -> Bool
$c/= :: SplitDegFlag -> SplitDegFlag -> Bool
== :: SplitDegFlag -> SplitDegFlag -> Bool
$c== :: SplitDegFlag -> SplitDegFlag -> Bool
Eq, Int -> SplitDegFlag -> ShowS
[SplitDegFlag] -> ShowS
SplitDegFlag -> String
(Int -> SplitDegFlag -> ShowS)
-> (SplitDegFlag -> String)
-> ([SplitDegFlag] -> ShowS)
-> Show SplitDegFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SplitDegFlag] -> ShowS
$cshowList :: [SplitDegFlag] -> ShowS
show :: SplitDegFlag -> String
$cshow :: SplitDegFlag -> String
showsPrec :: Int -> SplitDegFlag -> ShowS
$cshowsPrec :: Int -> SplitDegFlag -> ShowS
Show)
newtype EclipseFlag = EclipseFlag
{ EclipseFlag -> CInt
unEclipseFlag :: CInt} deriving (EclipseFlag -> EclipseFlag -> Bool
(EclipseFlag -> EclipseFlag -> Bool)
-> (EclipseFlag -> EclipseFlag -> Bool) -> Eq EclipseFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EclipseFlag -> EclipseFlag -> Bool
$c/= :: EclipseFlag -> EclipseFlag -> Bool
== :: EclipseFlag -> EclipseFlag -> Bool
$c== :: EclipseFlag -> EclipseFlag -> Bool
Eq, Int -> EclipseFlag -> ShowS
[EclipseFlag] -> ShowS
EclipseFlag -> String
(Int -> EclipseFlag -> ShowS)
-> (EclipseFlag -> String)
-> ([EclipseFlag] -> ShowS)
-> Show EclipseFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EclipseFlag] -> ShowS
$cshowList :: [EclipseFlag] -> ShowS
show :: EclipseFlag -> String
$cshow :: EclipseFlag -> String
showsPrec :: Int -> EclipseFlag -> ShowS
$cshowsPrec :: Int -> EclipseFlag -> ShowS
Show)
sun :: PlanetNumber
sun :: PlanetNumber
sun = CInt -> PlanetNumber
PlanetNumber CInt
0
moon :: PlanetNumber
moon :: PlanetNumber
moon = CInt -> PlanetNumber
PlanetNumber CInt
1
mercury :: PlanetNumber
mercury :: PlanetNumber
mercury = CInt -> PlanetNumber
PlanetNumber CInt
2
venus :: PlanetNumber
venus :: PlanetNumber
venus = CInt -> PlanetNumber
PlanetNumber CInt
3
mars :: PlanetNumber
mars :: PlanetNumber
mars = CInt -> PlanetNumber
PlanetNumber CInt
4
jupiter :: PlanetNumber
jupiter :: PlanetNumber
jupiter = CInt -> PlanetNumber
PlanetNumber CInt
5
saturn :: PlanetNumber
saturn :: PlanetNumber
saturn = CInt -> PlanetNumber
PlanetNumber CInt
6
uranus :: PlanetNumber
uranus :: PlanetNumber
uranus = CInt -> PlanetNumber
PlanetNumber CInt
7
neptune :: PlanetNumber
neptune :: PlanetNumber
neptune = CInt -> PlanetNumber
PlanetNumber CInt
8
pluto :: PlanetNumber
pluto :: PlanetNumber
pluto = CInt -> PlanetNumber
PlanetNumber CInt
9
meanNode :: PlanetNumber
meanNode :: PlanetNumber
meanNode = CInt -> PlanetNumber
PlanetNumber CInt
10
trueNode :: PlanetNumber
trueNode :: PlanetNumber
trueNode = CInt -> PlanetNumber
PlanetNumber CInt
11
meanApog :: PlanetNumber
meanApog :: PlanetNumber
meanApog = CInt -> PlanetNumber
PlanetNumber CInt
12
oscuApog :: PlanetNumber
oscuApog :: PlanetNumber
oscuApog = CInt -> PlanetNumber
PlanetNumber CInt
13
earth :: PlanetNumber
earth :: PlanetNumber
earth = CInt -> PlanetNumber
PlanetNumber CInt
14
chiron :: PlanetNumber
chiron :: PlanetNumber
chiron = CInt -> PlanetNumber
PlanetNumber CInt
15
specialEclNut :: PlanetNumber
specialEclNut :: PlanetNumber
specialEclNut = CInt -> PlanetNumber
PlanetNumber (-CInt
1)
{-# LINE 69 "src/Foreign/SwissEphemeris.hsc" #-}
julian :: GregFlag
julian = GregFlag 0
gregorian :: GregFlag
gregorian = GregFlag 1
{-# LINE 74 "src/Foreign/SwissEphemeris.hsc" #-}
speed :: CalcFlag
speed = CalcFlag 256
swissEph :: CalcFlag
swissEph = CalcFlag 2
equatorialPositions :: CalcFlag
equatorialPositions = CalcFlag 2048
{-# LINE 81 "src/Foreign/SwissEphemeris.hsc" #-}
useSwissEph :: EpheFlag
useSwissEph = EpheFlag 2
useJplEph :: EpheFlag
useJplEph = EpheFlag 1
useMoshierEph :: EpheFlag
useMoshierEph :: EpheFlag
useMoshierEph = CInt -> EpheFlag
EpheFlag CInt
4
{-# LINE 87 "src/Foreign/SwissEphemeris.hsc" #-}
splitRoundSec :: SplitDegFlag
splitRoundSec = SplitDegFlag 1
splitRoundMin :: SplitDegFlag
splitRoundMin :: SplitDegFlag
splitRoundMin = CInt -> SplitDegFlag
SplitDegFlag CInt
2
splitRoundDeg :: SplitDegFlag
splitRoundDeg :: SplitDegFlag
splitRoundDeg = CInt -> SplitDegFlag
SplitDegFlag CInt
4
splitZodiacal :: SplitDegFlag
splitZodiacal :: SplitDegFlag
splitZodiacal = CInt -> SplitDegFlag
SplitDegFlag CInt
8
splitNakshatra :: SplitDegFlag
splitNakshatra :: SplitDegFlag
splitNakshatra = CInt -> SplitDegFlag
SplitDegFlag CInt
1024
splitKeepSign :: SplitDegFlag
splitKeepSign :: SplitDegFlag
splitKeepSign = SplitDegFlag CInt
16
splitKeepDeg :: SplitDegFlag
splitKeepDeg :: SplitDegFlag
splitKeepDeg = CInt -> SplitDegFlag
SplitDegFlag CInt
32
{-# LINE 97 "src/Foreign/SwissEphemeris.hsc" #-}
eclipseCentral :: EclipseFlag
eclipseCentral = EclipseFlag 1
eclipseNonCentral :: EclipseFlag
eclipseNonCentral = EclipseFlag 2
eclipseTotal :: EclipseFlag
eclipseTotal = EclipseFlag 4
eclipseAnnular :: EclipseFlag
eclipseAnnular :: EclipseFlag
eclipseAnnular = CInt -> EclipseFlag
EclipseFlag CInt
8
eclipsePartial :: EclipseFlag
eclipsePartial :: EclipseFlag
eclipsePartial = CInt -> EclipseFlag
EclipseFlag CInt
16
eclipseAnnularTotal :: EclipseFlag
eclipseAnnularTotal :: EclipseFlag
eclipseAnnularTotal = CInt -> EclipseFlag
EclipseFlag CInt
32
eclipseHybrid :: EclipseFlag
eclipseHybrid :: EclipseFlag
eclipseHybrid = CInt -> EclipseFlag
EclipseFlag CInt
32
eclipsePenumbral :: EclipseFlag
eclipsePenumbral :: EclipseFlag
eclipsePenumbral = CInt -> EclipseFlag
EclipseFlag CInt
64
eclipseSolar :: EclipseFlag
eclipseSolar :: EclipseFlag
eclipseSolar = CInt -> EclipseFlag
EclipseFlag CInt
63
eclipseLunar :: EclipseFlag
eclipseLunar :: EclipseFlag
eclipseLunar = EclipseFlag 84
{-# LINE 110 "src/Foreign/SwissEphemeris.hsc" #-}
anyEclipse :: EclipseFlag
anyEclipse = EclipseFlag 0
foreign import ccall unsafe "swephexp.h swe_set_ephe_path"
c_swe_set_ephe_path :: CString -> IO ()
foreign import ccall unsafe "swephexp.h swe_close"
c_swe_close :: IO ()
foreign import ccall unsafe "swephexp.h swe_julday"
c_swe_julday :: CInt
-> CInt
-> CInt
-> CDouble
-> GregFlag
-> CDouble
foreign import ccall unsafe "swephexp.h swe_revjul"
c_swe_revjul :: CDouble
-> GregFlag
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CDouble
-> IO ()
foreign import ccall unsafe "swephexp.h swe_calc_ut"
c_swe_calc_ut :: CDouble
-> PlanetNumber
-> CalcFlag
-> Ptr CDouble
-> CString
-> (IO CalcFlag)
foreign import ccall unsafe "swephexp.h swe_houses"
c_swe_houses :: CDouble
-> CDouble
-> CDouble
-> CInt
-> Ptr CDouble
-> Ptr CDouble
-> (IO CInt)
foreign import ccall unsafe "swephexp.h swe_house_pos"
c_swe_house_pos :: CDouble
-> CDouble
-> CDouble
-> CInt
-> Ptr CDouble
-> CString
-> (IO CDouble)
foreign import ccall unsafe "swephexp.h swe_cotrans_sp"
c_swe_cotrans_sp :: Ptr CDouble
-> Ptr CDouble
-> CDouble
-> IO ()
foreign import ccall unsafe "swephexp.h swe_split_deg"
c_swe_split_deg :: CDouble
-> SplitDegFlag
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CDouble
-> Ptr CInt
-> IO ()
foreign import ccall unsafe "swephexp.h swe_deltat"
c_swe_deltat :: CDouble
-> (IO CDouble)
foreign import ccall unsafe "swephexp.h swe_sidtime"
c_swe_sidtime :: CDouble
-> (IO CDouble)
foreign import ccall unsafe "swephexp.h swe_sidtime0"
c_swe_sidtime0 :: CDouble
-> CDouble
-> CDouble
-> (IO CDouble)
foreign import ccall unsafe "swephexp.h swe_deltat_ex"
c_swe_deltat_ex :: CDouble
-> EpheFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_utc_to_jd"
c_swe_utc_to_jd :: CInt
-> CInt
-> CInt
-> CInt
-> CInt
-> CDouble
-> GregFlag
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_jdet_to_utc"
c_swe_jdet_to_utc :: CDouble
-> GregFlag
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CDouble
-> IO ()
foreign import ccall unsafe "swephexp.h swe_jdut1_to_utc"
c_swe_jdut1_to_utc :: CDouble
-> GregFlag
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CInt
-> Ptr CDouble
-> IO ()
foreign import ccall unsafe "swephexp.h swe_pheno"
c_swe_pheno :: CDouble
-> PlanetNumber
-> CalcFlag
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_pheno_ut"
c_swe_pheno_ut :: CDouble
-> PlanetNumber
-> CalcFlag
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_solcross"
c_swe_solcross :: CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_solcross_between"
c_swe_solcross_between :: CDouble
-> CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_solcross_ut"
c_swe_solcross_ut :: CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_solcross_ut_between"
c_swe_solcross_ut_between :: CDouble
-> CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross"
c_swe_mooncross :: CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross_between"
c_swe_mooncross_between :: CDouble
-> CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross_ut"
c_swe_mooncross_ut :: CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross_ut_between"
c_swe_mooncross_ut_between :: CDouble
-> CDouble
-> CDouble
-> CalcFlag
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross_node"
c_swe_mooncross_node :: CDouble
-> CalcFlag
-> Ptr CDouble
-> Ptr CDouble
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_mooncross_node_ut"
c_swe_mooncross_node_ut :: CDouble
-> CalcFlag
-> Ptr CDouble
-> Ptr CDouble
-> CString
-> IO CDouble
foreign import ccall unsafe "swephexp.h swe_helio_cross"
c_swe_helio_cross :: PlanetNumber
-> CDouble
-> CDouble
-> CalcFlag
-> CInt
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_helio_cross_ut"
c_swe_helio_cross_ut :: PlanetNumber
-> CDouble
-> CDouble
-> CalcFlag
-> CInt
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_sol_eclipse_when_glob"
c_swe_sol_eclipse_when_glob :: CDouble
-> CalcFlag
-> EclipseFlag
-> Ptr CDouble
-> CInt
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_sol_eclipse_where"
c_swe_sol_eclipse_where :: CDouble
-> CalcFlag
-> Ptr CDouble
-> Ptr CDouble
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_sol_eclipse_when_loc"
c_swe_sol_eclipse_when_loc :: CDouble
-> CalcFlag
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> CInt
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_lun_eclipse_when"
c_swe_lun_eclipse_when :: CDouble
-> CalcFlag
-> EclipseFlag
-> Ptr CDouble
-> CInt
-> CString
-> IO CInt
foreign import ccall unsafe "swephexp.h swe_lun_eclipse_when_loc"
c_swe_lun_eclipse_when_loc :: CDouble
-> CalcFlag
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> CInt
-> CString
-> IO CInt