dlvhex  2.5.0
include/dlvhex2/PluginInterface.h File Reference

Interface that can/should be implemented by a plugin. More...

#include "dlvhex2/PlatformDefinitions.h"
#include "dlvhex2/fwd.h"
#include "dlvhex2/ID.h"
#include "dlvhex2/Atoms.h"
#include "dlvhex2/Error.h"
#include "dlvhex2/CDNLSolver.h"
#include "dlvhex2/ComponentGraph.h"
#include "dlvhex2/ExtSourceProperties.h"
#include "dlvhex2/ExternalAtomEvaluationHeuristicsInterface.h"
#include <boost/shared_ptr.hpp>
#include <boost/unordered_map.hpp>
#include <boost/thread/mutex.hpp>
#include <map>
#include <string>
#include <iosfwd>
#include <algorithm>
Include dependency graph for PluginInterface.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  PluginInterface
 Factory where plugins interact with the dlvhex core. More...
class  PluginData
 Base class for plugin-specific storage in ProgramCtx. More...
class  PluginEnvironment
 Base class for plugin-specific storage in ProgramCtx. More...
class  PluginAtom
 Interface class for external Atoms. More...
struct  PluginAtom::Query
 Query class which provides the input of an external atom call. More...
struct  PluginAtom::Answer
 Output of an external atom call. More...
class  PluginConverter
 Converter class (input stream rewriter). More...
class  ModelCallback
 Callback functor for processing complete models of the HEX program. More...
class  FinalCallback
 Callback functor after model enumeration finished or aborted. More...
class  PluginRewriter
 Rewriter class. More...
class  PluginOptimizer
 Optimizer class. More...
struct  PluginPtrDeleter< AllocatedT >
 Special library deleter to be used with boost smart pointers. More...
struct  PluginPtrNOPDeleter< AllocatedT >
 Special library deleter to be used with boost smart pointers. More...

Defines

#define PLUGINABIVERSIONFUNCTION   getDlvhex2ABIVersion
 Definitions for C ABI interface for dlvhex plugins.
#define PLUGINABIVERSIONFUNCTIONSTRING   "getDlvhex2ABIVersion"
#define PLUGINVERSIONFUNCTION   getDlvhexPluginVersion
#define PLUGINVERSIONFUNCTIONSTRING   "getDlvhexPluginVersion"
#define PLUGINIMPORTFUNCTION   importPlugin
#define PLUGINIMPORTFUNCTIONSTRING   "importPlugin"
#define IMPLEMENT_PLUGINABIVERSIONFUNCTION

Typedefs

typedef boost::shared_ptr
< PluginInterface
PluginInterfacePtr
typedef boost::shared_ptr
< PluginData
PluginDataPtr
typedef boost::shared_ptr
< PluginEnvironment
PluginEnvironmentPtr
typedef boost::shared_ptr
< PluginAtom
PluginAtomPtr
typedef boost::weak_ptr
< PluginAtom
PluginAtomWeakPtr
typedef boost::shared_ptr
< PluginConverter
PluginConverterPtr
typedef boost::shared_ptr
< ModelCallback
ModelCallbackPtr
typedef boost::shared_ptr
< FinalCallback
FinalCallbackPtr
typedef boost::shared_ptr
< PluginRewriter
PluginRewriterPtr

Functions

std::size_t hash_value (const PluginAtom::Query &q)

Detailed Description

Interface that can/should be implemented by a plugin.

Author:
Roman Schindlauer
Peter Schller
Christoph Redl

Definition in file PluginInterface.h.


Define Documentation

Value:
extern "C" DLVHEX_PLUGINEXPORT int PLUGINABIVERSIONFUNCTION() \
    { \
        return DLVHEX_ABI_VERSION_MAJOR*10000+\
        DLVHEX_ABI_VERSION_MINOR*100+\
        DLVHEX_ABI_VERSION_MICRO; \
    }

Definition at line 266 of file PluginInterface.h.

#define PLUGINABIVERSIONFUNCTION   getDlvhex2ABIVersion

Definitions for C ABI interface for dlvhex plugins.

We store the version like boost as an integer. We use the apache APR approach to versioning.

  • see PluginContainer.cpp for version processing,
  • see Trac wiki page LibraryVersions on the general approach and rationale,
  • see TestPlugin.cpp for an example plugin implementation

The following code must be used by a plugin to publish their ABI compatibility:

  • in configure.ac use dlvhex.m4 and the macro
   DLVHEX_DEFINE_VERSION([DLVHEX_ABI],[X.Y.Z])
  • in the library source file use

See the documentation of PluginInterface for how to publish your plugin interface.

Definition at line 259 of file PluginInterface.h.

#define PLUGINABIVERSIONFUNCTIONSTRING   "getDlvhex2ABIVersion"

Definition at line 260 of file PluginInterface.h.

#define PLUGINIMPORTFUNCTION   importPlugin

Definition at line 264 of file PluginInterface.h.

#define PLUGINIMPORTFUNCTIONSTRING   "importPlugin"

Definition at line 265 of file PluginInterface.h.

#define PLUGINVERSIONFUNCTION   getDlvhexPluginVersion

Definition at line 262 of file PluginInterface.h.

#define PLUGINVERSIONFUNCTIONSTRING   "getDlvhexPluginVersion"

Definition at line 263 of file PluginInterface.h.


Typedef Documentation

typedef boost::shared_ptr<FinalCallback> FinalCallbackPtr

Definition at line 1429 of file PluginInterface.h.

typedef boost::shared_ptr<ModelCallback> ModelCallbackPtr

Definition at line 1409 of file PluginInterface.h.

typedef boost::shared_ptr<PluginAtom> PluginAtomPtr

Definition at line 1349 of file PluginInterface.h.

typedef boost::weak_ptr<PluginAtom> PluginAtomWeakPtr

Definition at line 1350 of file PluginInterface.h.

typedef boost::shared_ptr<PluginConverter> PluginConverterPtr

Definition at line 1384 of file PluginInterface.h.

typedef boost::shared_ptr<PluginData> PluginDataPtr

Definition at line 515 of file PluginInterface.h.

typedef boost::shared_ptr<PluginEnvironment> PluginEnvironmentPtr

Definition at line 532 of file PluginInterface.h.

typedef boost::shared_ptr<PluginInterface> PluginInterfacePtr

Definition at line 496 of file PluginInterface.h.

typedef boost::shared_ptr<PluginRewriter> PluginRewriterPtr

Definition at line 1468 of file PluginInterface.h.


Function Documentation