text: /*
   *  Created by Phil on 07/01/2011.
   *  Copyright 2011 Two Blue Cubes Ltd. All rights reserved.
   *
   *  Distributed under the Boost Software License, Version 1.0. (See accompanying
   *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
   */
  #ifndef TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
  #define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
  
  #include <string>
  #include "catch_result_type.h"
  #include "catch_common.h"
  
  namespace Catch {
  
      class TestCase;
      class AssertionResult;
      struct AssertionInfo;
      struct SectionInfo;
      struct SectionEndInfo;
      struct MessageInfo;
      class ScopedMessageBuilder;
      struct Counts;
  
      struct IResultCapture {
  
          virtual ~IResultCapture();
  
          virtual void assertionEnded( AssertionResult const& result ) = 0;
          virtual bool sectionStarted(    SectionInfo const& sectionInfo,
                                          Counts& assertions ) = 0;
          virtual void sectionEnded( SectionEndInfo const& endInfo ) = 0;
          virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) = 0;
          virtual void pushScopedMessage( MessageInfo const& message ) = 0;
          virtual void popScopedMessage( MessageInfo const& message ) = 0;
  
          virtual std::string getCurrentTestName() const = 0;
          virtual const AssertionResult* getLastResult() const = 0;
  
          virtual void handleFatalErrorCondition( std::string const& message ) = 0;
      };
  
      IResultCapture& getResultCapture();
  }
  
  #endif // TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
  