{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskellQuotes #-}
module Hercules.CNix.Store.Context where
import Data.ByteString.Unsafe (unsafePackMallocCString)
import qualified Data.Map as M
import qualified Foreign.C.String
import qualified Language.C.Inline.Context as C
import qualified Language.C.Inline.Cpp as C
import qualified Language.C.Types as C
import Protolude
data StdString
data Ref a
data Strings
data NixStore
data ValidPathInfo
data Derivation
data StringsIterator
data DerivationOutputsIterator
data DerivationInputsIterator
data StringPairsIterator
data StringPairs
data SecretKey
data NixStorePath
data NixStorePathWithOutputs
data CDerivation
context :: C.Context
context :: Context
context =
Context
C.cppCtx
Context -> Context -> Context
forall a. Semigroup a => a -> a -> a
<> Context
C.fptrCtx
Context -> Context -> Context
forall a. Semigroup a => a -> a -> a
<> Context
C.bsCtx
Context -> Context -> Context
forall a. Semigroup a => a -> a -> a
<> Context
forall a. Monoid a => a
mempty
{ C.ctxTypesTable =
M.singleton (C.TypeName "refStore") [t|Ref NixStore|]
<> M.singleton (C.TypeName "nix::StorePath") [t|NixStorePath|]
<> M.singleton (C.TypeName "nix::StorePathWithOutputs") [t|NixStorePathWithOutputs|]
<> M.singleton (C.TypeName "refValidPathInfo") [t|Ref ValidPathInfo|]
<> M.singleton (C.TypeName "Strings") [t|Strings|]
<> M.singleton (C.TypeName "StringsIterator") [t|StringsIterator|]
<> M.singleton (C.TypeName "StringPairs") [t|StringPairs|]
<> M.singleton (C.TypeName "StringPairsIterator") [t|StringPairsIterator|]
<> M.singleton (C.TypeName "Derivation") [t|Derivation|]
<> M.singleton (C.TypeName "DerivationOutputsIterator") [t|DerivationOutputsIterator|]
<> M.singleton (C.TypeName "DerivationInputsIterator") [t|DerivationInputsIterator|]
<> M.singleton (C.TypeName "SecretKey") [t|SecretKey|]
}
unsafeMallocBS :: (MonadIO m) => IO Foreign.C.String.CString -> m ByteString
unsafeMallocBS :: forall (m :: * -> *). MonadIO m => IO CString -> m ByteString
unsafeMallocBS IO CString
m = IO ByteString -> m ByteString
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (CString -> IO ByteString
unsafePackMallocCString (CString -> IO ByteString) -> IO CString -> IO ByteString
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< IO CString
m)