Skip to content

Commit

Permalink
made all the casadi FFI calls unsafe
Browse files Browse the repository at this point in the history
  • Loading branch information
ghorn committed Aug 18, 2011
1 parent e2205a8 commit c763e75
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 55 deletions.
50 changes: 25 additions & 25 deletions Casadi/SX.hs
Expand Up @@ -26,31 +26,31 @@ newtype SX = SX (ForeignPtr SXRaw)
--data SX = SX (ForeignPtr SXRaw) | SX Integer | SX Double

-- foreign imports
foreign import ccall "sxInterface.hpp sxNewDouble" c_sxNewDouble :: CDouble -> IO (Ptr SXRaw)
foreign import ccall "sxInterface.hpp sxNewInt" c_sxNewInt :: CInt -> IO (Ptr SXRaw)
foreign import ccall "sxInterface.hpp &sxDelete" c_sxDelete :: FunPtr (Ptr SXRaw -> IO ())
foreign import ccall "sxInterface.hpp sxShow" c_sxShow :: Ptr CChar -> CInt -> (Ptr SXRaw) -> IO ()

foreign import ccall "sxInterface.hpp sxEqual" c_sxEqual :: Ptr SXRaw -> Ptr SXRaw -> IO CInt
foreign import ccall "sxInterface.hpp sxPlus" c_sxPlus :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxMinus" c_sxMinus :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxTimes" c_sxTimes :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxDivide" c_sxDivide :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxNegate" c_sxNegate :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxAbs" c_sxAbs :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxSignum" c_sxSignum :: Ptr SXRaw -> IO CInt

foreign import ccall "sxInterface.hpp sxPi" c_sxPi :: Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxExp" c_sxExp :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxSqrt" c_sxSqrt :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxLog" c_sxLog :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxPow" c_sxPow :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxSin" c_sxSin :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxCos" c_sxCos :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxTan" c_sxTan :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxArcsin" c_sxArcsin :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxArccos" c_sxArccos :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall "sxInterface.hpp sxArctan" c_sxArctan :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxNewDouble" c_sxNewDouble :: CDouble -> IO (Ptr SXRaw)
foreign import ccall unsafe "sxInterface.hpp sxNewInt" c_sxNewInt :: CInt -> IO (Ptr SXRaw)
foreign import ccall unsafe "sxInterface.hpp &sxDelete" c_sxDelete :: FunPtr (Ptr SXRaw -> IO ())
foreign import ccall unsafe "sxInterface.hpp sxShow" c_sxShow :: Ptr CChar -> CInt -> (Ptr SXRaw) -> IO ()

foreign import ccall unsafe "sxInterface.hpp sxEqual" c_sxEqual :: Ptr SXRaw -> Ptr SXRaw -> IO CInt
foreign import ccall unsafe "sxInterface.hpp sxPlus" c_sxPlus :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxMinus" c_sxMinus :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxTimes" c_sxTimes :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxDivide" c_sxDivide :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxNegate" c_sxNegate :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxAbs" c_sxAbs :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxSignum" c_sxSignum :: Ptr SXRaw -> IO CInt

foreign import ccall unsafe "sxInterface.hpp sxPi" c_sxPi :: Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxExp" c_sxExp :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxSqrt" c_sxSqrt :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxLog" c_sxLog :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxPow" c_sxPow :: Ptr SXRaw -> Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxSin" c_sxSin :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxCos" c_sxCos :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxTan" c_sxTan :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxArcsin" c_sxArcsin :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxArccos" c_sxArccos :: Ptr SXRaw -> Ptr SXRaw -> IO ()
foreign import ccall unsafe "sxInterface.hpp sxArctan" c_sxArctan :: Ptr SXRaw -> Ptr SXRaw -> IO ()


-- cpp function wrappers
Expand Down
24 changes: 12 additions & 12 deletions Casadi/SXFunction.hs
Expand Up @@ -35,18 +35,18 @@ data SXFunctionRaw = SXFunctionRaw
newtype SXFunction = SXFunction (ForeignPtr SXFunctionRaw)

