TODO list for GNU EDMA
----------------------
[TODO] * Full API review
[TODO]	 - Remove redundant code
[TODO]	 - Improve encapsulation and locality on accessing data structures
[TODO]	 - Rework messy code

[TODO] * Add IngrIDF-like API for implementation modules --> ABI compatibility issues

[TODO] * Add support for include-like primitive in IDF files

[TODO] * Heavy changes in internal data structs:
[SEMI] 	 - Class table and object table will introduce an extra indirection **SEMI-DONE**
[DONE] 	    Indirection to class table 
[DONE] 	     # API to define local and run-time classes 
[TODO] 	     # API to support Metaclasses -> Generic, Class-Factories,... (in study)
[TODO] 	     # Make class table grow dynamically
[DONE]      Changes to make the object table grow dynamically	
[INFO] 	     # These changes will require to revise the whole source tree. Interface shouldn't get changed
[TODO] 	     # We will made unit test for all the system now that we must check the whole thing (**In-PROGESS**)
[TODO] 	- Simulation of execution stack for multithread applications. (Required for safe hotswap)

[TODO] * Generic Hotswap function to run from safe points in code.
[----] 	- Requires:
[DONE] 	   API to create/destroy threads in an ordered way 
[DONE] 	   API to manage Mutex and Condition Variables     
[DONE] 	   API to deal with TLS (Thread Local Storage)
[TODO] 	- Write thread-safe stack-execution code
[TODO] 	- Write simple EVE implementation to provide update scripts without external dependencies
[TODO] 	- Then add mechanisms for doing it automagically

[TODO] * Update primitives to work with namespaces and version numbers (classpath...)

[TODO] * Enable some mechanism to ensure anchor points never matches classnames
[INFO] 	- For example, prepending character '_' on anchor points
[INFO] 	  This also can make more easy some run-time checks

[TODO] * Update the edma_met3s. Now we are using the old one....

[TODO] * Make it thread-safe
[TODO] 	 - Add mutex to object struct to serialize object struct modification in multithread apps
[TODO] 	 - Add semaphore function to serialize process access to shared structs (class table)

[TODO] * Possibility to add new virtual method to running objects. This will change the
[TODO]   method lookup algorithm (test if it worths)

[TODO] * Cleanup code to insert subobjects in class hierarchy. The two available
[TODO] 	 functions are basically the same except for the edma_new_obj call.

[TODO] * Add horizontal class inserting code. It requires modifications in the object struct
[TODO] 	 Modification on object struct is done, just write the code.

[TODO] * Extend object insertion function to allow inserting object after and before a given object

[TODO] * Virtual Properties as renaming strategy on Supeclass Name clashing

[TODO] * Revise method signature expansion -> multimethods

[TODO] * Extend method structure to keep several function pointers (also multimethods)
[TODO] 	 - Multiple method override (stacking)
[TODO] 	 - Multi-dispatch
[TODO] 	 - Thread virtual method override

[TODO] * Add primitive 'edma_obj_commit_suicide' to allow objects kill themselves.
[INFO] 	 - This primitive should set a flag in object struct to free it on method function return

[TODO] * Add thread-contex structure to contain thread dependable information
[TODO] 	 - Per-thread error code
[TODO] 	 - Virtual method overriden on virtual method invokation
[TODO] 	 - Others

[TODO] * Add extra information to anchor points
[TODO] 	 - Required type for type-safe coding
[TODO] 	 - Dummy entries... not used on property/method lookup. For example role-based programming

[TODO] * Add INNER-like method invocation primitive (to study)

[TODO] * Finish singleton classes. We'll need it for interpreter interface (i.e. ANNA)

[TODO] * Add primitive NewObjWithPolyCons to allow to use polymorphic constructors

[TODO] * Add extended object creation primitive to allow to choose class version and namespace

[TODO] * Add support for static methods and properties in core
[TODO] 	 - Add support for static methods with signature.
[TODO] 	 - Add support for static properties ???
[TODO] 	 - Update EDMA tools for managing Static Information

[SEMI] * Use automake/autoconf for system compiling

[TODO] * EDMA distro package (rpm, deb,...)

[TODO] * Extensive testing

[TODO] * Optimizations
[TODO] 	 - Add a cache to objects for long classpaths 
[TODO] 	   (Problem. keep the cache consistent when object hierarchy changes)
[TODO]   - Optimize method/property search (** On testing, Hash Table Implementation **)
[TODO] 	    Use a hash table
[TODO] 	    Use binary search against hash dictionary

[SEMI] * Dynamic Invocation Interface (** SEMI-DONE **)

