casadi-bindings-3.4.5.0: src/Casadi/Sparsity.hs
{-# OPTIONS_GHC -Wall -fno-cse -fno-warn-orphans #-}
module Casadi.Sparsity
( Sparsity
, upper, lower, spy, spy_matlab
, dense, sparse, scalar
, compress, compressed
, get_row, get_col
) where
import qualified Data.Vector as V
import System.IO.Unsafe ( unsafePerformIO )
import qualified Data.Serialize as S
import qualified Data.Binary as B
import Data.Vector.Binary () -- instances
import Casadi.Core.Classes.Sparsity
import Casadi.SharedObject ( castSharedObject )
putWith :: (V.Vector Int -> m ()) -> Sparsity -> m ()
putWith putVector = putVector . compress
getWith :: Functor f => f (V.Vector Int) -> f Sparsity
getWith getVector = fmap compressed getVector
-- Data.Vector.Cereal looks deprecated, it's not in master anymore
instance S.Serialize Sparsity where
put = putWith (S.put . V.toList)
get = getWith (fmap V.fromList S.get)
instance B.Binary Sparsity where
put = putWith B.put
get = getWith B.get
instance Show Sparsity where
show x = show (castSharedObject x)
{-# NOINLINE show #-}
instance Eq Sparsity where
x == y = unsafePerformIO (sparsity_is_equal__1 x y)
{-# NOINLINE (==) #-}
upper :: Int -> Sparsity
upper k = unsafePerformIO (sparsity_upper k)
{-# NOINLINE upper #-}
lower :: Int -> Sparsity
lower k = unsafePerformIO (sparsity_lower k)
{-# NOINLINE lower #-}
spy :: Sparsity -> IO ()
spy = sparsity_spy
spy_matlab :: Sparsity -> String -> IO ()
spy_matlab = sparsity_spy_matlab
scalar :: Sparsity
scalar = unsafePerformIO sparsity_scalar__0
{-# NOINLINE scalar #-}
get_row :: Sparsity -> V.Vector Int
get_row s = unsafePerformIO (sparsity_get_row s)
{-# NOINLINE get_row #-}
get_col :: Sparsity -> V.Vector Int
get_col s = unsafePerformIO (sparsity_get_col s)
{-# NOINLINE get_col #-}
sparse :: Int -> Int -> V.Vector Int -> V.Vector Int -> Sparsity
sparse nr nc r c = unsafePerformIO (sparsity__1 nr nc r c)
{-# NOINLINE sparse #-}
dense :: Int -> Int -> Sparsity
dense nr nc = unsafePerformIO (sparsity_dense__2 nr nc)
{-# NOINLINE dense #-}
compress :: Sparsity -> V.Vector Int
compress s = unsafePerformIO (sparsity_compress s)
{-# NOINLINE compress #-}
compressed :: V.Vector Int -> Sparsity
compressed v = unsafePerformIO (sparsity_compressed__0 v)
{-# NOINLINE compressed #-}