{-# LINE 1 "src/Chiphunk/Low/Constraint.chs" #-}
module Chiphunk.Low.Constraint
  ( Constraint
  , constraintBodyA
  , constraintBodyB
  , constraintMaxForce
  , constraintErrorBias
  , constraintMaxBias
  , constraintSpace
  , constraintCollideBodies
  , constraintUserData
  , constraintImpulse
  , constraintFree
  , pinJointNew
  , pinJointAnchorA
  , pinJointAnchorB
  , pinJointDist
  , slideJointNew
  , slideJointAnchorA
  , slideJointAnchorB
  , slideJointMin
  , slideJointMax
  , pivotJointNew
  , pivotJointNew2
  , pivotJointAnchorA
  , pivotJointAnchorB
  , grooveJointNew
  , grooveJointGrooveA
  , grooveJointGrooveB
  , grooveJointAnchorB
  , dampedSpringNew
  , dampedSpringAnchorA
  , dampedSpringAnchorB
  , dampedSpringRestLength
  , dampedSpringStiffness
  , dampedSpringDamping
  , dampedRotarySpringNew
  , dampedRotarySpringRestAngle
  , dampedRotarySpringStiffness
  , dampedRotarySpringDamping
  , rotaryLimitJointNew
  , rotaryLimitJointMin
  , rotaryLimitJointMax
  , ratchetJointNew
  , ratchetJointAngle
  , ratchetJointPhase
  , ratchetJointRatchet
  , gearJointNew
  , gearJointPhase
  , gearJointRatio
  , simpleMotorNew
  , simpleMotorRate
  ) where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Marshal.Utils as C2HSImp
import Data.StateVar
import Foreign
import Chiphunk.Low.Types
{-# LINE 60 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintGetBodyA :: (Constraint) -> IO ((Body))
cpConstraintGetBodyA a1 =
  let {a1' = id a1} in
  cpConstraintGetBodyA'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 65 "src/Chiphunk/Low/Constraint.chs" #-}
constraintBodyA :: Constraint -> GettableStateVar Body
constraintBodyA = makeGettableStateVar . cpConstraintGetBodyA
cpConstraintGetBodyB :: (Constraint) -> IO ((Body))
cpConstraintGetBodyB a1 =
  let {a1' = id a1} in
  cpConstraintGetBodyB'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 71 "src/Chiphunk/Low/Constraint.chs" #-}
constraintBodyB :: Constraint -> GettableStateVar Body
constraintBodyB = makeGettableStateVar . cpConstraintGetBodyB
cpConstraintGetMaxForce :: (Constraint) -> IO ((Double))
cpConstraintGetMaxForce a1 =
  let {a1' = id a1} in
  cpConstraintGetMaxForce'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 77 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintSetMaxForce :: (Constraint) -> (Double) -> IO ()
cpConstraintSetMaxForce a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpConstraintSetMaxForce'_ a1' a2' >>
  return ()
{-# LINE 79 "src/Chiphunk/Low/Constraint.chs" #-}
constraintMaxForce :: Constraint -> StateVar Double
constraintMaxForce = mkStateVar cpConstraintGetMaxForce cpConstraintSetMaxForce
cpConstraintGetErrorBias :: (Constraint) -> IO ((Double))
cpConstraintGetErrorBias a1 =
  let {a1' = id a1} in
  cpConstraintGetErrorBias'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 86 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintSetErrorBias :: (Constraint) -> (Double) -> IO ()
cpConstraintSetErrorBias a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpConstraintSetErrorBias'_ a1' a2' >>
  return ()
{-# LINE 88 "src/Chiphunk/Low/Constraint.chs" #-}
constraintErrorBias :: Constraint -> StateVar Double
constraintErrorBias = mkStateVar cpConstraintGetErrorBias cpConstraintSetErrorBias
cpConstraintGetMaxBias :: (Constraint) -> IO ((Double))
cpConstraintGetMaxBias a1 =
  let {a1' = id a1} in
  cpConstraintGetMaxBias'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 96 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintSetMaxBias :: (Constraint) -> (Double) -> IO ()
cpConstraintSetMaxBias a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpConstraintSetMaxBias'_ a1' a2' >>
  return ()
{-# LINE 98 "src/Chiphunk/Low/Constraint.chs" #-}
constraintMaxBias :: Constraint -> StateVar Double
constraintMaxBias = mkStateVar cpConstraintGetMaxBias cpConstraintSetMaxBias
cpConstraintGetSpace :: (Constraint) -> IO ((Space))
cpConstraintGetSpace a1 =
  let {a1' = id a1} in
  cpConstraintGetSpace'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 105 "src/Chiphunk/Low/Constraint.chs" #-}
constraintSpace :: Constraint -> GettableStateVar Space
constraintSpace = makeGettableStateVar . cpConstraintGetSpace
cpConstraintGetCollideBodies :: (Constraint) -> IO ((Bool))
cpConstraintGetCollideBodies a1 =
  let {a1' = id a1} in
  cpConstraintGetCollideBodies'_ a1' >>= \res ->
  let {res' = C2HSImp.toBool res} in
  return (res')
{-# LINE 111 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintSetCollideBodies :: (Constraint) -> (Bool) -> IO ()
cpConstraintSetCollideBodies a1 a2 =
  let {a1' = id a1} in
  let {a2' = C2HSImp.fromBool a2} in
  cpConstraintSetCollideBodies'_ a1' a2' >>
  return ()
{-# LINE 113 "src/Chiphunk/Low/Constraint.chs" #-}
constraintCollideBodies :: Constraint -> StateVar Bool
constraintCollideBodies = mkStateVar cpConstraintGetCollideBodies cpConstraintSetCollideBodies
cpConstraintGetUserData :: (Constraint) -> IO ((DataPtr))
cpConstraintGetUserData a1 =
  let {a1' = id a1} in
  cpConstraintGetUserData'_ a1' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 125 "src/Chiphunk/Low/Constraint.chs" #-}
cpConstraintSetUserData :: (Constraint) -> (DataPtr) -> IO ()
cpConstraintSetUserData a1 a2 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  cpConstraintSetUserData'_ a1' a2' >>
  return ()
{-# LINE 127 "src/Chiphunk/Low/Constraint.chs" #-}
constraintUserData :: Constraint -> StateVar DataPtr
constraintUserData = mkStateVar cpConstraintGetUserData cpConstraintSetUserData
cpConstraintGetImpulse :: (Constraint) -> IO ((Double))
cpConstraintGetImpulse a1 =
  let {a1' = id a1} in
  cpConstraintGetImpulse'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 135 "src/Chiphunk/Low/Constraint.chs" #-}
constraintImpulse :: Constraint -> GettableStateVar Double
constraintImpulse = makeGettableStateVar . cpConstraintGetImpulse
constraintFree :: (Constraint) -> IO ()
constraintFree a1 =
  let {a1' = id a1} in
  constraintFree'_ a1' >>
  return ()
{-# LINE 145 "src/Chiphunk/Low/Constraint.chs" #-}
pinJointNew :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> (Vect) 
 -> IO ((Constraint))
pinJointNew a1 a2 a3 a4 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  with a4 $ \a4' ->
  pinJointNew'_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 155 "src/Chiphunk/Low/Constraint.chs" #-}
w_cpPinJointGetAnchorA :: (Constraint) -> IO ((Vect))
w_cpPinJointGetAnchorA a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpPinJointGetAnchorA'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 157 "src/Chiphunk/Low/Constraint.chs" #-}
cpPinJointSetAnchorA :: (Constraint) -> (Vect) -> IO ()
cpPinJointSetAnchorA a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpPinJointSetAnchorA'_ a1' a2' >>
  return ()
{-# LINE 159 "src/Chiphunk/Low/Constraint.chs" #-}
pinJointAnchorA :: Constraint -> StateVar Vect
pinJointAnchorA = mkStateVar w_cpPinJointGetAnchorA cpPinJointSetAnchorA
w_cpPinJointGetAnchorB :: (Constraint) -> IO ((Vect))
w_cpPinJointGetAnchorB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpPinJointGetAnchorB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 165 "src/Chiphunk/Low/Constraint.chs" #-}
cpPinJointSetAnchorB :: (Constraint) -> (Vect) -> IO ()
cpPinJointSetAnchorB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpPinJointSetAnchorB'_ a1' a2' >>
  return ()
{-# LINE 167 "src/Chiphunk/Low/Constraint.chs" #-}
pinJointAnchorB :: Constraint -> StateVar Vect
pinJointAnchorB = mkStateVar w_cpPinJointGetAnchorB cpPinJointSetAnchorB
cpPinJointGetDist :: (Constraint) -> IO ((Double))
cpPinJointGetDist a1 =
  let {a1' = id a1} in
  cpPinJointGetDist'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 173 "src/Chiphunk/Low/Constraint.chs" #-}
cpPinJointSetDist :: (Constraint) -> (Double) -> IO ()
cpPinJointSetDist a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpPinJointSetDist'_ a1' a2' >>
  return ()
{-# LINE 175 "src/Chiphunk/Low/Constraint.chs" #-}
pinJointDist :: Constraint -> StateVar Double
pinJointDist = mkStateVar cpPinJointGetDist cpPinJointSetDist
slideJointNew :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> (Vect) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
slideJointNew a1 a2 a3 a4 a5 a6 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  with a4 $ \a4' ->
  let {a5' = realToFrac a5} in
  let {a6' = realToFrac a6} in
  slideJointNew'_ a1' a2' a3' a4' a5' a6' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 189 "src/Chiphunk/Low/Constraint.chs" #-}
w_cpSlideJointGetAnchorA :: (Constraint) -> IO ((Vect))
w_cpSlideJointGetAnchorA a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpSlideJointGetAnchorA'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 191 "src/Chiphunk/Low/Constraint.chs" #-}
cpSlideJointSetAnchorA :: (Constraint) -> (Vect) -> IO ()
cpSlideJointSetAnchorA a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpSlideJointSetAnchorA'_ a1' a2' >>
  return ()
{-# LINE 193 "src/Chiphunk/Low/Constraint.chs" #-}
slideJointAnchorA :: Constraint -> StateVar Vect
slideJointAnchorA = mkStateVar w_cpSlideJointGetAnchorA cpSlideJointSetAnchorA
w_cpSlideJointGetAnchorB :: (Constraint) -> IO ((Vect))
w_cpSlideJointGetAnchorB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpSlideJointGetAnchorB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 199 "src/Chiphunk/Low/Constraint.chs" #-}
cpSlideJointSetAnchorB :: (Constraint) -> (Vect) -> IO ()
cpSlideJointSetAnchorB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpSlideJointSetAnchorB'_ a1' a2' >>
  return ()
{-# LINE 201 "src/Chiphunk/Low/Constraint.chs" #-}
slideJointAnchorB :: Constraint -> StateVar Vect
slideJointAnchorB = mkStateVar w_cpSlideJointGetAnchorB cpSlideJointSetAnchorB
cpSlideJointGetMin :: (Constraint) -> IO ((Double))
cpSlideJointGetMin a1 =
  let {a1' = id a1} in
  cpSlideJointGetMin'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 207 "src/Chiphunk/Low/Constraint.chs" #-}
cpSlideJointSetMin :: (Constraint) -> (Double) -> IO ()
cpSlideJointSetMin a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpSlideJointSetMin'_ a1' a2' >>
  return ()
{-# LINE 209 "src/Chiphunk/Low/Constraint.chs" #-}
slideJointMin :: Constraint -> StateVar Double
slideJointMin = mkStateVar cpSlideJointGetMin cpSlideJointSetMin
cpSlideJointGetMax :: (Constraint) -> IO ((Double))
cpSlideJointGetMax a1 =
  let {a1' = id a1} in
  cpSlideJointGetMax'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 215 "src/Chiphunk/Low/Constraint.chs" #-}
cpSlideJointSetMax :: (Constraint) -> (Double) -> IO ()
cpSlideJointSetMax a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpSlideJointSetMax'_ a1' a2' >>
  return ()
{-# LINE 217 "src/Chiphunk/Low/Constraint.chs" #-}
slideJointMax :: Constraint -> StateVar Double
slideJointMax = mkStateVar cpSlideJointGetMax cpSlideJointSetMax
pivotJointNew :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> IO ((Constraint))
pivotJointNew a1 a2 a3 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  pivotJointNew'_ a1' a2' a3' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 229 "src/Chiphunk/Low/Constraint.chs" #-}
pivotJointNew2 :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> (Vect) 
 -> IO ((Constraint))
pivotJointNew2 a1 a2 a3 a4 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  with a4 $ \a4' ->
  pivotJointNew2'_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 239 "src/Chiphunk/Low/Constraint.chs" #-}
w_cpPivotJointGetAnchorA :: (Constraint) -> IO ((Vect))
w_cpPivotJointGetAnchorA a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpPivotJointGetAnchorA'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 241 "src/Chiphunk/Low/Constraint.chs" #-}
cpPivotJointSetAnchorA :: (Constraint) -> (Vect) -> IO ()
cpPivotJointSetAnchorA a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpPivotJointSetAnchorA'_ a1' a2' >>
  return ()
{-# LINE 243 "src/Chiphunk/Low/Constraint.chs" #-}
pivotJointAnchorA :: Constraint -> StateVar Vect
pivotJointAnchorA = mkStateVar w_cpPivotJointGetAnchorA cpPivotJointSetAnchorA
w_cpPivotJointGetAnchorB :: (Constraint) -> IO ((Vect))
w_cpPivotJointGetAnchorB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpPivotJointGetAnchorB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 249 "src/Chiphunk/Low/Constraint.chs" #-}
cpPivotJointSetAnchorB :: (Constraint) -> (Vect) -> IO ()
cpPivotJointSetAnchorB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpPivotJointSetAnchorB'_ a1' a2' >>
  return ()
{-# LINE 251 "src/Chiphunk/Low/Constraint.chs" #-}
pivotJointAnchorB :: Constraint -> StateVar Vect
pivotJointAnchorB = mkStateVar w_cpPivotJointGetAnchorB cpPivotJointSetAnchorB
grooveJointNew :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> (Vect) 
 -> (Vect) 
 -> IO ((Constraint))
grooveJointNew a1 a2 a3 a4 a5 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  with a4 $ \a4' ->
  with a5 $ \a5' ->
  grooveJointNew'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 264 "src/Chiphunk/Low/Constraint.chs" #-}
w_cpGrooveJointGetGrooveA :: (Constraint) -> IO ((Vect))
w_cpGrooveJointGetGrooveA a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpGrooveJointGetGrooveA'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 266 "src/Chiphunk/Low/Constraint.chs" #-}
cpGrooveJointSetGrooveA :: (Constraint) -> (Vect) -> IO ()
cpGrooveJointSetGrooveA a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpGrooveJointSetGrooveA'_ a1' a2' >>
  return ()
{-# LINE 268 "src/Chiphunk/Low/Constraint.chs" #-}
grooveJointGrooveA :: Constraint -> StateVar Vect
grooveJointGrooveA = mkStateVar w_cpGrooveJointGetGrooveA cpGrooveJointSetGrooveA
w_cpGrooveJointGetGrooveB :: (Constraint) -> IO ((Vect))
w_cpGrooveJointGetGrooveB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpGrooveJointGetGrooveB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 274 "src/Chiphunk/Low/Constraint.chs" #-}
cpGrooveJointSetGrooveB :: (Constraint) -> (Vect) -> IO ()
cpGrooveJointSetGrooveB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpGrooveJointSetGrooveB'_ a1' a2' >>
  return ()
{-# LINE 276 "src/Chiphunk/Low/Constraint.chs" #-}
grooveJointGrooveB :: Constraint -> StateVar Vect
grooveJointGrooveB = mkStateVar w_cpGrooveJointGetGrooveB cpGrooveJointSetGrooveB
w_cpGrooveJointGetAnchorB :: (Constraint) -> IO ((Vect))
w_cpGrooveJointGetAnchorB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpGrooveJointGetAnchorB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 282 "src/Chiphunk/Low/Constraint.chs" #-}
cpGrooveJointSetAnchorB :: (Constraint) -> (Vect) -> IO ()
cpGrooveJointSetAnchorB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpGrooveJointSetAnchorB'_ a1' a2' >>
  return ()
{-# LINE 284 "src/Chiphunk/Low/Constraint.chs" #-}
grooveJointAnchorB :: Constraint -> StateVar Vect
grooveJointAnchorB = mkStateVar w_cpGrooveJointGetAnchorB cpGrooveJointSetAnchorB
dampedSpringNew :: (Body) 
 -> (Body) 
 -> (Vect) 
 -> (Vect) 
 -> (Double) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
dampedSpringNew a1 a2 a3 a4 a5 a6 a7 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  with a3 $ \a3' ->
  with a4 $ \a4' ->
  let {a5' = realToFrac a5} in
  let {a6' = realToFrac a6} in
  let {a7' = realToFrac a7} in
  dampedSpringNew'_ a1' a2' a3' a4' a5' a6' a7' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 299 "src/Chiphunk/Low/Constraint.chs" #-}
w_cpDampedSpringGetAnchorA :: (Constraint) -> IO ((Vect))
w_cpDampedSpringGetAnchorA a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpDampedSpringGetAnchorA'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 301 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedSpringSetAnchorA :: (Constraint) -> (Vect) -> IO ()
cpDampedSpringSetAnchorA a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpDampedSpringSetAnchorA'_ a1' a2' >>
  return ()
{-# LINE 303 "src/Chiphunk/Low/Constraint.chs" #-}
dampedSpringAnchorA :: Constraint -> StateVar Vect
dampedSpringAnchorA = mkStateVar w_cpDampedSpringGetAnchorA cpDampedSpringSetAnchorA
w_cpDampedSpringGetAnchorB :: (Constraint) -> IO ((Vect))
w_cpDampedSpringGetAnchorB a1 =
  let {a1' = id a1} in
  alloca $ \a2' ->
  w_cpDampedSpringGetAnchorB'_ a1' a2' >>
  peek  a2'>>= \a2'' ->
  return (a2'')
{-# LINE 309 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedSpringSetAnchorB :: (Constraint) -> (Vect) -> IO ()
cpDampedSpringSetAnchorB a1 a2 =
  let {a1' = id a1} in
  with a2 $ \a2' ->
  cpDampedSpringSetAnchorB'_ a1' a2' >>
  return ()
{-# LINE 311 "src/Chiphunk/Low/Constraint.chs" #-}
dampedSpringAnchorB :: Constraint -> StateVar Vect
dampedSpringAnchorB = mkStateVar w_cpDampedSpringGetAnchorB cpDampedSpringSetAnchorB
cpDampedSpringGetRestLength :: (Constraint) -> IO ((Double))
cpDampedSpringGetRestLength a1 =
  let {a1' = id a1} in
  cpDampedSpringGetRestLength'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 317 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedSpringSetRestLength :: (Constraint) -> (Double) -> IO ()
cpDampedSpringSetRestLength a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedSpringSetRestLength'_ a1' a2' >>
  return ()
{-# LINE 319 "src/Chiphunk/Low/Constraint.chs" #-}
dampedSpringRestLength :: Constraint -> StateVar Double
dampedSpringRestLength = mkStateVar cpDampedSpringGetRestLength cpDampedSpringSetRestLength
cpDampedSpringGetStiffness :: (Constraint) -> IO ((Double))
cpDampedSpringGetStiffness a1 =
  let {a1' = id a1} in
  cpDampedSpringGetStiffness'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 325 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedSpringSetStiffness :: (Constraint) -> (Double) -> IO ()
cpDampedSpringSetStiffness a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedSpringSetStiffness'_ a1' a2' >>
  return ()
{-# LINE 327 "src/Chiphunk/Low/Constraint.chs" #-}
dampedSpringStiffness :: Constraint -> StateVar Double
dampedSpringStiffness = mkStateVar cpDampedSpringGetStiffness cpDampedSpringSetStiffness
cpDampedSpringGetDamping :: (Constraint) -> IO ((Double))
cpDampedSpringGetDamping a1 =
  let {a1' = id a1} in
  cpDampedSpringGetDamping'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 333 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedSpringSetDamping :: (Constraint) -> (Double) -> IO ()
cpDampedSpringSetDamping a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedSpringSetDamping'_ a1' a2' >>
  return ()
{-# LINE 335 "src/Chiphunk/Low/Constraint.chs" #-}
dampedSpringDamping :: Constraint -> StateVar Double
dampedSpringDamping = mkStateVar cpDampedSpringGetDamping cpDampedSpringSetDamping
dampedRotarySpringNew :: (Body) 
 -> (Body) 
 -> (Double) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
dampedRotarySpringNew a1 a2 a3 a4 a5 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  let {a3' = realToFrac a3} in
  let {a4' = realToFrac a4} in
  let {a5' = realToFrac a5} in
  dampedRotarySpringNew'_ a1' a2' a3' a4' a5' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 348 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedRotarySpringGetRestAngle :: (Constraint) -> IO ((Double))
cpDampedRotarySpringGetRestAngle a1 =
  let {a1' = id a1} in
  cpDampedRotarySpringGetRestAngle'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 350 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedRotarySpringSetRestAngle :: (Constraint) -> (Double) -> IO ()
cpDampedRotarySpringSetRestAngle a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedRotarySpringSetRestAngle'_ a1' a2' >>
  return ()
{-# LINE 352 "src/Chiphunk/Low/Constraint.chs" #-}
dampedRotarySpringRestAngle :: Constraint -> StateVar Double
dampedRotarySpringRestAngle = mkStateVar cpDampedRotarySpringGetRestAngle cpDampedRotarySpringSetRestAngle
cpDampedRotarySpringGetStiffness :: (Constraint) -> IO ((Double))
cpDampedRotarySpringGetStiffness a1 =
  let {a1' = id a1} in
  cpDampedRotarySpringGetStiffness'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 358 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedRotarySpringSetStiffness :: (Constraint) -> (Double) -> IO ()
cpDampedRotarySpringSetStiffness a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedRotarySpringSetStiffness'_ a1' a2' >>
  return ()
{-# LINE 360 "src/Chiphunk/Low/Constraint.chs" #-}
dampedRotarySpringStiffness :: Constraint -> StateVar Double
dampedRotarySpringStiffness = mkStateVar cpDampedRotarySpringGetStiffness cpDampedRotarySpringSetStiffness
cpDampedRotarySpringGetDamping :: (Constraint) -> IO ((Double))
cpDampedRotarySpringGetDamping a1 =
  let {a1' = id a1} in
  cpDampedRotarySpringGetDamping'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 366 "src/Chiphunk/Low/Constraint.chs" #-}
cpDampedRotarySpringSetDamping :: (Constraint) -> (Double) -> IO ()
cpDampedRotarySpringSetDamping a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpDampedRotarySpringSetDamping'_ a1' a2' >>
  return ()
{-# LINE 368 "src/Chiphunk/Low/Constraint.chs" #-}
dampedRotarySpringDamping :: Constraint -> StateVar Double
dampedRotarySpringDamping = mkStateVar cpDampedRotarySpringGetDamping cpDampedRotarySpringSetDamping
rotaryLimitJointNew :: (Body) 
 -> (Body) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
rotaryLimitJointNew a1 a2 a3 a4 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  let {a3' = realToFrac a3} in
  let {a4' = realToFrac a4} in
  rotaryLimitJointNew'_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 380 "src/Chiphunk/Low/Constraint.chs" #-}
cpRotaryLimitJointGetMin :: (Constraint) -> IO ((Double))
cpRotaryLimitJointGetMin a1 =
  let {a1' = id a1} in
  cpRotaryLimitJointGetMin'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 382 "src/Chiphunk/Low/Constraint.chs" #-}
cpRotaryLimitJointSetMin :: (Constraint) -> (Double) -> IO ()
cpRotaryLimitJointSetMin a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpRotaryLimitJointSetMin'_ a1' a2' >>
  return ()
{-# LINE 384 "src/Chiphunk/Low/Constraint.chs" #-}
rotaryLimitJointMin :: Constraint -> StateVar Double
rotaryLimitJointMin = mkStateVar cpRotaryLimitJointGetMin cpRotaryLimitJointSetMin
cpRotaryLimitJointGetMax :: (Constraint) -> IO ((Double))
cpRotaryLimitJointGetMax a1 =
  let {a1' = id a1} in
  cpRotaryLimitJointGetMax'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 390 "src/Chiphunk/Low/Constraint.chs" #-}
cpRotaryLimitJointSetMax :: (Constraint) -> (Double) -> IO ()
cpRotaryLimitJointSetMax a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpRotaryLimitJointSetMax'_ a1' a2' >>
  return ()
{-# LINE 392 "src/Chiphunk/Low/Constraint.chs" #-}
rotaryLimitJointMax :: Constraint -> StateVar Double
rotaryLimitJointMax = mkStateVar cpRotaryLimitJointGetMax cpRotaryLimitJointSetMax
ratchetJointNew :: (Body) 
 -> (Body) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
ratchetJointNew a1 a2 a3 a4 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  let {a3' = realToFrac a3} in
  let {a4' = realToFrac a4} in
  ratchetJointNew'_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 404 "src/Chiphunk/Low/Constraint.chs" #-}
cpRatchetJointGetAngle :: (Constraint) -> IO ((Double))
cpRatchetJointGetAngle a1 =
  let {a1' = id a1} in
  cpRatchetJointGetAngle'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 406 "src/Chiphunk/Low/Constraint.chs" #-}
cpRatchetJointSetAngle :: (Constraint) -> (Double) -> IO ()
cpRatchetJointSetAngle a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpRatchetJointSetAngle'_ a1' a2' >>
  return ()
{-# LINE 408 "src/Chiphunk/Low/Constraint.chs" #-}
ratchetJointAngle :: Constraint -> StateVar Double
ratchetJointAngle = mkStateVar cpRatchetJointGetAngle cpRatchetJointSetAngle
cpRatchetJointGetPhase :: (Constraint) -> IO ((Double))
cpRatchetJointGetPhase a1 =
  let {a1' = id a1} in
  cpRatchetJointGetPhase'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 414 "src/Chiphunk/Low/Constraint.chs" #-}
cpRatchetJointSetPhase :: (Constraint) -> (Double) -> IO ()
cpRatchetJointSetPhase a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpRatchetJointSetPhase'_ a1' a2' >>
  return ()
{-# LINE 416 "src/Chiphunk/Low/Constraint.chs" #-}
ratchetJointPhase :: Constraint -> StateVar Double
ratchetJointPhase = mkStateVar cpRatchetJointGetPhase cpRatchetJointSetPhase
cpRatchetJointGetRatchet :: (Constraint) -> IO ((Double))
cpRatchetJointGetRatchet a1 =
  let {a1' = id a1} in
  cpRatchetJointGetRatchet'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 422 "src/Chiphunk/Low/Constraint.chs" #-}
cpRatchetJointSetRatchet :: (Constraint) -> (Double) -> IO ()
cpRatchetJointSetRatchet a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpRatchetJointSetRatchet'_ a1' a2' >>
  return ()
{-# LINE 424 "src/Chiphunk/Low/Constraint.chs" #-}
ratchetJointRatchet :: Constraint -> StateVar Double
ratchetJointRatchet = mkStateVar cpRatchetJointGetRatchet cpRatchetJointSetRatchet
gearJointNew :: (Body) 
 -> (Body) 
 -> (Double) 
 -> (Double) 
 -> IO ((Constraint))
gearJointNew a1 a2 a3 a4 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  let {a3' = realToFrac a3} in
  let {a4' = realToFrac a4} in
  gearJointNew'_ a1' a2' a3' a4' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 436 "src/Chiphunk/Low/Constraint.chs" #-}
cpGearJointGetPhase :: (Constraint) -> IO ((Double))
cpGearJointGetPhase a1 =
  let {a1' = id a1} in
  cpGearJointGetPhase'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 438 "src/Chiphunk/Low/Constraint.chs" #-}
cpGearJointSetPhase :: (Constraint) -> (Double) -> IO ()
cpGearJointSetPhase a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpGearJointSetPhase'_ a1' a2' >>
  return ()
{-# LINE 440 "src/Chiphunk/Low/Constraint.chs" #-}
gearJointPhase :: Constraint -> StateVar Double
gearJointPhase = mkStateVar cpGearJointGetPhase cpGearJointSetPhase
cpGearJointGetRatio :: (Constraint) -> IO ((Double))
cpGearJointGetRatio a1 =
  let {a1' = id a1} in
  cpGearJointGetRatio'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 446 "src/Chiphunk/Low/Constraint.chs" #-}
cpGearJointSetRatio :: (Constraint) -> (Double) -> IO ()
cpGearJointSetRatio a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpGearJointSetRatio'_ a1' a2' >>
  return ()
{-# LINE 448 "src/Chiphunk/Low/Constraint.chs" #-}
gearJointRatio :: Constraint -> StateVar Double
gearJointRatio = mkStateVar cpGearJointGetRatio cpGearJointSetRatio
simpleMotorNew :: (Body) 
 -> (Body) 
 -> (Double) 
 -> IO ((Constraint))
simpleMotorNew a1 a2 a3 =
  let {a1' = id a1} in
  let {a2' = id a2} in
  let {a3' = realToFrac a3} in
  simpleMotorNew'_ a1' a2' a3' >>= \res ->
  let {res' = id res} in
  return (res')
{-# LINE 459 "src/Chiphunk/Low/Constraint.chs" #-}
cpSimpleMotorGetRate :: (Constraint) -> IO ((Double))
cpSimpleMotorGetRate a1 =
  let {a1' = id a1} in
  cpSimpleMotorGetRate'_ a1' >>= \res ->
  let {res' = realToFrac res} in
  return (res')
{-# LINE 461 "src/Chiphunk/Low/Constraint.chs" #-}
cpSimpleMotorSetRate :: (Constraint) -> (Double) -> IO ()
cpSimpleMotorSetRate a1 a2 =
  let {a1' = id a1} in
  let {a2' = realToFrac a2} in
  cpSimpleMotorSetRate'_ a1' a2' >>
  return ()
{-# LINE 463 "src/Chiphunk/Low/Constraint.chs" #-}
simpleMotorRate :: Constraint -> StateVar Double
simpleMotorRate = mkStateVar cpSimpleMotorGetRate cpSimpleMotorSetRate
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetBodyA"
  cpConstraintGetBodyA'_ :: ((Constraint) -> (IO (Body)))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetBodyB"
  cpConstraintGetBodyB'_ :: ((Constraint) -> (IO (Body)))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetMaxForce"
  cpConstraintGetMaxForce'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintSetMaxForce"
  cpConstraintSetMaxForce'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetErrorBias"
  cpConstraintGetErrorBias'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintSetErrorBias"
  cpConstraintSetErrorBias'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetMaxBias"
  cpConstraintGetMaxBias'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintSetMaxBias"
  cpConstraintSetMaxBias'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetSpace"
  cpConstraintGetSpace'_ :: ((Constraint) -> (IO (Space)))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetCollideBodies"
  cpConstraintGetCollideBodies'_ :: ((Constraint) -> (IO C2HSImp.CUChar))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintSetCollideBodies"
  cpConstraintSetCollideBodies'_ :: ((Constraint) -> (C2HSImp.CUChar -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetUserData"
  cpConstraintGetUserData'_ :: ((Constraint) -> (IO (DataPtr)))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintSetUserData"
  cpConstraintSetUserData'_ :: ((Constraint) -> ((DataPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpConstraintGetImpulse"
  cpConstraintGetImpulse'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall safe "Chiphunk/Low/Constraint.chs.h cpConstraintFree"
  constraintFree'_ :: ((Constraint) -> (IO ()))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPinJointNew"
  pinJointNew'_ :: ((Body) -> ((Body) -> ((VectPtr) -> ((VectPtr) -> (IO (Constraint))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpPinJointGetAnchorA"
  w_cpPinJointGetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPinJointSetAnchorA"
  cpPinJointSetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpPinJointGetAnchorB"
  w_cpPinJointGetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPinJointSetAnchorB"
  cpPinJointSetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpPinJointGetDist"
  cpPinJointGetDist'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpPinJointSetDist"
  cpPinJointSetDist'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpSlideJointNew"
  slideJointNew'_ :: ((Body) -> ((Body) -> ((VectPtr) -> ((VectPtr) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint))))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpSlideJointGetAnchorA"
  w_cpSlideJointGetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpSlideJointSetAnchorA"
  cpSlideJointSetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpSlideJointGetAnchorB"
  w_cpSlideJointGetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpSlideJointSetAnchorB"
  cpSlideJointSetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSlideJointGetMin"
  cpSlideJointGetMin'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSlideJointSetMin"
  cpSlideJointSetMin'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSlideJointGetMax"
  cpSlideJointGetMax'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSlideJointSetMax"
  cpSlideJointSetMax'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPivotJointNew"
  pivotJointNew'_ :: ((Body) -> ((Body) -> ((VectPtr) -> (IO (Constraint)))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPivotJointNew2"
  pivotJointNew2'_ :: ((Body) -> ((Body) -> ((VectPtr) -> ((VectPtr) -> (IO (Constraint))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpPivotJointGetAnchorA"
  w_cpPivotJointGetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPivotJointSetAnchorA"
  cpPivotJointSetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpPivotJointGetAnchorB"
  w_cpPivotJointGetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpPivotJointSetAnchorB"
  cpPivotJointSetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpGrooveJointNew"
  grooveJointNew'_ :: ((Body) -> ((Body) -> ((VectPtr) -> ((VectPtr) -> ((VectPtr) -> (IO (Constraint)))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpGrooveJointGetGrooveA"
  w_cpGrooveJointGetGrooveA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpGrooveJointSetGrooveA"
  cpGrooveJointSetGrooveA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpGrooveJointGetGrooveB"
  w_cpGrooveJointGetGrooveB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpGrooveJointSetGrooveB"
  cpGrooveJointSetGrooveB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpGrooveJointGetAnchorB"
  w_cpGrooveJointGetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpGrooveJointSetAnchorB"
  cpGrooveJointSetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpDampedSpringNew"
  dampedSpringNew'_ :: ((Body) -> ((Body) -> ((VectPtr) -> ((VectPtr) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint)))))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpDampedSpringGetAnchorA"
  w_cpDampedSpringGetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpDampedSpringSetAnchorA"
  cpDampedSpringSetAnchorA'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h w_cpDampedSpringGetAnchorB"
  w_cpDampedSpringGetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h __c2hs_wrapped__cpDampedSpringSetAnchorB"
  cpDampedSpringSetAnchorB'_ :: ((Constraint) -> ((VectPtr) -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringGetRestLength"
  cpDampedSpringGetRestLength'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringSetRestLength"
  cpDampedSpringSetRestLength'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringGetStiffness"
  cpDampedSpringGetStiffness'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringSetStiffness"
  cpDampedSpringSetStiffness'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringGetDamping"
  cpDampedSpringGetDamping'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedSpringSetDamping"
  cpDampedSpringSetDamping'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringNew"
  dampedRotarySpringNew'_ :: ((Body) -> ((Body) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint)))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringGetRestAngle"
  cpDampedRotarySpringGetRestAngle'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringSetRestAngle"
  cpDampedRotarySpringSetRestAngle'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringGetStiffness"
  cpDampedRotarySpringGetStiffness'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringSetStiffness"
  cpDampedRotarySpringSetStiffness'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringGetDamping"
  cpDampedRotarySpringGetDamping'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpDampedRotarySpringSetDamping"
  cpDampedRotarySpringSetDamping'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRotaryLimitJointNew"
  rotaryLimitJointNew'_ :: ((Body) -> ((Body) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRotaryLimitJointGetMin"
  cpRotaryLimitJointGetMin'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRotaryLimitJointSetMin"
  cpRotaryLimitJointSetMin'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRotaryLimitJointGetMax"
  cpRotaryLimitJointGetMax'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRotaryLimitJointSetMax"
  cpRotaryLimitJointSetMax'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointNew"
  ratchetJointNew'_ :: ((Body) -> ((Body) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointGetAngle"
  cpRatchetJointGetAngle'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointSetAngle"
  cpRatchetJointSetAngle'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointGetPhase"
  cpRatchetJointGetPhase'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointSetPhase"
  cpRatchetJointSetPhase'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointGetRatchet"
  cpRatchetJointGetRatchet'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpRatchetJointSetRatchet"
  cpRatchetJointSetRatchet'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpGearJointNew"
  gearJointNew'_ :: ((Body) -> ((Body) -> (C2HSImp.CDouble -> (C2HSImp.CDouble -> (IO (Constraint))))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpGearJointGetPhase"
  cpGearJointGetPhase'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpGearJointSetPhase"
  cpGearJointSetPhase'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpGearJointGetRatio"
  cpGearJointGetRatio'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpGearJointSetRatio"
  cpGearJointSetRatio'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSimpleMotorNew"
  simpleMotorNew'_ :: ((Body) -> ((Body) -> (C2HSImp.CDouble -> (IO (Constraint)))))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSimpleMotorGetRate"
  cpSimpleMotorGetRate'_ :: ((Constraint) -> (IO C2HSImp.CDouble))
foreign import ccall unsafe "Chiphunk/Low/Constraint.chs.h cpSimpleMotorSetRate"
  cpSimpleMotorSetRate'_ :: ((Constraint) -> (C2HSImp.CDouble -> (IO ())))