[TODO] * Allow to install classes selectives
[TODO] 	 - Class instalation using ines_class_register
[TODO] 	 - Predefined class-sets: Minimal, Full, EDNA,...
[TODO] 	 - Find out how to face these features using autotools
 
Testing
-------
[TODO] * Deep testing on updated features:
[TODO] 	 - Clonning primitives
[TODO] 	 - Anchor point overrwrite
[TODO] * Test Changes to GNU/EDMA Subsystem Management API

Components
----------
[TODO] * PIA:
[TODO] 	 Perl->GNU/EDMA: Solve problem with stack corruption. Maybe use multiple return values
[TODO] 	 GNU/EDMA->Perl: to do

[TODO] * ANNA
[TODO] 	 Python->GNU/EDMA: Use Python multiple return values to return output parameters
[TODO] 	 GNU/EDMA->Python: to do

[TODO] * JANE
[TODO] 	 Java->GNU/EDMA: Dynamic invocation interface required
[TODO] 	 GNU/EDMA->Java: Need to test old EDMA 0.3r1 code

[TODO] * MONNA
[TODO] 	 Mono->GNU/EDMA: Complete the interface
[TODO] 	 GNU/EDMA->Mono: Finish property access functions

[TODO] * Other
[TODO] 	 CORBA interface, Bonoboo interface, GNUStep interface

[TODO] * Networking
[TODO] 	 - Classes to deal with socket options
[TODO] 	 - Classes to deal with network address

[TODO] * Data Structures
[TODO] 	 - Basic data structs: lists, trees, vectors...
[TODO] 	 - Generic Iterators
[TODO] 	 - Data struct mutators

[TODO] * IPC Classes
[TODO] 	 - Shared memory, messages, ...
[TODO] 	 - Semaphores
[TODO]   - MONITOR SIU Proxy + CONDITION class for signalling

[TODO] * OLGA Classes
[TODO] 	 - OpenGL widgets and generic GUI facilities

[TODO] * Complete filesystem classes

[TODO] * Extra syscall wrapper classes

[TODO] * Logging

Tools
-----
[TODO] * Update GNOME IDF Wizard to edit:
[TODO] 	 - OnLoad and OnUnload... like born and rip
[TODO] 	 - Preferrer Anchor points editing on inheritance form
[TODO] 	 - Parameter editing
[TODO] 	 - Support for class templates
[TODO] 	 - Support for literate programming
[TODO] 	 - Support for per language type-safe warppers

[TODO] * Update GNOME EDMA Class Browser
[TODO] 	 - Add tree control for grouping classes by NameSpace
[TODO] 	 - Show all method and properties of a class, including the inherited ones
[TODO] 	 - Show class help

[TODO] * Write GTK versions of this tools

[TODO] * Class dependency tool to use in class intallation process

[TODO] * Hot class install tool and translator

[TODO] * Refactoring tool and binding with hotswap updating scripting

SubSystems
----------
[TODO] * EDNA (EDMA Deployment Network Architecture). Needs more specification work
[TODO]   - Rebuild the basic system
[TODO] 	 - Implement the class query/locate/distribution processes
[TODO] 	    Binary
[TODO] 	    Source code and compilation
[TODO] 	    Interpreted/Virtual Machines
[TODO] 	 - Write a generic Class Server for Network deployment


Experimental
------------
[TODO] * Object aliasing
[TODO]   - Change an subobject class without changing object identifier ** DONE **
[TODO] 	    Automagically solved using table object indirection 
[TODO]   - Object temporal redirection **DONE**
[TODO] 	    Automagically solved using table object indirection

[TODO] * Extend EMI with new "exceptions"
[TODO] 	 - "Method and Property not found" handlers
[TODO] 	 - Maybe provide generic fallbacks

[TODO] * SISI (Smart Inheritance System Interface). 
[TODO] 	 - Needs more specification work

Documentation
-------------
[TODO] * Tutorials requires spell checking by a native English-speaker

[TODO] * Finish User reference manual

[TODO] * Write Programmer reference manual

[TODO] * Write base classes documentation

[TODO] * Complete FAQ

[TODO] * Tutorials
[TODO] 	 - Finish Inheritance tutorial
[TODO] 	 - Prototype based programming tutorial
[TODO] 	 - IngrIDF parsers tutorial
[TODO] 	 - SIU Proxies tutorial
[TODO] 	 - EMI Handlers tutorial
[TODO] 	 - Build run-time specialization hierarchies (GENERICS)
[TODO] 	 - Getting Started Series
[TODO] 	    GNU/EDMA for C/C++ Developers (In Progress)
[TODO] 	    GNU/EDMA for Component Developers (In Progress)

[TODO] * Examples
[TODO] 	 - GoF Dessign Patterns Implementation
[TODO] 	 - AOP

