Imported Upstream version 2.81
[platform/upstream/libbullet.git] / UnitTests / cppunit / src / cppunit / ProtectorChain.h
1 #ifndef CPPUNIT_PROTECTORCHAIN_H
2 #define CPPUNIT_PROTECTORCHAIN_H
3
4 #include <cppunit/Protector.h>
5 #include <cppunit/portability/CppUnitDeque.h>
6
7 #if CPPUNIT_NEED_DLL_DECL
8 #pragma warning( push )
9 #pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
10 #endif
11
12
13 CPPUNIT_NS_BEGIN
14
15 /*! \brief Protector chain (Implementation).
16  * Implementation detail.
17  * \internal Protector that protect a Functor using a chain of nested Protector.
18  */
19 class CPPUNIT_API ProtectorChain : public Protector
20 {
21 public:
22   ~ProtectorChain();
23
24   void push( Protector *protector );
25
26   void pop();
27
28   int count() const;
29
30   bool protect( const Functor &functor,
31                 const ProtectorContext &context );
32
33 private:
34   class ProtectFunctor;
35
36 private:
37   typedef CppUnitDeque<Protector *> Protectors;
38   Protectors m_protectors;
39
40   typedef CppUnitDeque<Functor *> Functors;
41 };
42
43
44 CPPUNIT_NS_END
45
46 #if CPPUNIT_NEED_DLL_DECL
47 #pragma warning( pop )
48 #endif
49
50 #endif // CPPUNIT_PROTECTORCHAIN_H
51