Three types of plugins are supported by SMath Studio (new types will be available in the future).

1. Low-level expression evaluations (IPluginLowLevelEvaluation interface)

2. Numeric expression evaluations (IPluginMathNumericEvaluation interface)

3. Symbolic expression evaluations (IPluginMathSymbolicEvaluation interface)

Plugins have a higher priority than any built-in behavior, but smaller than any user-defined one (behavior = defined function, operator or operand).


Explanation of the three types of plugins

The graphic below illustrates the relationship between these three types:

Relationship among plugin types

When the user inputs some data for evaluation SMath Studio stores this data within a simple array of primitives (operands, operators, brackets, functions - that's all). There is a type of data to store these primitives - Class Term. Before transferring input data to the Numeric Library (NuLib.dll) or to the Symbolic Library (SyLib.dll) SMath Studio needs to substitute all available variables (commonly - operands) and functions (all the built-in, user-defined or defined in plugins). This is the place for the low-level expression evaluation. Plugins of this level can extend it in the most non-abstracted way. The array of Term elements must be represented in Reverse Polish Notation (RPN) (please be sure, that you understand how it works before creating this kind of plugin). Note, that here you can create the most powerful functions with the smallest CPU & RAM usage, but it is rather hard.

Note, that all the functions that are placed inside plugins delivered in standard Setup (that is, plugins\SpecialFunctions.dll) were created using low-level expression evaluation. Even := operator is also part of this level (but it is built-in to the canvas.dll - not a plugin).

The most abstracted levels of evaluation are: Symbolic expression evaluation and Numeric expression evaluation. They are used depending on the user's need to calculate with symbols or not.


Related Topics

Tutorials for creating plugins
IDEs and programming languages to use for developing plugins
Low-level expression evaluations
Numeric expression evaluations
Symbolic expression evaluations

ScrewTurn Wiki version 2.0.37. Some of the icons created by FamFamFam.