File: index.html

package info (click to toggle)
fungw 1.2.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,268 kB
  • sloc: ansic: 24,257; makefile: 500; sh: 32; awk: 9; perl: 8; tcl: 7; javascript: 7; ruby: 7; python: 6
file content (68 lines) | stat: -rw-r--r-- 3,135 bytes parent folder | download | duplicates (3)
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-&gt;script-&gt;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>