-- foreign imports
foreign import ccall "sxFunctionCreate" c_sxFunctionCreate :: Ptr SXMatrixRaw -> Ptr SXMatrixRaw -> IO (Ptr SXFunctionRaw)
foreign import ccall "sxFunctionCreateMulti" c_sxFunctionCreateMulti :: (Ptr SXMatrixRaw) -> CInt -> (Ptr SXMatrixRaw) -> CInt -> IO (Ptr SXFunctionRaw)
foreign import ccall "&sxFunctionDelete" c_sxFunctionDelete :: FunPtr (Ptr SXFunctionRaw -> IO ())
foreign import ccall "sxFunctionGetNumInputs" c_sxFunctionGetNumInputs :: Ptr SXFunctionRaw -> IO CInt
foreign import ccall "sxFunctionGetNumOutputs" c_sxFunctionGetNumOutputs :: Ptr SXFunctionRaw -> IO CInt
foreign import ccall "sxFunctionGetInputs" c_sxFunctionGetInputs :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxFunctionGetOutputs" c_sxFunctionGetOutputs :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxFunctionGradient" c_sxFunctionGradient :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxFunctionJacobian" c_sxFunctionJacobian :: Ptr SXFunctionRaw -> CInt -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxFunctionHessian" c_sxFunctionHessian :: Ptr SXFunctionRaw -> CInt -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxFunctionEvaluate" c_sxFunctionEvaluate :: Ptr SXFunctionRaw -> Ptr CDouble -> Ptr CInt -> Ptr CInt -> IO ()
foreign import ccall "sxFunctionGetEvaluatedOutput" c_sxFunctionGetEvaluatedOutput :: Ptr SXFunctionRaw -> CInt -> CInt -> CInt -> Ptr CDouble -> IO ()
foreign import ccall unsafe "sxFunctionCreate" c_sxFunctionCreate :: Ptr SXMatrixRaw -> Ptr SXMatrixRaw -> IO (Ptr SXFunctionRaw)
foreign import ccall unsafe "sxFunctionCreateMulti" c_sxFunctionCreateMulti :: (Ptr SXMatrixRaw) -> CInt -> (Ptr SXMatrixRaw) -> CInt -> IO (Ptr SXFunctionRaw)
foreign import ccall unsafe "&sxFunctionDelete" c_sxFunctionDelete :: FunPtr (Ptr SXFunctionRaw -> IO ())
foreign import ccall unsafe "sxFunctionGetNumInputs" c_sxFunctionGetNumInputs :: Ptr SXFunctionRaw -> IO CInt
foreign import ccall unsafe "sxFunctionGetNumOutputs" c_sxFunctionGetNumOutputs :: Ptr SXFunctionRaw -> IO CInt
foreign import ccall unsafe "sxFunctionGetInputs" c_sxFunctionGetInputs :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxFunctionGetOutputs" c_sxFunctionGetOutputs :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxFunctionGradient" c_sxFunctionGradient :: Ptr SXFunctionRaw -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxFunctionJacobian" c_sxFunctionJacobian :: Ptr SXFunctionRaw -> CInt -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxFunctionHessian" c_sxFunctionHessian :: Ptr SXFunctionRaw -> CInt -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxFunctionEvaluate" c_sxFunctionEvaluate :: Ptr SXFunctionRaw -> Ptr CDouble -> Ptr CInt -> Ptr CInt -> IO ()
foreign import ccall unsafe "sxFunctionGetEvaluatedOutput" c_sxFunctionGetEvaluatedOutput :: Ptr SXFunctionRaw -> CInt -> CInt -> CInt -> Ptr CDouble -> IO ()


------------------ creation -------------------------
Expand Down
36 changes: 18 additions & 18 deletions Casadi/SXMatrix.hs
Expand Up @@ -38,24 +38,24 @@ instance Storable SXMatrixRaw where
alignment _ = fromIntegral $ unsafePerformIO c_sxMatrixSizeOfAddress

