Apama Documentation : Developing Apama Applications : Developing EPL Plug-ins : EPL Plug-ins in C and C++ Written Prior to 10.0 : Writing a plug-in in C or C++ : Parameter-less plug-in functions
Parameter-less plug-in functions
Occasionally, it is useful to invoke a function or method within a plug-in which requires, and returns, no parameters. This is simply achieved by having the function/method ignore the function/method parameters and defining a function which takes no parameters and returns void in the function table. Examples are given below.
In C++ the method is defined as:
void AP_PLUGIN_CALL Analytic::SilentInitialisation (
  const AP_Context& ctx,
  const AP_TypeList& args,
  AP_Type& rval,
  AP_TypeDiscriminator rtype) {

  // Custom Code Here
  // Ignoring the args, rval and rtype parameters
}
And, in C as:
static void AP_PLUGIN_CALL SilentInitialisation (
  const AP_PluginContext* ctx,
  const AP_PluginTypeList* args,
  AP_PluginType* rval,
  AP_TypeDiscriminator rtype) {

    // Custom Code Here
    // Ignoring the args, rval and rtype parameters
}
Then the function table would appear thus, in C++:
Static AP_Function Functions[1] = {
  {
    "SilentInit", &Analytics:: SilentInitialisation, 0, NULL,
    "void" },
};
And as below in C:
Static AP_Function Functions[1] = {
  { "SilentInit", &SilentInitialisation, 0, NULL, "void" },
};
In EPL, the plug-in function/method is then invoked as:

import "analytics" as a;
action onload() {
  a.SilentInit();
  // Custom Code Here
}
Each call to a plug-in function returns a single value. Occasionally, it is necessary for an operation to return multiple values; there are various techniques that can be used to achieve this:
*Provide multiple functions which are called in turn, each of which returns one of the values.
*Return a chunk expressing the composite value, and provide functions that interrogate the chunk to extract each individual value.
*Return a string that can be parsed as an event that expresses the composite value.
*Enqueue an event that expresses the composite value.
*Pass the function a sequence and modify the elements.
See The chunk type for details of how chunks are used and Asynchronous plug-ins for how to enqueue an event from a plug-in.
Copyright © 2013-2017 Software AG, Darmstadt, Germany. (Innovation Release)

Product LogoContact Support   |   Community   |   Feedback