version 1.7, 2003/03/23 11:02:25 |
version 1.8, 2003/03/30 10:26:43 |
|
|
MESSAGE TABLE CREATION [target: 0.2.1, done: 100%] |
|
|
|
TABLE-DRIVEN DEFAULT MSG HANDLER [target: 0.2.2, done: 100%] |
::: NEAR FUTURE ::: |
At least for now it should use simple cycle comparing received message id with |
|
method table items one by one. When found, method shalt be executed, if not, |
CLONE [target: 0.2.3, done: 40%] |
default action taken (i.e. "default" method invoked, which then could take |
This should replace current constructor approach. There will be constructor, |
care of implicit delegation et cetera). |
but only as a prototype creation mechanizm, and it will be autogenerated by |
|
copp. It will set up message-handler table for the object and so on. |
|
More types of cloning should be available: shallow copy, deep copy, |
|
stand-alone, etc. This will then affect way objects are coupled - as with |
|
default, method tables are shared - and thus adding (or removing) method at |
|
runtime will affect all such objects. Stand-alone cloning will create new |
|
method table and thus new object group. |
|
|
|
NEW OBJECT STORAGE [target: 0.2.3, done: 80%] |
|
Object is stored as type + message pointer + data pointer + extensions. |
|
Message pointer is called directly (no destroy handling or alike). Data |
|
pointer is self-explantory. The extensions are provided for things like events |
|
or method tables. You can stuff as much things as you like there, but this is |
|
static -- you must know size when object is constructed and it can't be |
|
changed. You might use this for data if you like, but you will have to write |
|
your own constructor for this object (and maybe make other precautions -- |
|
which means this is nothing but hassle). |
|
|
|
NEW MESSAGE SENDING APPARATUS [target: 0.2.3, done: 70%] |
|
No care is taken from the message sending function (co_m, co_m_v), it only |
|
passes the arguments to message handler. This message handler should come from |
|
an extension, which uses the extension area of object to store its |
|
administration (method table or deferred universal message handler). |
|
|
|
NEW OBJECT DELETION METHOD [target: 0.2.3, done: 40%] |
|
Objects will be deleted by simply sending "delete" message with no parameters. |
|
Delete method of an object shalt send "destroy" to itself or defer this action |
|
until object is unused. May take other precautions. Shalt be safe to send from |
|
anywhere (asynchronous thread or method of same object). Destroy retains it |
|
previous meaning - do not call! Also, destroy should now call appropriate |
|
extenstion cleanup function (like co_ev_destroy). |
|
|
|
NEW BLESSING SCHEME [target: 0.2.3, done: 40%] |
|
Each object type has these crucial components: flavour (with it's creation |
|
function) and bless (initialising flavour-specific data and object's data |
|
pointer). The flavour initialisation is provided by it's implementation. |
|
|
|
COPP REWRITE [target: 0.2.3, done: 0%] |
|
The copp preprocessor shalt be rewritten, using sensible framework (like |
|
iotta ;]). Also, it should separate different parts into different modules, |
|
allow selecting features for each run (like python-wrappers-only or |
|
object-support only), support object flavours et cetera. |
|
|
|
::: DISTANT FUTURE ::: |
|
|
MORE INTELLIGENT CO_ATTR [target: 0.2.2, done: 100%] |
|
MORE INTELLIGENT CO_METH_INI [target: 0.2.x, done: 0%] |
MORE INTELLIGENT CO_METH_INI [target: 0.2.x, done: 0%] |
These should not need explicit object name, just get it from last CO_OBJECT or |
These should not need explicit object name, just get it from last CO_OBJECT or |
CO_METH respectively. The CO_METH problem is much harder to solve and also a |
CO_METH respectively. The CO_METH problem is much harder to solve and also a |
Line 17 A method should be available for each ob |
|
Line 58 A method should be available for each ob |
|
with informations from method table of object. By means of copp it should be |
with informations from method table of object. By means of copp it should be |
incorporated in message table of every prototype object. |
incorporated in message table of every prototype object. |
|
|
AUTOMATIC CONSTRUCTOR AND SHALLOW COPY [target: 0.2.3, done: 20%] |
|
#Our copp should generate constructor for each object. The data initialization |
|
#should take place in "bless" method - in a way, that allows to re-send this |
|
#message to object and cause it to reset itself (e.g. after cloning). |
|
UPDATE: The object should provide it's size and so, for automatic |
|
single-constructor and single copy-func approach can be used. Might be of use |
|
when implementing different alloc methods. |
|
|
|
SEPARATE MESSAGE EXCEPTION STACK [target: 0.2.3, done: 0%] |
|
The co_m_v should use separate stack, so cox_push/cox_pop pairs can cross |
|
message boundaries (eg. message returning unpopped value)... |
|
|
|
CLONE [target: 0.2.4, done: 30%] |
|
This should replace current constructor approach. There will be constructor, |
|
but only as a prototype creation mechanizm, and it will be autogenerated by |
|
copp. It will set up message-handler table for the object and so on. But more |
|
types of cloning should be available: shallow copy, deep copy, stand-alone, |
|
etc. This will then affect way objects are coupled - as with default, method |
|
tables are shared - and thus adding (or removing) method at runtime will |
|
affect all such objects. Stand-alone cloning will create new method table and |
|
thus new object group. |
|
|
|
PLUGIN ARCHITECTURE [target: 0.2.5, done: 50%] |
PLUGIN ARCHITECTURE [target: 0.2.5, done: 50%] |
Create consistent framework built on libltdl for loading modules. Each module |
Create consistent framework built on libltdl for loading modules. Each module |
shalt become object in loading process and export its interface this way. |
shalt become object in loading process and export its interface this way. |
Line 46 shalt become object in loading process a |
|
Line 65 shalt become object in loading process a |
|
AUTOMATIC PYTHON BINDINGS [target: 0.2.6, done: 30%] |
AUTOMATIC PYTHON BINDINGS [target: 0.2.6, done: 30%] |
All co objects should be import'able and instantiable from python. Also, their |
All co objects should be import'able and instantiable from python. Also, their |
methods should be accessible through default pythonish interface (eg a.test |
methods should be accessible through default pythonish interface (eg a.test |
("blee") should send message "test" to object "a" with string argument "blee"). |
("blee") should send message "test" to object "a" with string argument |
|
"blee"). And they should be buildable separately from rest of library, so they |
|
don't drag python dependency into all libco-using projects. Like |
|
libco-python.so. |
|
|
SECURITY [target: 0.3.1, done: 0%] |
SECURITY [target: 0.3.1, done: 0%] |
Fix buffer overflows and alike. |
Fix buffer overflows and alike. |
|
|
|
INTO - INTERFACE OBJECT PROTOCOL [target: 0.3.x, done: 0%] |
|
Protocol and support infrastructure for program visualisation independent of |
|
interface. Should use IGLUE modules - interface glue - for each interface |
|
type. Program written with INTO support should support all interfaces for |
|
which IGLUE modules are available. |
|
|
|
DATABASE SUPPORT MODULE [target: 0.3.x, done: 0%] |
|
Database independent inetrface with postgresql as reference platform. |
|
|
CO_MAP ASSOCIATIVE ARRAY [target 0.3.2, done: 0%] |
CO_MAP ASSOCIATIVE ARRAY [target 0.3.2, done: 0%] |
CO_BTREE BINARY TREE IMPL [target: 0.3.5, done: 0%] |
CO_BTREE BINARY TREE IMPL [target: 0.3.5, done: 0%] |
THREAD SUPPORT [target: 0.4.x, done: 0%] |
THREAD SUPPORT [target: 0.4.x, done: 0%] |
|
|
|
::: DONE ::: |
|
|
|
MESSAGE TABLE CREATION [target: 0.2.1, done: 100%] |
|
TABLE-DRIVEN DEFAULT MSG HANDLER [target: 0.2.2, done: 100%] |
|
At least for now it should use simple cycle comparing received message id with |
|
method table items one by one. When found, method shalt be executed, if not, |
|
default action taken (i.e. "default" method invoked, which then could take |
|
care of implicit delegation et cetera). |
|
|
|
MORE INTELLIGENT CO_ATTR [target: 0.2.2, done: 100%] |
|
|
|
SEPARATE MESSAGE EXCEPTION STACK [target: 0.2.3, done: 100%] |
|
The co_m_v should use separate stack, so cox_push/cox_pop pairs can cross |
|
message boundaries (eg. message returning unpopped value)... |