LibreOffice Module sc (master)  1
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ScRecursionHelper Class Reference

#include <recursionhelper.hxx>

Collaboration diagram for ScRecursionHelper:
[legend]

Public Member Functions

 ScRecursionHelper ()
 
sal_uInt16 GetRecursionCount () const
 
void IncRecursionCount ()
 
void DecRecursionCount ()
 
sal_uInt16 GetDepComputeLevel () const
 
void IncDepComputeLevel ()
 
void DecDepComputeLevel ()
 
bool IsInRecursionReturn () const
 A pure recursion return, no iteration. More...
 
void SetInRecursionReturn (bool b)
 
bool IsDoingRecursion () const
 
void SetDoingRecursion (bool b)
 
void Insert (ScFormulaCell *p, bool bOldRunning, const ScFormulaResult &rRes)
 
bool IsInIterationReturn () const
 
void SetInIterationReturn (bool b)
 
bool IsDoingIteration () const
 
sal_uInt16 GetIteration () const
 
bool & GetConvergingReference ()
 
void StartIteration ()
 
void ResumeIteration ()
 
void IncIteration ()
 
void EndIteration ()
 
const ScFormulaRecursionList::iterator & GetLastIterationStart () const
 
ScFormulaRecursionList::iterator GetIterationStart ()
 
ScFormulaRecursionList::iterator GetIterationEnd ()
 
bool IsInReturn () const
 Any return, recursion or iteration, iteration is always coupled with recursion. More...
 
const ScFormulaRecursionListGetList () const
 
ScFormulaRecursionListGetList ()
 
ScRecursionInIterationStackGetRecursionInIterationStack ()
 
void Clear ()
 
bool PushFormulaGroup (ScFormulaCell *pCell)
 Detects a simple cycle involving formula-groups and singleton formula-cells. More...
 
void PopFormulaGroup ()
 
bool AnyCycleMemberInDependencyEvalMode (ScFormulaCell *pCell)
 
bool AnyParentFGInCycle ()
 
void SetFormulaGroupDepEvalMode (bool bSet)
 
void AbortDependencyComputation ()
 
bool IsAbortingDependencyComputation () const
 
void AddTemporaryGroupCell (ScFormulaCell *cell)
 
void CleanTemporaryGroupCells ()
 
void SetFormulaGroupSet (o3tl::sorted_vector< ScFormulaCellGroup * > *pSet)
 
bool HasFormulaGroupSet ()
 
bool CheckFGIndependence (ScFormulaCellGroup *pFG)
 
void SetGroupsIndependent (bool bSet)
 
bool AreGroupsIndependent ()
 

Private Types

typedef ::std::stack< ScFormulaCell * > ScRecursionInIterationStack
 

Private Member Functions

void Init ()
 
void ResetIteration ()
 

Private Attributes

ScFormulaRecursionList aRecursionFormulas
 
ScFormulaRecursionList::iterator aInsertPos
 
ScFormulaRecursionList::iterator aLastIterationStart
 
ScRecursionInIterationStack aRecursionInIterationStack
 
std::vector< ScFormulaCell * > aFGList
 
std::vector< bool > aInDependencyEvalMode
 
sal_uInt16 nRecursionCount
 
sal_uInt16 nIteration
 
sal_uInt16 nDependencyComputationLevel
 
bool bInRecursionReturn
 
bool bDoingRecursion
 
bool bInIterationReturn
 
bool bConverging
 
bool bGroupsIndependent
 
bool bAbortingDependencyComputation
 
std::vector< ScFormulaCell * > aTemporaryGroupCells
 
o3tl::sorted_vector< ScFormulaCellGroup * > * pFGSet
 

Detailed Description

Definition at line 46 of file recursionhelper.hxx.

Member Typedef Documentation

Definition at line 48 of file recursionhelper.hxx.

Constructor & Destructor Documentation

ScRecursionHelper::ScRecursionHelper ( )

Definition at line 31 of file recursionhelper.cxx.

References bGroupsIndependent, Init(), and pFGSet.

Member Function Documentation

void ScRecursionHelper::AbortDependencyComputation ( )
void ScRecursionHelper::AddTemporaryGroupCell ( ScFormulaCell cell)

Definition at line 216 of file recursionhelper.cxx.

References aTemporaryGroupCells.

bool ScRecursionHelper::AnyCycleMemberInDependencyEvalMode ( ScFormulaCell pCell)
bool ScRecursionHelper::AnyParentFGInCycle ( )

