1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<html>
<body>
<h1> fungw - function gateway </h1>
<p>
Fungw is a tiny, portable library written in C (C89) that manages
dynamic function calls across different programming languages.
For this, fungw provides:
<ul>
<li> a simplistic scalar data type abstraction, supporting the most common types
<li> semi-automatic conversion between data types
<li> <a href="model.html"> contexts that can host objects; objects can host named functions </a>
<li> a set of optional language bindings to the most popular <a href="lang.html">scripting languages</a>
</ul>
<p>
The main use of fungw is to provide the host application a framework where
dynamic parts of the code (e.g. plugins) can register their calls, allowing
app-plugin, plugin-app, and plugin-plugin calls.
<p>
The second main use is doing all this in a language-agnostic way: any part
of the code can be implemented in any of the numerous supported scripting
languages (such as awk or lua). The caller of a function doesn't need to know
what language the function is implemented in.
<p>
The main property of fungw is <b>simplicity</b>. The only API between
objects is the <a href="model.html#calls">plain old function call mechanism</a>.
<h1> What fungw can do </h1>
<p>
<ul>
<li> register your named functions
<li> convert data types if the caller and callee don't use (or don't even support)
the same types
<li> embed and run scripts written in various scripting languages using
a simple, unified, function call based interface - for an application
developer this means code for scripting once and be able to use
any of the languages available now or in the future
<li> scripting without having to generate language-dependent wrappers
<li> multiple scripts can be loaded and ran in parallel without interference
</ul>
<h1> What fungw can not do </h1>
<p>
<ul>
<li> it does not offer anything else but function calls - no access to
variables or advanced features of OOP scripts
<li> fungw is not OOP - it manipulates flat list of objects and function calls;
there's no inheritance, friend classes or any other OOP concept
<li> it doesn't load, unload or manage plugins; that should be done by
a different library, e.g. <a href="http://www.repo.hu/projects/puplug"> puplug </a>
</ul>
<h1> Download & contact </h1>
<p>
<ul>
<li> source, latest development version from VCS: svn://svn.repo.hu/fungw/trunk
<li> source, <a href="http://www.repo.hu/projects/fungw/releases/"> release tarballs </a>
<li> contact the author: <a href="http://igor2.repo.hu/contact.html"> IRC or chat </a>
</ul>
<h1> Developer documentation </h1>
<p>
<ul>
<li> fungw <a href="model.html">data model:</a> context, engine, object
<li> <a href="example/"> Examples: </a> example applications and scripts
<li> <a href="user_call_ctx.txt"> User Call Context: </a> making app->script->app round trips reentrant, free of global vars
<li> <a href="custom_types.txt"> Custom types </a> registered by the app or engines
<li> For packagers: <a href="packaging.txt">how to package fungw</a> so the resulting packages are useful for random apps
</ul>
|