This is a rewrite of the mapper abstraction.
The goal is to make it is easier to implement different deep copy strategies, including a replicaset.
For this purpose, we defined four abstractions:
mapper: This is the feature to describe a data structure. Header and source code is the same as it was before.
visitor: This is the feature to walk a data structure without altering it, whether it lives in the host or in a device memory.
Among others, this structure is used to compute the size to allocate when deep-copying a data structure, or to compare two data structures, checking that a deepcopy worked.
creator: This is the feature to make a deepcopy in steps. The destination area of allocation and dma engines can be specified at certain steps to optimize resources usage.
deepcopy: This is the base implementation of a deepcopy where the copy is allocated with a single area.
This is a rewrite of the mapper abstraction. The goal is to make it is easier to implement different deep copy strategies, including a replicaset. For this purpose, we defined four abstractions: