Difference between revisions of "Uno/Binary/Spec/Cascaded Mapping"

From Apache OpenOffice Wiki
< Uno‎ | Binary
Jump to: navigation, search
(moved from udk.openoffice.org)
 
m (Updated state.)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
author[[User:Kr|Kr]] <br>
+
Type: Specification State: Finished  Availability: URE 1.3
version: {{REVISIONID}} <br>
+
state:  final          <br>
+
created: 08/08/2005    <br>
+
type:    specification  <br>
+
  
== Binary UNO ==
+
==Feature==
=== Cascaded Mapping ===
+
[[Uno/Spec/Cascaded Mapping|Cascaded Mapping]] for [[Uno/Binary|Binary Uno]].
  
; Feature
+
==Dependencies==
: This feature extends the mapping search algorithm in a generic way, that it always finds a mapping between any two particular purpose environments, necessarily falling back to the generic UNO environment for mediation in case no specialized mappings can be found.
+
* [[Uno/Binary/Spec/Environment Descriptor]]
: For example:
+
* [[Uno/Spec/Cascaded Mapping]].
: <code>uno::Mapping("gcc3:thread", "gcc3")</code>
+
: gets mediated via the "uno_uno_thread" purpose bridge:
+
: => Mapping("gcc3:thread" -> "uno:thread" -> "uno" -> "gcc3")
+
  
; Rationale : The introduction of purpose environments allows, to have environments of the same type (e.g. "gcc3") but with different purposes. The introduction of cascaded mappings allows to map between environments of different purposes, by using the UNO runtimes purpose mapping mechanism.
 
  
; API: None.
+
[[Category:Draft]]
 
+
[[Category:Spec]]
; Compatibility Issues: None.
+
[[Category:Uno]]
 
+
[[Category:Uno:Binary]]
; Dependencies : Purpose Environments
+
 
+
; Changes
+
: The mapping function checks, if any of the passed in environments is a purpose environment. If so, the purpose environment mapping function is called.
+
 
+
: Mapping algorithm:
+
:# directly map, in all cases with the same purpose: "uno:mutex" -> "gcc3:mutex" => "uno:mutex" -gcc3_uno-> "gcc3:mutex"
+
:# mediate through a purpose in case it is asked for a mapping between different purposes: "uno:mutex" -mutex_uno_uno-> "uno", the purpose here is "mutex_uno_uno"
+
:# mediate through the "uno" environment, if asked for a mapping from one purpose environment to another purpose environment: "uno:mutex" -> "uno:thread" => "uno:mutex" -mutex_uno_uno-> "uno" -thread_uno_uno-> "uno:thread"
+
:# recursively apply -4- in case a multi purpose has been specified: "gcc3:mutex:debug" -> "gcc3:thread" => "gcc3:mutex:debug" -gcc3_uno-> "uno:mutex:debug" -debug_uno_uno-> "uno:mutex" -mutex_uno_uno-> "uno" -thread_uno_uno-> "uno:thread" -gcc3_uno-> "gcc3:thread"
+
:# map through the nearest "uno:<purpose>" environment: "gcc3:debug:mutex" <-> "gcc3:debug:thread" => "gcc3:debug:mutex" -gcc3_uno-> "uno:debug:mutex" -mutex_uno_uno-> "uno:debug" -thread_uno_uno-> "uno:debug:thread" -gcc3_uno-> "gcc3:debug:thread"
+
:# shortcut if possible, no is mediation necessary, should directly map through purpose: "uno:debug:thread" -> "uno:debug" => "uno:debug:thread" -thread_uno_uno-> "uno:debug"
+
: The mapping algorithm does not know any particular purpose. It is just leverages the current purpose API.
+

Latest revision as of 11:49, 22 May 2007

Type: Specification State: Finished Availability: URE 1.3

Feature

Cascaded Mapping for Binary Uno.

Dependencies

Personal tools