Developing Apama Applications > Developing Correlator Plug-ins > 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 string 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-2015 Software AG, Darmstadt, Germany and/or Software AG USA Inc., Reston, VA, USA, and/or its subsidiaries and/or its affiliates and/or their licensors.
Use, reproduction, transfer, publication or disclosure is prohibited except as specifically provided for in your License Agreement with Software AG.