From: Alexander K. <kw...@ah...> - 2001-06-07 09:03:05
|
Andreas Leitner wrote: > foo ... main cluster of GOBO-sub-library "foo" > foo/bar ... "bar" is a (interface-)subcluster > foo/foobar ..."foobar" is another (interface-)subcluster > foo/impl ... "impl" contains all bridge-implementations > foo/impl/win32 ... contains the win32 implementation > foo/impl/win32/bar ... implements the "bar" interfaces for win32 > foo/impl/win32/foobar ... implements the "foobar" interfaces for win32 > foo/impl/unix/ ... contains the unix implementation > foo/impl/unix/bar ... implements the "bar" interfaces for unix > foo/impl/unix/foobar ... implements the "foobar" interfaces for unix > For several reasons (some implementations might be mutaly exclusive or > depend on external references you cannot satisfy) it must be easily > possible to select an arbitray number of implementations. This means > that if the above foo example is in a XACE file called foo.xace, you may > not want mount the whole cluster, as this would automatically mount all > implementations. > > This is easily _not_ possible with the above cluster structure for > "foo". It is possible with the original cluster structure of eXML > thought. Here is the same library "foo" with the eXML (or Vision2 - to > be exact) cluster structure: > > foo ... main cluster of GOBO-sub-library "foo" > foo/interfaces ... all interfaces subclusters go in here > foo/interfaces/bar ... bar is an interface-subcluster > foo/interface/foobar ... foobar is an interface-subcluster > foo/impl ... all implementations go in here > foo/impl/win32 ... the win32 impl > foo/impl/win32/foo .. the "foo" impl for win32 > foo/impl/win32/foobar .. the "foobar" impl for win32 > foo/impl/unix/foo ... the "foo" impl for unix > foo/impl/unix/foobar ... the "foobar" impl for unix > > Here the user mounts (remember a mount, also mounts the sublcusters) > > foo/interfaces > foo/impl/${PLATFORM} Like Eric I see an additional level "interfaces" as artificial. In fact, if the cluster description file is designed correctly, every implementation cluster will refer to the corresponding interface cluster, so foo/impl/win32/foo mounts foo/foo foo/impl/win32/foobar mounts foo/foobar foo/impl/unix/foo mounts foo/foo foo/impl/unix/foobar mounts foo/foobar So, it would be enough for the user to mount only one cluster, namely foo/impl/${PLATFORM} All the interfaces will be mounted automatically. I would also move PLATFORM/COMPILER-dependent directories down the hierarchy: foo/impl/foo/win32 foo/impl/foo/unix foo/impl/foobar/win32 foo/impl/foobar/unix and hide the platform dependencies in the descriptions of the clusters foo/impl/foo and foo/impl/foobar so that the client should not worry about implementation issues at all. The user just mounts foo/impl or more selectively foo/impl/foo Regards, Alexander Kogtenkov Object Tools, Moscow |