{-# 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
{ unPlanetNumber :: CInt } deriving (Eq, Show)
newtype GregFlag = GregFlag
{ unGregFlag :: CInt } deriving (Eq, Show)
newtype CalcFlag = CalcFlag
{ unCalcFlag :: CInt } deriving (Eq, Show)
newtype SplitDegFlag = SplitDegFlag
{ unSplitDegFlag :: CInt } deriving (Eq, Show)
sun :: PlanetNumber
sun = PlanetNumber 0
moon :: PlanetNumber
moon = PlanetNumber 1
mercury :: PlanetNumber
mercury = PlanetNumber 2
venus :: PlanetNumber
venus = PlanetNumber 3
mars :: PlanetNumber
mars = PlanetNumber 4
jupiter :: PlanetNumber
jupiter = PlanetNumber 5
saturn :: PlanetNumber
saturn = PlanetNumber 6
uranus :: PlanetNumber
uranus = PlanetNumber 7
neptune :: PlanetNumber
neptune = PlanetNumber 8
pluto :: PlanetNumber
pluto = PlanetNumber 9
meanNode :: PlanetNumber
meanNode = PlanetNumber 10
trueNode :: PlanetNumber
trueNode = PlanetNumber 11
meanApog :: PlanetNumber
meanApog = PlanetNumber 12
oscuApog :: PlanetNumber
oscuApog = PlanetNumber 13
earth :: PlanetNumber
earth = PlanetNumber 14
chiron :: PlanetNumber
chiron = PlanetNumber 15
specialEclNut :: PlanetNumber
specialEclNut = PlanetNumber (-1)
{-# LINE 53 "src/Foreign/SwissEphemeris.hsc" #-}
julian :: GregFlag
julian = GregFlag 0
gregorian :: GregFlag
gregorian = GregFlag 1
{-# LINE 58 "src/Foreign/SwissEphemeris.hsc" #-}
speed :: CalcFlag
speed = CalcFlag 256
swissEph :: CalcFlag
swissEph = CalcFlag 2
equatorialPositions :: CalcFlag
equatorialPositions = CalcFlag 2048
{-# LINE 65 "src/Foreign/SwissEphemeris.hsc" #-}
splitRoundSec :: SplitDegFlag
splitRoundSec = SplitDegFlag 1
splitRoundMin :: SplitDegFlag
splitRoundMin = SplitDegFlag 2
splitRoundDeg :: SplitDegFlag
splitRoundDeg = SplitDegFlag 4
splitZodiacal :: SplitDegFlag
splitZodiacal = SplitDegFlag 8
splitNakshatra :: SplitDegFlag
splitNakshatra = SplitDegFlag 1024
splitKeepSign :: SplitDegFlag
splitKeepSign = SplitDegFlag 16
splitKeepDeg :: SplitDegFlag
splitKeepDeg = SplitDegFlag 32
{-# LINE 75 "src/Foreign/SwissEphemeris.hsc" #-}
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_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)