The full tape interface of CoDiPack is broken down into several smaller interfaces. This has the advantages that
A disadvantage is that functionality is spread over more files, but the advantages should outweigh this.
The four basic CoDiPack tapes codi::JacobianLinearTape, codi::JacobianReuseTape, codi::PrimalValueLinearTape and codi::PrimalValueReuseTape implement the codi::FullTapeInterface. This interface consists of all interfaces defined in codi/tapes/interfaces and defines all functionality that is required for a tape implementation in order to work with all helper structures of CoDiPack.
An implementation of the full tape interface requires significant effort for a new tape development. It is most of the time enough to just implement a subset of the interfaces for a working tape implementation. For reverse tapes the minimum required functionality is defined in the codi::ReverseTapeInterface. A development tutorial on how to implement a simple reverse tape with the functionality available in CoDiPack is provided in Example tape implementation with CoDiPack.
Here is the list of all interfaces currently defined in CoDiPack.
For a detailed explanation of the functionality, see the respective interface documentation.