Definition at line 178 of file recursionhelper.cxx.

References aFGList.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::AreGroupsIndependent ( )
inline
bool ScRecursionHelper::CheckFGIndependence ( ScFormulaCellGroup pFG)
void ScRecursionHelper::CleanTemporaryGroupCells ( )

Definition at line 221 of file recursionhelper.cxx.

References aTemporaryGroupCells, and GetRecursionCount().

void ScRecursionHelper::Clear ( )

Definition at line 95 of file recursionhelper.cxx.

References aRecursionFormulas, aRecursionInIterationStack, and Init().

Referenced by ScFormulaCell::Interpret().

void ScRecursionHelper::DecDepComputeLevel ( )
void ScRecursionHelper::DecRecursionCount ( )
inline

Definition at line 78 of file recursionhelper.hxx.

References nRecursionCount.

void ScRecursionHelper::EndIteration ( )
bool& ScRecursionHelper::GetConvergingReference ( )
inline

Definition at line 95 of file recursionhelper.hxx.

References bConverging.

Referenced by ScFormulaCell::Interpret().

sal_uInt16 ScRecursionHelper::GetDepComputeLevel ( ) const
inline

Definition at line 79 of file recursionhelper.hxx.

References nDependencyComputationLevel.

Referenced by ScFormulaCell::Interpret().

sal_uInt16 ScRecursionHelper::GetIteration ( ) const
inline

Definition at line 94 of file recursionhelper.hxx.

References nIteration.

Referenced by ScFormulaCell::Interpret(), and ScFormulaCell::InterpretTail().

ScFormulaRecursionList::iterator ScRecursionHelper::GetIterationEnd ( )

Definition at line 90 of file recursionhelper.cxx.

References aRecursionFormulas.

Referenced by EndIteration(), Init(), ScFormulaCell::Interpret(), and ResetIteration().

ScFormulaRecursionList::iterator ScRecursionHelper::GetIterationStart ( )
const ScFormulaRecursionList::iterator& ScRecursionHelper::GetLastIterationStart ( ) const
inline

Definition at line 101 of file recursionhelper.hxx.

References aLastIterationStart.

Referenced by ScFormulaCell::Interpret().

const ScFormulaRecursionList& ScRecursionHelper::GetList ( ) const
inline

Definition at line 107 of file recursionhelper.hxx.

References aRecursionFormulas.

Referenced by ScFormulaCell::Interpret().

ScFormulaRecursionList& ScRecursionHelper::GetList ( )
inline

Definition at line 108 of file recursionhelper.hxx.

References aRecursionFormulas.

sal_uInt16 ScRecursionHelper::GetRecursionCount ( ) const
inline

Definition at line 76 of file recursionhelper.hxx.

References nRecursionCount.

Referenced by CleanTemporaryGroupCells(), and ScFormulaCell::Interpret().

ScRecursionInIterationStack& ScRecursionHelper::GetRecursionInIterationStack ( )
inline

Definition at line 109 of file recursionhelper.hxx.

References aRecursionInIterationStack.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::HasFormulaGroupSet ( )
inline
void ScRecursionHelper::IncDepComputeLevel ( )
void ScRecursionHelper::IncIteration ( )

Definition at line 74 of file recursionhelper.cxx.

References nIteration.

Referenced by ScFormulaCell::Interpret().

void ScRecursionHelper::IncRecursionCount ( )
inline

Definition at line 77 of file recursionhelper.hxx.

References nRecursionCount.

void ScRecursionHelper::Init ( void  )
private
void ScRecursionHelper::Insert ( ScFormulaCell p,
bool  bOldRunning,
const ScFormulaResult rRes 
)

Definition at line 46 of file recursionhelper.cxx.

References aInsertPos, and aRecursionFormulas.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::IsAbortingDependencyComputation ( ) const
inline
bool ScRecursionHelper::IsDoingIteration ( ) const
inline

Definition at line 93 of file recursionhelper.hxx.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::IsDoingRecursion ( ) const
inline

Definition at line 86 of file recursionhelper.hxx.

References bDoingRecursion.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::IsInIterationReturn ( ) const
inline

Definition at line 91 of file recursionhelper.hxx.

References bInIterationReturn.

Referenced by ScFormulaCell::Interpret().

bool ScRecursionHelper::IsInRecursionReturn ( ) const
inline

A pure recursion return, no iteration.

Definition at line 83 of file recursionhelper.hxx.

References bInIterationReturn.

