gecko-dev/java/xpcom/old/TODO

93 lines
2.1 KiB
Plaintext

TODO
====
(By no means complete ...)
Configuration
-------------
-- *GET XPCTest WORKING*. For some reason, the JDK 1.2 JVM on Solaris
won't load libxpcom.so correctly, even if it's on LD_LIBRARY_PATH. I
have yet to confirm whether this is a problem on Linux or NT.
[Done 13 Aug 1999]
-- Make Java compilation work correctly on Unix/Linux.
-- Better integration with Mozilla makefile/autoconf system.
-- Move XPCOM startup code to test programs.
-- Integrate into Java Plugin and test.
-- File and function renaming, to prevent conflicts and increase modularity.
Registration and Activation
---------------------------
-- Insure JNI libraries load and unload, even within JNI plugin
-- Derive proxy class from IID, and vice-versa
-- Generate static proxies (using genproxy)
-- Generate and load "on-the-fly" bytecode for proxy classes.
Marshalling
-----------
-- Verify nsID parameters are marshalled correctly.
-- Unwrap proxies used as "in" parameters.
-- Wrap "out" XPCOM objects in correct wrapper class. [dep: Proxy Generation]
-- Build C++ stubs for Java-implemented XPCOM objects. [big task?]
-- [Future] Allow mapping from native concrete type to Java types
-- [Future] Efficient handling of attributes and 0- or 1-arg methods.
-- [Future] Reflection API (if Java's is insufficient)
NSRESULTs
---------
-- Throw exceptions for error codes
-- Design and implement "success code mechanism", for single-threaded case
-- Store success codes per thread, and retrieve for current threads.
API
---
-- Write proxy for ns[I]ComponentManager, by hand. (For performance,
and because of the overloaded methods and lack of XPT.)
-- Write proxy for ns[I]ServiceManager, similar to above.
-- Throw exceptions for unknown or missing proxy classes (and other errors).
-- Implement XPCOM identity rules
-- Document (including Javadoc)
Memory Management
-----------------
-- Insure that temporary heap memory (esp. strings and nsIDs) is
recycled.
-- Insure reference-counting rules aren't violated.
-- Cache previously allocated wrapper objects, to prevent unnecessary
allocation.
-- Thread-safe object release