dlvhex
2.5.0
|
Implements choice rules. More...
#include <include/dlvhex2/ConditionalLiteralPlugin.h>
Data Structures | |
class | CtxData |
Public Member Functions | |
ConditionalLiteralPlugin () | |
Constructor. | |
virtual | ~ConditionalLiteralPlugin () |
Destructor. | |
virtual void | printUsage (std::ostream &o) const |
Output help message for this plugin. | |
virtual void | processOptions (std::list< const char * > &pluginOptions, ProgramCtx &) |
Processes options for this plugin. | |
virtual std::vector < HexParserModulePtr > | createParserModules (ProgramCtx &) |
Provide parser modules. | |
virtual std::vector < PluginAtomPtr > | createAtoms (ProgramCtx &ctx) const |
Publish external computation sources to dlvhex. | |
virtual void | setupProgramCtx (ProgramCtx &) |
Altering the ProgramCtx permits plugins to do many things, e.g., * installing model and finish callbacks * removing default model (and final) hooks * setting maxint * changing and configuring the solver backend to be used See internal plugins for example usage. |
Implements choice rules.
Definition at line 44 of file ConditionalLiteralPlugin.h.
Constructor.
Definition at line 67 of file ConditionalLiteralPlugin.cpp.
References PluginInterface::setNameVersion().
ConditionalLiteralPlugin::~ConditionalLiteralPlugin | ( | ) | [virtual] |
Destructor.
Definition at line 74 of file ConditionalLiteralPlugin.cpp.
std::vector< PluginAtomPtr > ConditionalLiteralPlugin::createAtoms | ( | ProgramCtx & | ctx | ) | const [virtual] |
Publish external computation sources to dlvhex.
This is the central location where the user's atoms are made public. dlvhex will call this function for all found plugins, which write their atoms in the provided map. This map associates strings with pointers to PluginAtom objects. The strings denote the name of the atom as it should be used in the program.
Override this method to publish your atoms.
Example:
std::vector<PluginAtomPtr> createAtoms(ProgramCtx& ctx) const { std::vector<PluginAtomPtr> ret; PluginAtomPtr newatom1(new MyAtom1); PluginAtomPtr newatom2(new MyAtom2); ret["newatom1"] = newatom1; ret["newatom2"] = newatom2; return ret; }
Here, we assume to have defined atoms MyAtom1 and MyAtom2 derived from PluginAtom. These atom can now be used in a HEX-program with the predicate &newatom1[]() and &newatom2[]().
Reimplemented from PluginInterface.
Definition at line 304 of file ConditionalLiteralPlugin.cpp.
std::vector< HexParserModulePtr > ConditionalLiteralPlugin::createParserModules | ( | ProgramCtx & | ) | [virtual] |
Provide parser modules.
This is the preferred way to extend the input language by supplying dlvhex with parser modules that plug into the HEX grammar and extend the syntax for valid program input.
See the QueryPlugin and the StrongNegationPlugin for example plugins that use this feature.
Reimplemented from PluginInterface.
Definition at line 289 of file ConditionalLiteralPlugin.cpp.
References DBGLOG, ConditionalLiteralPlugin::CtxData::enabled, and ProgramCtx::getPluginData().
void ConditionalLiteralPlugin::printUsage | ( | std::ostream & | o | ) | const [virtual] |
Output help message for this plugin.
Reimplemented from PluginInterface.
Definition at line 80 of file ConditionalLiteralPlugin.cpp.
void ConditionalLiteralPlugin::processOptions | ( | std::list< const char * > & | pluginOptions, |
ProgramCtx & | ctx | ||
) | [virtual] |
Processes options for this plugin.
If you override this method, remove all options your plugin recognizes from pluginOptions. (Do not free the pointers, the const char* directly come from argv.) You can store configuration of your plugin using PluginData and ProgramCtx::getPluginData (see there for more information.)
Reimplemented from PluginInterface.
Definition at line 92 of file ConditionalLiteralPlugin.cpp.
References DBGLOG, ConditionalLiteralPlugin::CtxData::enabled, ProgramCtx::getPluginData(), and WARNING().
void ConditionalLiteralPlugin::setupProgramCtx | ( | ProgramCtx & | ) | [virtual] |
Altering the ProgramCtx permits plugins to do many things, e.g., * installing model and finish callbacks * removing default model (and final) hooks * setting maxint * changing and configuring the solver backend to be used See internal plugins for example usage.
Reimplemented from PluginInterface.
Definition at line 312 of file ConditionalLiteralPlugin.cpp.
References ConditionalLiteralPlugin::CtxData::enabled, ProgramCtx::getPluginData(), and ProgramCtx::registry().