-- foreign imports
foreign import ccall "sxMatrixSizeOfAddress" c_sxMatrixSizeOfAddress :: IO CInt
foreign import ccall "sxMatrixCreateSymbolic" c_sxMatrixCreateSymbolic :: Ptr CChar -> CInt -> CInt -> IO (Ptr SXMatrixRaw)
foreign import ccall "sxMatrixDuplicate" c_sxMatrixDuplicate :: (Ptr SXMatrixRaw) -> IO (Ptr SXMatrixRaw)
foreign import ccall "sxMatrixDuplicateAt" c_sxMatrixDuplicateAt :: (Ptr SXMatrixRaw) -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall "sxMatrixFreeArray" c_sxMatrixFreeArray :: (Ptr SXMatrixRaw) -> CInt -> IO ()
foreign import ccall "&sxMatrixDelete" c_sxMatrixDelete :: FunPtr (Ptr SXMatrixRaw -> IO ())
foreign import ccall "sxMatrixZeros" c_sxMatrixZeros :: CInt -> CInt -> IO (Ptr SXMatrixRaw)
foreign import ccall "sxMatrixShow" c_sxMatrixShow :: Ptr CChar -> CInt -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMatrixAt" c_sxMatrixAt :: (Ptr SXMatrixRaw) -> CInt -> CInt -> (Ptr SXRaw) -> IO ()
foreign import ccall "sxMatrixSet" c_sxMatrixSet :: (Ptr SXRaw) -> CInt -> CInt -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMatrixSize1" c_sxMatrixSize1 :: (Ptr SXMatrixRaw) -> IO CInt
foreign import ccall "sxMatrixSize2" c_sxMatrixSize2 :: (Ptr SXMatrixRaw) -> IO CInt

foreign import ccall "sxMatrixPlus" c_sxMatrixPlus :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMatrixMinus" c_sxMatrixMinus :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMM" c_sxMM :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMatrixTranspose" c_sxMatrixTranspose :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall "sxMatrixIsEqual" c_sxMatrixIsEqual :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO CInt
foreign import ccall unsafe "sxMatrixSizeOfAddress" c_sxMatrixSizeOfAddress :: IO CInt
foreign import ccall unsafe "sxMatrixCreateSymbolic" c_sxMatrixCreateSymbolic :: Ptr CChar -> CInt -> CInt -> IO (Ptr SXMatrixRaw)
foreign import ccall unsafe "sxMatrixDuplicate" c_sxMatrixDuplicate :: (Ptr SXMatrixRaw) -> IO (Ptr SXMatrixRaw)
foreign import ccall unsafe "sxMatrixDuplicateAt" c_sxMatrixDuplicateAt :: (Ptr SXMatrixRaw) -> CInt -> Ptr SXMatrixRaw -> IO ()
foreign import ccall unsafe "sxMatrixFreeArray" c_sxMatrixFreeArray :: (Ptr SXMatrixRaw) -> CInt -> IO ()
foreign import ccall unsafe "&sxMatrixDelete" c_sxMatrixDelete :: FunPtr (Ptr SXMatrixRaw -> IO ())
foreign import ccall unsafe "sxMatrixZeros" c_sxMatrixZeros :: CInt -> CInt -> IO (Ptr SXMatrixRaw)
foreign import ccall unsafe "sxMatrixShow" c_sxMatrixShow :: Ptr CChar -> CInt -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMatrixAt" c_sxMatrixAt :: (Ptr SXMatrixRaw) -> CInt -> CInt -> (Ptr SXRaw) -> IO ()
foreign import ccall unsafe "sxMatrixSet" c_sxMatrixSet :: (Ptr SXRaw) -> CInt -> CInt -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMatrixSize1" c_sxMatrixSize1 :: (Ptr SXMatrixRaw) -> IO CInt
foreign import ccall unsafe "sxMatrixSize2" c_sxMatrixSize2 :: (Ptr SXMatrixRaw) -> IO CInt

foreign import ccall unsafe "sxMatrixPlus" c_sxMatrixPlus :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMatrixMinus" c_sxMatrixMinus :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMM" c_sxMM :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMatrixTranspose" c_sxMatrixTranspose :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO ()
foreign import ccall unsafe "sxMatrixIsEqual" c_sxMatrixIsEqual :: (Ptr SXMatrixRaw) -> (Ptr SXMatrixRaw) -> IO CInt


----------------- create -------------------------
Expand Down

0 comments on commit c763e75

Please sign in to comment.