Hi,
During the past weeks, I have made some progress in the development of Tao,
including splitting subindexing operations from the numeric array types and
starting to implement multi-threading supporting, simplifying the interfaces
for extending and embedding Tao, and supporting scripting in non-english
languages. In particular, the last two are almost done.
Now the interfaces for extending and embedding are very simple, and easy to
use, because the interfaces are abstracted as pure virtual class, and all
the internal Tao data types are subclassed from these pure virtual class. So
most of the Tao data objects can be directly passed to and from C++ modules,
and with abstract interfaces these Tao objects can be easily manipulated in
C++ modules. Only two _very_small_ header files taoBase.h and
taoPlugin.hare required to build a loadable C++ module, no need to
link to additional
libraries.
The embedding of Tao is even simpler than extending. The kernel of Tao is
compiled into a dynamic loading library, which are also accessable through
abstract interfaces defined in a header file. It's also true that one can
embedding Tao with only 4 _very_small_ header files _without_ linking to Tao
library! One can have a look into file taoMain.cpp as an instance for
embedding.
For non-english languages, Tao allow users to provide a set of alternate
keywords in any languages as an alternate keyword file ( *.akw ). As a
result, one can write Tao script in any language he/she prefers (I have
tried in Chinese, it works well. And this feature was done in a few hours!).
The only requirement is that the character encoding of the akw file should
be the same as the encoding for the source file.
This file can be provided to the Tao interpreter by option -k, if this
option is not present, a default akw file with the same name as the source
file is searched in the current directory. akw file should include two
columns, for example,
class ClassInChinese
routine RoutineInChinese
...
By providing this file to the interpreter, one can use keyword
"ClassInChinese" instead of "class". However, "class" is always available as
the keyword.
All these features are only available in the CVS version of Tao.
Cheers,
FU Limin