Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • R Rec
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 281
    • Issues 281
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Jira
    • Jira
  • Merge requests 49
    • Merge requests 49
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Issue
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • LHCbLHCb
  • Rec
  • Merge requests
  • !2609

Shrink the ITtrackExtrapolator interface

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Gerhard Raven requested to merge less-virtual-iextrapolator into master Nov 08, 2021
  • Overview 4
  • Commits 1
  • Pipelines 3
  • Changes 3

ITrackExtrapolator requires a large number of functions to be implementend, but then all implementations rely on the TrackExtrapolator 'mix-in' class to implement most functions in terms of a much smaller set of functions.

This commit shrinks the actual interface by promoting the 'mix-in' code into the interface definition, and no longer having those functions as 'pure virtual' -- instead they will forward to the smaller set of actual functions which an implementation must define.

NOTE: this process is only done for those functions for which all implementations defer to the mix-in class. This could be taken further by actually changing some of the implementations, as currently not all are actually consistent in which functions they do or do not implement. But this is is left for a future MR as fixing this would potentially change references, whereas the current set of changes should not.

NOTE NOTE: this is a good example of the fact that the 'user' interface (i.e. which methods can a user of the interface invoke?), and the 'implementation' interface (i.e. what functionality must an implementation provide) are typically not the same thing. See eg. this article from 2001

Edited Nov 08, 2021 by Gerhard Raven
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: less-virtual-iextrapolator