[Proj] C++ coding practices w.r.t object ownership

Martin Desruisseaux martin.desruisseaux at geomatys.com
Tue May 29 08:01:41 EST 2018


Le 29/05/2018 à 14:28, Even Rouault a écrit :

> Another main reason is that the UML modelling from which this is
> derived from has probably be done with Java in mind as an
> implementation target. So shared pointers are the closest tool we have
> to emulate Java garbage collection.
>
Actually the design is a little bit more abstract. Normally (unless we
did a mistake in the model), there is no requirement to use a garbage
collector or not; the choice is up to implementer. ISO 19111 allows
implementations without garbage collector by allowing some pointers to
be null, for breaking cycles. For example, on a conceptual point of view
Conversion.source/targetCRS should never be null. But in practice ISO
19111 nevertheless declares those associations as optional for
implementers who want to avoid cycles between Conversion and ProjectedCRS.

So the choice for PROJ may be:

  * Avoid cycles as allowed by ISO 19111, at the cost of some
    inconveniences (e.g. usages of Conversion objects may require more
    contextual information).
  * More convenient Conversion objects, at the cost of cyclic references.

ProjectedCRS ⇋ Conversion is the main potential cycle I'm aware of.
There may be another one in the new classes related to point motions or
vertical transformations, but I'm not sure (I'm not yet familiar enough
with that new part).

    Martin


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/proj/attachments/20180529/fc3e171c/attachment-0001.htm 


More information about the Proj mailing list