Wrapper Functions

Situations may occur, when an external function need to be wrapped by a BDL function, e.g. if always the same modifications to a parameter must be done before the external function call.

Such a BDL function usually should behave like a real external function, which includes line and file reporting of the caller.

In order to make a wrapper function behave like an external, the function attribute <API_FUNCTION> must be specified.

Example

dll "some.dll"
  "ApiFunc"
    function ApiFunc(in dstring optional);

dclfunc
  function ApiFuncWrapper(theString : string optional)
                                      <API_FUNCTION>
  begin
    if StrIsEmpty(theString) then
      ApiFunc("default string");
    else
      ApiFunc(theString);
    end;
  end T1;

dcltrans
  transaction TMain
  var
    s1 : string;
  begin
    ApiFuncWrapper();
    ApiFuncWrapper("hello");
    ApiFuncWrapper(s1);
  end TMain;

In case of an error during the ApiWrapper() external function call, all reports including the output windows of Silk Performer show the line number of where the wrapper function has been called. If the function attribute <API_FUNCTION> has not been specified, the line number of the external function call would be reported.