Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-21382

Separate GenericMap's visitor API from its implementation

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: To Do
    • Resolution: Unresolved
    • Fix Version/s: None
    • Component/s: afw
    • Labels:
      None

      Description

      The GenericMap.apply methods take a user-defined callable ("visitor") that must have a method template or explicit method overload for each type listed in the protected GenericMap.StorableType. This adds a burden to users, because changes to StorableType may break all visitors. The burden is particularly onerous because boost::variant cannot handle implicitly convertible types well, so, for example, a visitor must have separate float and double overloads.

      Reduce the coupling between apply's visitors and StorableType so that a user can, for example, provide a single integer and a single floating-point method.

      It may be possible to do this by providing an adapter that fully enumerates StorableType's types, but delegates to a (possibly less comprehensive) user-defined visitor using ordinary function dispatch. Note that const visitors are allowed to accept arguments by any combination of value and reference to const, and that mutating vistors may, in addition, take arguments by reference to non-const. The adapter must be flexible enough to behave naturally for any combination of these three cases.

        Attachments

          Issue Links

            Activity

            No builds found.
            krzys Krzysztof Findeisen created issue -
            krzys Krzysztof Findeisen made changes -
            Field Original Value New Value
            Epic Link DM-19979 [ 307530 ]
            krzys Krzysztof Findeisen made changes -
            Link This issue relates to DM-19582 [ DM-19582 ]
            krzys Krzysztof Findeisen made changes -
            Link This issue relates to DM-21268 [ DM-21268 ]
            krzys Krzysztof Findeisen made changes -
            Summary Separate GenericMap's visitor from its implementation Separate GenericMap's visitor API from its implementation
            krzys Krzysztof Findeisen made changes -
            Rank Ranked higher
            swinbank John Swinbank made changes -
            Epic Link DM-19979 [ 307530 ] DM-21441 [ 423048 ]
            swinbank John Swinbank made changes -
            Epic Link DM-21441 [ 423048 ] DM-22484 [ 427311 ]
            swinbank John Swinbank made changes -
            Epic Link DM-22484 [ 427311 ] DM-24339 [ 433026 ]
            swinbank John Swinbank made changes -
            Epic Link DM-24339 [ 433026 ] DM-25145 [ 435263 ]
            swinbank John Swinbank made changes -
            Epic Link DM-25145 [ 435263 ] DM-26803 [ 439755 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-26803 [ 439755 ] DM-27911 [ 442604 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-27911 [ 442604 ] DM-29209 [ 459201 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-29209 [ 459201 ] DM-30431 [ 504819 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-30431 [ 504819 ] DM-30514 [ 510188 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-30514 [ 510188 ] DM-30515 [ 510190 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-30515 [ 510190 ] DM-30516 [ 510196 ]
            sullivan Ian Sullivan made changes -
            Link This issue relates to DM-34626 [ DM-34626 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-30516 [ 510196 ] DM-34930 [ 1598461 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-34930 [ 1598461 ] DM-36008 [ 1997424 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-36008 [ 1997424 ] DM-36522 [ 2254239 ]
            sullivan Ian Sullivan made changes -
            Epic Link DM-36522 [ 2254239 ] DM-36523 [ 2254240 ]

              People

              Assignee:
              krzys Krzysztof Findeisen
              Reporter:
              krzys Krzysztof Findeisen
              Watchers:
              Jim Bosch, Krzysztof Findeisen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:

                  Jenkins

                  No builds found.