Referenced by ScFormulaCell::CheckComputeDependencies(), and ScFormulaCell::Interpret().

bool ScRecursionHelper::IsInReturn ( ) const
inline

Any return, recursion or iteration, iteration is always coupled with recursion.

Definition at line 106 of file recursionhelper.hxx.

References bInRecursionReturn.

Referenced by ScFormulaCell::Interpret(), and ScFormulaCell::InterpretTail().

void ScRecursionHelper::PopFormulaGroup ( )
bool ScRecursionHelper::PushFormulaGroup ( ScFormulaCell pCell)

Detects a simple cycle involving formula-groups and singleton formula-cells.

Definition at line 114 of file recursionhelper.cxx.

References aFGList, aInDependencyEvalMode, assert(), ScFormulaCell::GetSeenInPath(), and ScFormulaCell::SetSeenInPath().

Referenced by ScFormulaGroupCycleCheckGuard::ScFormulaGroupCycleCheckGuard().

void ScRecursionHelper::ResetIteration ( )
private

Definition at line 24 of file recursionhelper.cxx.

References aLastIterationStart, bConverging, GetIterationEnd(), and nIteration.

Referenced by EndIteration(), and Init().

void ScRecursionHelper::ResumeIteration ( )
void ScRecursionHelper::SetDoingRecursion ( bool  b)
inline

Definition at line 87 of file recursionhelper.hxx.

Referenced by ScFormulaCell::Interpret().

void ScRecursionHelper::SetFormulaGroupDepEvalMode ( bool  bSet)
void ScRecursionHelper::SetFormulaGroupSet ( o3tl::sorted_vector< ScFormulaCellGroup * > *  pSet)
inline
void ScRecursionHelper::SetGroupsIndependent ( bool  bSet)
inline
void ScRecursionHelper::SetInIterationReturn ( bool  b)
void ScRecursionHelper::SetInRecursionReturn ( bool  b)
void ScRecursionHelper::StartIteration ( )

Member Data Documentation

std::vector< ScFormulaCell* > ScRecursionHelper::aFGList
private
std::vector< bool > ScRecursionHelper::aInDependencyEvalMode
private
ScFormulaRecursionList::iterator ScRecursionHelper::aInsertPos
private

Definition at line 50 of file recursionhelper.hxx.

Referenced by Init(), Insert(), and SetInRecursionReturn().

ScFormulaRecursionList::iterator ScRecursionHelper::aLastIterationStart
private
ScFormulaRecursionList ScRecursionHelper::aRecursionFormulas
private
ScRecursionInIterationStack ScRecursionHelper::aRecursionInIterationStack
private

Definition at line 52 of file recursionhelper.hxx.

Referenced by Clear(), and GetRecursionInIterationStack().

std::vector< ScFormulaCell* > ScRecursionHelper::aTemporaryGroupCells
private

Definition at line 67 of file recursionhelper.hxx.

Referenced by AddTemporaryGroupCell(), and CleanTemporaryGroupCells().

bool ScRecursionHelper::bAbortingDependencyComputation
private
bool ScRecursionHelper::bConverging
private

Definition at line 64 of file recursionhelper.hxx.

Referenced by GetConvergingReference(), ResetIteration(), and StartIteration().

bool ScRecursionHelper::bDoingRecursion
private

Definition at line 62 of file recursionhelper.hxx.

Referenced by Init(), and IsDoingRecursion().

bool ScRecursionHelper::bGroupsIndependent
private
bool ScRecursionHelper::bInIterationReturn
private
bool ScRecursionHelper::bInRecursionReturn
private

Definition at line 61 of file recursionhelper.hxx.

Referenced by Init(), IsInReturn(), and SetInRecursionReturn().

sal_uInt16 ScRecursionHelper::nDependencyComputationLevel
private
sal_uInt16 ScRecursionHelper::nIteration
private

Definition at line 58 of file recursionhelper.hxx.

Referenced by GetIteration(), IncIteration(), ResetIteration(), and StartIteration().

sal_uInt16 ScRecursionHelper::nRecursionCount
private

Definition at line 57 of file recursionhelper.hxx.

Referenced by DecRecursionCount(), GetRecursionCount(), IncRecursionCount(), and Init().

o3tl::sorted_vector< ScFormulaCellGroup* >* ScRecursionHelper::pFGSet
private

Definition at line 68 of file recursionhelper.hxx.

Referenced by CheckFGIndependence(), and ScRecursionHelper().


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