External Library Support

Beta 0.2.2
Superx++ beta 0.2.2 offers the benefit of being able to execute external libraries. This has first been implemented on the Microsoft Windows NT/2000/XP operating systems. The external libraries that are supported are .dll executables.

Benefits of .dll Support
The benefits of using .dlls to extend the capabilities of Superx++ are that you can:
1) Use Visual Basic, Visual C++ or other language .dlls written for Windows to extend Superx++ capabilities
2) Use Win32 API functions that are wrapped in Win32 .dll files
3) Reuse of your own code written in .dll files within Superx++ contexts
4) Expose .dll methods as Superx++ services published on the web

When Superx++ is ported to other platforms, different forms of external library support will be implemented using the same Superx++ statements as those listed below.

External Library Access-Related Superx++ Statements
The following are the Superx++ statements that provide external library support:
- <lib_open>
- <lib_func>
- <lib_close>

<lib_open>
This statement opens the external library for access to its methods. This must happen before invoking the other external library access Superx++ statements.
<lib_open name="{external lib alias}">{.dll path}</lib_open>

{external lib alias} The alias for the external library that will be used to refer to the external library within the Superx++ program.
{.dll path} The path to the executable file for the external library on a mapped drive on the computer.

<lib_func>
This statement invokes a method on the external library.
<lib_func name="{.dll function name}" type="{.dll function return type}"
   lib="{external lib alias}">
   <parm type="{.dll function parm type}" pass="{val/ref}">{parm value}</parm>
   .
   .
   .
</lib_func>

{.dll function name} The name of the method/function on the external library that is being called.
{.dll function return type} The datatype of the value returned by the method/function.
{external lib alias} The alias for the external library that is in the name attribute of the <lib_open> statement.
{.dll function parm type} The datatype of the parameter that is to be passed into the method/function.
{val/ref} The passing convention of the parameter
val means pass by value
ref means pass by reference
{parm value} The value of the parameter that is to be passed into the method/function.

<lib_close>
This statement closes the external library. This must only happen after invoking the <lib_open> statement.
<lib_close lib="{external lib alias}" />

{external lib alias} The alias for the external library that is in the name attribute of the <lib_open> statement.