If performance of a scripted plug-in becomes an issue, a compiled plug-in may be used. A compiled plug-in is derived from the same base class as the interpreted plug-ins, and follow the same basic flow. Unlike an interpreter-based plug-in, however, each compiled plug-in is a shared library that contains code that derives from a plug-in interface class. No libraries are required to implement a plug-in, only the publicly available interface file IPlugin.h.
To implement a C++ plug-in, author a class derived from the interface IPlugin:
The only virtual functions that are required to be overridden by the base class are GetLabel and OnRecord. The following query and action objects that are passed to Begin(), OnRecord(), and End() events:
Query/Action Function |
Description |
---|---|
TableInfo |
The TableInfo object provides methods for accessing table properties, and is passed to the Begin and End events |
RecordInfo |
The RecordInfo object supports record queries and can be called in the OnRecord event only. |
RecordAction |
The RecordAction object supports adding records to the destination table with the AddRecord method. |
Once a DLL has been compiled, it is attached to the Results Module through the Option element within the Load element for the Plug-in library. The following section shows a sample Plug-in section of the Library Config section to load plug-ins, the last being a compiled plug-in:
Note that there is no prefix or suffix on the plug-in shared library. This allows platform differences to be factored out, such as extension (.so, .sl, .dll), and prefix (lib).