Lumiera  0.pre.03
»edit your freedom«
StackScopeManager< buffSiz > Class Template Reference

#include "lib/diff/tree-diff-application.hpp"

Description

template<size_t buffSiz>
class lib::diff::StackScopeManager< buffSiz >

Typical standard implementation of the ScopeManager.

Using Heap memory for the nested scopes, we create a stack of opaque InPlaceBuffers for each scope, which allows the PlantingHandle mechanism to let the target object corresponding to this scope build its own TreeMutator implementation into this buffer space for this scope.

Definition at line 179 of file tree-diff-application.hpp.

Public Member Functions

virtual void clear ()
 
virtual TreeMutatorcloseScope ()
 
TreeMutatorcurrentScope () const
 
virtual size_t depth () const
 
virtual TreeMutator::Handle openScope ()
 
- Public Member Functions inherited from ScopeManager
virtual ~ScopeManager ()
 this is an interface
 

Private Types

using MutatorBuffer = InPlaceBuffer< TreeMutator, buffSiz >
 
using MutatorStack = std::stack< MutatorBuffer >
 

Private Attributes

MutatorStack scopes_
 Allocate Heap Storage for nested TreeMutator(s)
 

Member Function Documentation

◆ openScope()

virtual TreeMutator::Handle openScope ( )
inlinevirtual
Remarks
picks up treeMutatorSize(...)

Implements ScopeManager.

Definition at line 208 of file tree-diff-application.hpp.

+ Inheritance diagram for StackScopeManager< buffSiz >:
+ Collaboration diagram for StackScopeManager< buffSiz >:

The documentation for this class was generated from the following file: