Uno/To-Dos
From Apache OpenOffice Wiki
Contents
ToDos and potential ToDos
General
Move documentation from http://udk.openoffice.org into the Uno wiki, in particular:
Comment | Source | Target | State |
An Article about bridges. | udk/common/man/bridge.html | Uno/Article/About Bridges | open |
binary Uno type library specification | udk/common/man/binspec_typelibrary.html | Uno/Binary/Spec/Type Library | open |
binary Uno IDL types specification | udk/common/man/binspec.html | Uno/Binary/Spec/IDL Types | open |
Java Uno IDL type mapping | udk/java/man/types.html | Uno/Java/Spec/IDL Types | open |
General information and links to other Java Uno related topics. Needs to be reworked and split. | udk/java/man/index.html | Uno/Java | open |
The 'C' language binding. This is more or less dead. | udk/cpp/man/spec/cuno_spec.html | Uno/C | open |
Remote Unos standard protocol specification. | udk/common/man/spec/urp.html | Uno/Remote/Spec/Uno Remote Protocol | open |
Binary Uno library unloading article. | udk/common/man/spec/library_unloading.html | Library Unloading | open |
Binary Uno article about bootstrapping. | udk/common/man/concept/default_bootstrapping.html | Uno/Article/Binary/Bootstrapping Uno | open |
Clear Separation between C and C++ and Core Components
- Move C++ stuff from cppu to cppuhelper.
- Move cppuhelper bootstrap stuff to Binary UNO and let it provide a 'C' interface. Implement current cppuhelper API as wrappers.
- Move cppuhelper/shlib.cxx into the library loader. Let the library loader provide a C/C++ API.
- Move cppuhelper/component_context.cxx into into its own core component.
- Rename cpputools to something like "unotools" (unfortunately this name is already in use).
(Module) Naming Clean up
- Rename module cppu to reflect that it is implementing Binary Uno.
- Rename module cppuhelper to reflect that it is implementing C++ Uno.
- Move the io module from the util project into the into project.
- Move the jut module into the UDK project.
- Rename the Binary-UNO to JNI-UNO bridge: java_uno -> jni_uno. Because that is what the bridge is about.
- Rename the Binary-UNO to remote-UNO bridge: urp_uno -> remote_uno. Because that is what the bridge is about (actually, there is no URP object to program against, at least not in Binary-UNO).
- Remove the "lib" prefixes under UNIX from the Binary-UNO bridges.
Simplification and Performance
- Remove the Binary Uno ABI (struct uno_Interface) and friends, replace it with one of the platform C++ ABIs.
- Support direct access of Uno types in IDL, without includes.
- Let the *makers retrieve type information from the type providers and not from rdb files.
- Harmonize initial object access for Remote Uno and components -> it is actually the same. E.g.
"uno:library;[gcc3];<implementation name>"
may be used to access an instance factory, or any other object of interest. - Leverage Purpose Bridges for global variables, e.g. the "ServiceManager" or the "ComponentContext". Use this for bootstrapping as well. E.g.
Reference<XComponentContext> cppu::getComponentContext();
always returns the current component context. It is usable in components, libraries or applications and may even bootstrap UNO, if no context is available yet. - Remove all exception specifications.
- Consolidate the Binary Uno structs "uno_Environment" and "uno_ExtEnvironment".
- Remove
#ifndef EXCEPTIONS_OFF
macros, actually C++ Uno is not usable without exceptions anyway. - Is SAL_CALL really necessary for "inline" stuff? If not, remove it.
- Unify command line interface for all Uno tools.
- Convert the ProxyFactory service into a library and deprecate it.
Features
- Introduce process lifecycle based on living threads.
- Have Uno package support for the URE.
- Move the UCB into the URE.
- Move the configr mgr. into the URE.
- Uno alien type support e.g. for Java (e.g. a type description provider implemented in Java based on Java reflection).
- A Uno-SOAP Bridge.
- Allow (remote) proxy detection, needed for remote detection and optimizations.
- Zones.
- Write
man
pages. - Various IDE integrations.
- Allow connection parameters in environment descriptions for remote environments, e.g.
"remote[urp,socket=<port>,host=<name>]"
.