External function is an object of D2000 system, that allows to extend the standard set of functions that are comprised in the mathematical apparatus. The External function object represents an exported function in a dynamically linked library (file). When properly implemented, they allow to substitute (in some cases also simplify) system extensions implemented by the interfaces D2000 ObjApi or D2000 KomAPI.
Creation of an External function consists two steps:
- Implementation of a function within a dynamically linked library,
- Definition of an object of External function type.
External functions for the D2000 system can be written in C ++ language and the D2ExtFunc library must be used for their implementation. Also included is an example of the external function library (utils/d2extfunc/sample directory in the D2000 installation directory), which also provides the following example of an external function implementation.
Errors and exceptions handling
Performing external functions takes place in the same environment as running the ESL scripts that call them. If the implementation of an external function ends with a catchable C ++ exception, this exception is caught and promoted as a runtime error to the ESL. However, some C ++ errors (e. g., NULL dereference, division 0) do not generate catchable exceptions and end up with the fallout of the library and the process used by the library (Event handler), so it is important to care thoroughly of handling errors when implementing external functions.