Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
An internal module, providing a slightly higher level interface than Language.Souffle.Internal.Bindings. It uses more commonly found data types instead of the low level C types for easier integration with other parts of a Haskell application. Also it takes care of garbage collection so other modules do not have to take this into account anymore.
Used only internally, so prone to changes, use at your own risk.
Synopsis
- data Souffle
- data Relation
- data ByteBuf
- init :: String -> IO (Maybe (ForeignPtr Souffle))
- setNumThreads :: ForeignPtr Souffle -> Word64 -> IO ()
- getNumThreads :: ForeignPtr Souffle -> IO Word64
- run :: ForeignPtr Souffle -> IO ()
- loadAll :: ForeignPtr Souffle -> FilePath -> IO ()
- printAll :: ForeignPtr Souffle -> FilePath -> IO ()
- getRelation :: ForeignPtr Souffle -> String -> IO (Ptr Relation)
- pushFacts :: Ptr Relation -> Ptr ByteBuf -> Word64 -> IO ()
- popFacts :: Ptr Souffle -> Ptr Relation -> IO (Ptr ByteBuf)
- containsFact :: Ptr Relation -> Ptr ByteBuf -> IO Bool
Documentation
A void type, used for tagging a pointer that points to an embedded Souffle program.
init :: String -> IO (Maybe (ForeignPtr Souffle)) Source #
Initializes a Souffle program.
The string argument is the name of the program and should be the same as the filename (minus the .dl extension).
The action will return Nothing
if it failed to load the Souffle program.
Otherwise it will return a pointer that can be used in other functions
in this module.
setNumThreads :: ForeignPtr Souffle -> Word64 -> IO () Source #
Sets the number of CPU cores this Souffle program should use.
getNumThreads :: ForeignPtr Souffle -> IO Word64 Source #
Gets the number of CPU cores this Souffle program should use.
loadAll :: ForeignPtr Souffle -> FilePath -> IO () Source #
Load all facts from files in a certain directory.
printAll :: ForeignPtr Souffle -> FilePath -> IO () Source #
Write out all facts of the program to CSV files in a certain directory (as defined in the Souffle program).
getRelation :: ForeignPtr Souffle -> String -> IO (Ptr Relation) Source #
Lookup a relation by name in the Souffle program.
Note that the returned pointer can be nullPtr
if it is not defined
in the Souffle program.
pushFacts :: Ptr Relation -> Ptr ByteBuf -> Word64 -> IO () Source #
Serializes many facts from Datalog to Haskell.
You need to check if the passed pointers are non-NULL before passing it to this function. Not doing so results in undefined behavior. Passing in a different count of objects to what is actually inside the byte buffer will crash.
popFacts :: Ptr Souffle -> Ptr Relation -> IO (Ptr ByteBuf) Source #
Serializes many facts from Haskell to Datalog.
You need to check if the passed pointer is non-NULL before passing it to this function. Not doing so results in undefined behavior.
Returns a pointer to a byte buffer that contains the serialized Datalog facts.