mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-03 21:49:32 +01:00 
			
		
		
		
	Split imply from TrackedSection class to avoid use of incomplete type
- see #450
This commit is contained in:
		@@ -33,32 +33,15 @@ namespace SectionTracking {
 | 
			
		||||
        
 | 
			
		||||
        RunState runState() const { return m_runState; }
 | 
			
		||||
        
 | 
			
		||||
        TrackedSection* findChild( std::string const& childName ) {
 | 
			
		||||
            TrackedSections::iterator it = m_children.find( childName );
 | 
			
		||||
            return it != m_children.end()
 | 
			
		||||
                ? &it->second
 | 
			
		||||
                : NULL;
 | 
			
		||||
        }
 | 
			
		||||
        TrackedSection* acquireChild( std::string const& childName ) {
 | 
			
		||||
            if( TrackedSection* child = findChild( childName ) )
 | 
			
		||||
                return child;
 | 
			
		||||
            m_children.insert( std::make_pair( childName, TrackedSection( childName, this ) ) );
 | 
			
		||||
            return findChild( childName );
 | 
			
		||||
        }
 | 
			
		||||
        TrackedSection* findChild( std::string const& childName );
 | 
			
		||||
        TrackedSection* acquireChild( std::string const& childName );
 | 
			
		||||
 | 
			
		||||
        void enter() {
 | 
			
		||||
            if( m_runState == NotStarted )
 | 
			
		||||
                m_runState = Executing;
 | 
			
		||||
        }
 | 
			
		||||
        void leave() {
 | 
			
		||||
            for( TrackedSections::const_iterator it = m_children.begin(), itEnd = m_children.end();
 | 
			
		||||
                    it != itEnd;
 | 
			
		||||
                    ++it )
 | 
			
		||||
                if( it->second.runState() != Completed ) {
 | 
			
		||||
                    m_runState = ExecutingChildren;
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            m_runState = Completed;
 | 
			
		||||
        }
 | 
			
		||||
        void leave();
 | 
			
		||||
 | 
			
		||||
        TrackedSection* getParent() {
 | 
			
		||||
            return m_parent;
 | 
			
		||||
        }
 | 
			
		||||
@@ -71,9 +54,31 @@ namespace SectionTracking {
 | 
			
		||||
        RunState m_runState;
 | 
			
		||||
        TrackedSections m_children;
 | 
			
		||||
        TrackedSection* m_parent;        
 | 
			
		||||
        
 | 
			
		||||
    };
 | 
			
		||||
    
 | 
			
		||||
    inline TrackedSection* TrackedSection::findChild( std::string const& childName ) {
 | 
			
		||||
        TrackedSections::iterator it = m_children.find( childName );
 | 
			
		||||
        return it != m_children.end()
 | 
			
		||||
            ? &it->second
 | 
			
		||||
            : NULL;
 | 
			
		||||
    }
 | 
			
		||||
    inline TrackedSection* TrackedSection::acquireChild( std::string const& childName ) {
 | 
			
		||||
        if( TrackedSection* child = findChild( childName ) )
 | 
			
		||||
            return child;
 | 
			
		||||
        m_children.insert( std::make_pair( childName, TrackedSection( childName, this ) ) );
 | 
			
		||||
        return findChild( childName );
 | 
			
		||||
    }
 | 
			
		||||
    inline void TrackedSection::leave() {
 | 
			
		||||
        for( TrackedSections::const_iterator it = m_children.begin(), itEnd = m_children.end();
 | 
			
		||||
                it != itEnd;
 | 
			
		||||
                ++it )
 | 
			
		||||
            if( it->second.runState() != Completed ) {
 | 
			
		||||
                m_runState = ExecutingChildren;
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        m_runState = Completed;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class TestCaseTracker {
 | 
			
		||||
    public:
 | 
			
		||||
        TestCaseTracker( std::string const& testCaseName )
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user