Boost logo

Boost-Commit :

From: ahd6974-boostorg_at_[hidden]
Date: 2008-01-02 10:31:47


Author: andreas_huber69
Date: 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
New Revision: 42414
URL: http://svn.boost.org/trac/boost/changeset/42414

Log:
- Removed all permanent warning suppressions from library headers and avoided the resulting warnings with other means
- Updated acknowledgments
Text files modified:
   trunk/boost/statechart/detail/rtti_policy.hpp | 9 ---------
   trunk/boost/statechart/detail/state_base.hpp | 9 ---------
   trunk/boost/statechart/event_processor.hpp | 3 +++
   trunk/boost/statechart/fifo_worker.hpp | 2 ++
   trunk/boost/statechart/processor_container.hpp | 3 +++
   trunk/boost/statechart/simple_state.hpp | 3 +++
   trunk/boost/statechart/state_machine.hpp | 31 ++++++++++++++++++++++---------
   trunk/libs/statechart/Statechart.sln | 19 +++++++++++++++++++
   trunk/libs/statechart/doc/acknowledgments.html | 14 ++++++++------
   trunk/libs/statechart/doc/future_and_history.html | 13 +++++++++++--
   trunk/libs/statechart/doc/reference.html | 28 +++++++++++++++++++---------
   trunk/libs/statechart/example/Performance/Performance.cpp | 29 +++++++++++++++++------------
   trunk/libs/statechart/example/PingPong/PingPong.cpp | 3 +++
   trunk/libs/statechart/test/FifoSchedulerTest.cpp | 9 +++++++--
   trunk/libs/statechart/test/TuTest.hpp | 11 ++++++++++-
   15 files changed, 127 insertions(+), 59 deletions(-)

Modified: trunk/boost/statechart/detail/rtti_policy.hpp
==============================================================================
--- trunk/boost/statechart/detail/rtti_policy.hpp (original)
+++ trunk/boost/statechart/detail/rtti_policy.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -16,15 +16,6 @@
 
 
 
-#ifdef BOOST_MSVC
-// We permanently turn off the following level 4 warnings because users will
-// have to do so themselves anyway if we turn them back on
-# pragma warning( disable: 4511 ) // copy constructor could not be generated
-# pragma warning( disable: 4512 ) // assignment operator could not be generated
-#endif
-
-
-
 namespace boost
 {
 namespace statechart

Modified: trunk/boost/statechart/detail/state_base.hpp
==============================================================================
--- trunk/boost/statechart/detail/state_base.hpp (original)
+++ trunk/boost/statechart/detail/state_base.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -34,15 +34,6 @@
 
 
 
-#ifdef BOOST_MSVC
-// We permanently turn off the following level 4 warnings because users will
-// have to do so themselves anyway if we turn them back on
-# pragma warning( disable: 4511 ) // copy constructor could not be generated
-# pragma warning( disable: 4512 ) // assignment operator could not be generated
-#endif
-
-
-
 namespace boost
 {
 namespace statechart

Modified: trunk/boost/statechart/event_processor.hpp
==============================================================================
--- trunk/boost/statechart/event_processor.hpp (original)
+++ trunk/boost/statechart/event_processor.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -70,6 +70,9 @@
     virtual void process_event_impl( const event_base & evt ) = 0;
     virtual void terminate_impl() = 0;
 
+ // avoids C4512 (assignment operator could not be generated)
+ event_processor & operator=( const event_processor & );
+
     Scheduler & myScheduler_;
     const processor_handle myHandle_;
 };

Modified: trunk/boost/statechart/fifo_worker.hpp
==============================================================================
--- trunk/boost/statechart/fifo_worker.hpp (original)
+++ trunk/boost/statechart/fifo_worker.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -26,6 +26,8 @@
 # pragma warning( disable: 4244 )
      // "... needs to have dll-interface to be used by clients of class ..."
 # pragma warning( disable: 4251 )
+ // "... assignment operator could not be generated"
+# pragma warning( disable: 4512 )
      // "Function call with parameters that may be unsafe" in
      // condition_variable.hpp
 # pragma warning( disable: 4996 )

Modified: trunk/boost/statechart/processor_container.hpp
==============================================================================
--- trunk/boost/statechart/processor_container.hpp (original)
+++ trunk/boost/statechart/processor_container.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -70,6 +70,9 @@
       private:
       #endif
 
+ // avoids C4512 (assignment operator could not be generated)
+ processor_context & operator=( const processor_context & );
+
         Scheduler & scheduler_;
         const processor_handle handle_;
 

Modified: trunk/boost/statechart/simple_state.hpp
==============================================================================
--- trunk/boost/statechart/simple_state.hpp (original)
+++ trunk/boost/statechart/simple_state.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -128,6 +128,9 @@
     }
 
   private:
+ // avoids C4512 (assignment operator could not be generated)
+ transition_function & operator=( const transition_function & );
+
     void ( TransitionContext::*pTransitionAction_ )( const Event & );
     const Event & evt_;
 };

Modified: trunk/boost/statechart/state_machine.hpp
==============================================================================
--- trunk/boost/statechart/state_machine.hpp (original)
+++ trunk/boost/statechart/state_machine.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -57,15 +57,6 @@
 
 
 
-#ifdef BOOST_MSVC
-// We permanently turn off the following level 4 warnings because users will
-// have to do so themselves anyway if we turn them back on
-# pragma warning( disable: 4511 ) // copy constructor could not be generated
-# pragma warning( disable: 4512 ) // assignment op could not be generated
-#endif
-
-
-
 namespace boost
 {
 namespace statechart
@@ -98,6 +89,9 @@
 
   private:
     //////////////////////////////////////////////////////////////////////////
+ // avoids C4512 (assignment operator could not be generated)
+ send_function & operator=( const send_function & );
+
     StateBaseType & toState_;
     const EventBaseType & evt_;
     IdType eventType_;
@@ -220,6 +214,9 @@
     {
     }
 
+ // avoids C4512 (assignment operator could not be generated)
+ history_key & operator=( const history_key & );
+
     const typename RttiPolicy::id_type historyContextType_;
     const orthogonal_position_type historizedOrthogonalRegion_;
 };
@@ -720,6 +717,10 @@
 
       private:
         //////////////////////////////////////////////////////////////////////
+ // avoids C4512 (assignment operator could not be generated)
+ initial_construct_function & operator=(
+ const initial_construct_function & );
+
         state_machine & machine_;
     };
     friend class initial_construct_function;
@@ -739,6 +740,9 @@
 
       private:
         //////////////////////////////////////////////////////////////////////
+ // avoids C4512 (assignment operator could not be generated)
+ terminate_function & operator=( const terminate_function & );
+
         state_machine & machine_;
     };
     friend class terminate_function;
@@ -814,6 +818,10 @@
 
       private:
         //////////////////////////////////////////////////////////////////////
+ // avoids C4512 (assignment operator could not be generated)
+ exception_event_handler & operator=(
+ const exception_event_handler & );
+
         state_machine & machine_;
         state_base_type * pCurrentState_;
     };
@@ -822,6 +830,7 @@
     class terminator
     {
       public:
+ //////////////////////////////////////////////////////////////////////
         terminator( state_machine & machine ) :
           machine_( machine ), dismissed_( false ) {}
         ~terminator()
@@ -831,6 +840,10 @@
         void dismiss() { dismissed_ = true; }
 
       private:
+ //////////////////////////////////////////////////////////////////////
+ // avoids C4512 (assignment operator could not be generated)
+ terminator & operator=( const terminator & );
+
         state_machine & machine_;
         bool dismissed_;
     };

Modified: trunk/libs/statechart/Statechart.sln
==============================================================================
--- trunk/libs/statechart/Statechart.sln (original)
+++ trunk/libs/statechart/Statechart.sln 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -78,6 +78,22 @@
                 test\Jamfile.v2 = test\Jamfile.v2
         EndProjectSection
 EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{FF998410-FD7E-4B0E-8754-20003E19F51D}"
+ ProjectSection(SolutionItems) = preProject
+ doc\acknowledgments.html = doc\acknowledgments.html
+ doc\configuration.html = doc\configuration.html
+ doc\contact.html = doc\contact.html
+ doc\definitions.html = doc\definitions.html
+ doc\faq.html = doc\faq.html
+ doc\future_and_history.html = doc\future_and_history.html
+ doc\index.html = doc\index.html
+ doc\performance.html = doc\performance.html
+ doc\rationale.html = doc\rationale.html
+ doc\reference.html = doc\reference.html
+ doc\tutorial.html = doc\tutorial.html
+ doc\uml_mapping.html = doc\uml_mapping.html
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -306,4 +322,7 @@
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE
         EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {FF998410-FD7E-4B0E-8754-20003E19F51D} = {3D7ED412-11AE-4AE7-8258-0FF6CF8BD11C}
+ EndGlobalSection
 EndGlobal

Modified: trunk/libs/statechart/doc/acknowledgments.html
==============================================================================
--- trunk/libs/statechart/doc/acknowledgments.html (original)
+++ trunk/libs/statechart/doc/acknowledgments.html 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -84,12 +84,14 @@
 
   <p>Thanks for feedback and/or encouragement go to:</p>
 
- <p>Bardur Arantsson, Robert Bell, Bohdan, Wayne Chao, Topher Cooper, Peter
- Dimov, Reece Dunn, John Fuller, Jeff Garland, Eugene Gladyshev, David A.
- Greene, Douglas Gregor, Gustavo Guerra, Aleksey Gurtovoy, Iain K. Hanson,
- David B. Held, J&uuml;rgen Hunold, Oliver Kowalke, Simon Meiklejohn, Johan
- Nilsson, Matthieu Paindavoine, Chris Russell, Rob Stewart, Kwee Heong Tan,
- Marcin Tustin, Vincent N. Virgilio, Gang Wang and Scott Woods.</p>
+ <p>Bardur Arantsson, Robert Bell, Bohdan, Wayne Chao, Topher Cooper,
+ Philippe David, Peter Dimov, Reece Dunn, John Fuller, Jeff Garland, Eugene
+ Gladyshev, David A. Greene, Douglas Gregor, Gustavo Guerra, Aleksey
+ Gurtovoy, Federico J. Fern&aacute;ndez, Iain K. Hanson, David B. Held,
+ J&uuml;rgen Hunold, Oliver Kowalke, Simon Meiklejohn, Jiang Miao, Johan
+ Nilsson, Matthieu Paindavoine, Chris Paulse, Yuval Ronen, Chris Russell,
+ Rob Stewart, Kwee Heong Tan, Marcin Tustin, Vincent N. Virgilio, Gang Wang,
+ Steven Watanabe and Scott Woods.</p>
   <hr>
 
   <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=

Modified: trunk/libs/statechart/doc/future_and_history.html
==============================================================================
--- trunk/libs/statechart/doc/future_and_history.html (original)
+++ trunk/libs/statechart/doc/future_and_history.html 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -139,12 +139,21 @@
 
   <p>(<font color="#FF0000">red</font> = points raised during formal
   review)</p>
+ <p>Unreleased (commited to the SVN trunk)</p>
+ <ul>
+ <li>Removed all permanent warning suppressions from library headers
+ and avoided the resulting warnings with other means (suggested by
+ Steven Watanabe; thanks to Peter Dimov and Yuval Ronen for insight
+ into when C4511 & C4512 are issued)</li>
+ </ul>
 
   <p>1.35.0</p>
 
   <ul>
- <li>Added placement new overload to <code>event&lt;&gt;</code></li>
- <li>Made <code>event&lt;&gt;</code> copy-assignable</li>
+ <li>Added placement new overload to <code>event&lt;&gt;</code> (due to
+ feedback from Federico J. Fern&aacute;ndez)</li>
+ <li>Made <code>event&lt;&gt;</code> copy-assignable (Federico J.
+ Fern&aacute;ndez)</li>
   </ul>
 
   <p>1.34.0</p>

Modified: trunk/libs/statechart/doc/reference.html
==============================================================================
--- trunk/libs/statechart/doc/reference.html (original)
+++ trunk/libs/statechart/doc/reference.html 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -2524,9 +2524,11 @@
 
   <p><b>Requires</b>: If called from a constructor of a direct or indirect
   subtype then the most-derived type must directly or indirectly derive from
- the <code>state</code> class template<b><br>
- Returns</b>: A reference to the outermost context, which is always the
- state machine this state belongs to</p>
+ the <code>state</code> class template. If called from a destructor of a
+ direct or indirect subtype then the <code>state_machine<></code> subclass
+ portion must still exist<br>
+ <b>Returns</b>: A reference to the outermost context, which is always the
+ state machine this state belongs to<br></p>
   <pre>
 const outermost_context_type &amp; <a name="outermost_contextconst" id=
 "outermost_contextconst">outermost_context() const</a>;
@@ -2534,8 +2536,10 @@
 
   <p><b>Requires</b>: If called from a constructor of a direct or indirect
   subtype then the most-derived type must directly or indirectly derive from
- the <code>state</code> class template<b><br>
- Returns</b>: A reference to the const outermost context, which is always
+ the <code>state</code> class template. If called from a destructor of a
+ direct or indirect subtype then the <code>state_machine<></code> subclass
+ portion must still exist<br>
+ <b>Returns</b>: A reference to the const outermost context, which is always
   the state machine this state belongs to</p>
   <pre>
 template&lt; class OtherContext &gt;
@@ -2544,8 +2548,11 @@
 
   <p><b>Requires</b>: If called from a constructor of a direct or indirect
   subtype then the most-derived type must directly or indirectly derive from
- the <code>state</code> class template<b><br>
- Returns</b>: A reference to a direct or indirect context</p>
+ the <code>state</code> class template. If called from a destructor of a
+ direct or indirect subtype with a <code>state_machine<></code> subtype as
+ argument then the <code>state_machine<></code> subclass portion must still
+ exist<br>
+ <b>Returns</b>: A reference to a direct or indirect context</p>
   <pre>
 template&lt; class OtherContext &gt;
 const OtherContext &amp; <a name="contextconst" id=
@@ -2554,8 +2561,11 @@
 
   <p><b>Requires</b>: If called from a constructor of a direct or indirect
   subtype then the most-derived type must directly or indirectly derive from
- the <code>state</code> class template<b><br>
- Returns</b>: A reference to a const direct or indirect context</p>
+ the <code>state</code> class template. If called from a destructor of a
+ direct or indirect subtype with a <code>state_machine<></code> subtype as
+ argument then the <code>state_machine<></code> subclass portion must still
+ exist<br>
+ <b>Returns</b>: A reference to a const direct or indirect context</p>
   <pre>
 template&lt; class Target &gt;
 Target <a name="simple_state::state_cast" id=

Modified: trunk/libs/statechart/example/Performance/Performance.cpp
==============================================================================
--- trunk/libs/statechart/example/Performance/Performance.cpp (original)
+++ trunk/libs/statechart/example/Performance/Performance.cpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -443,19 +443,24 @@
 template< class NoOfBits >
 struct PerfResultBackInserter
 {
- PerfResultBackInserter( PerfResultList & perfResultList ) :
- perfResultList_( perfResultList )
- {
- }
-
- template< class FirstTransitionBit >
- void operator()( const FirstTransitionBit & )
- {
- perfResultList_.push_back(
- PerformanceTester< NoOfBits, FirstTransitionBit >::Test() );
- }
+ public:
+ PerfResultBackInserter( PerfResultList & perfResultList ) :
+ perfResultList_( perfResultList )
+ {
+ }
+
+ template< class FirstTransitionBit >
+ void operator()( const FirstTransitionBit & )
+ {
+ perfResultList_.push_back(
+ PerformanceTester< NoOfBits, FirstTransitionBit >::Test() );
+ }
+
+ private:
+ // avoids C4512 (assignment operator could not be generated)
+ PerfResultBackInserter & operator=( const PerfResultBackInserter & );
 
- PerfResultList & perfResultList_;
+ PerfResultList & perfResultList_;
 };
 
 template< class NoOfBits >

Modified: trunk/libs/statechart/example/PingPong/PingPong.cpp
==============================================================================
--- trunk/libs/statechart/example/PingPong/PingPong.cpp (original)
+++ trunk/libs/statechart/example/PingPong/PingPong.cpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -213,6 +213,9 @@
       return terminate();
     }
 
+ // avoids C4512 (assignment operator could not be generated)
+ Waiting & operator=( const Waiting & );
+
     unsigned int noOfReturns_;
     const boost::intrusive_ptr< BallReturned > pBallReturned_;
 };

Modified: trunk/libs/statechart/test/FifoSchedulerTest.cpp
==============================================================================
--- trunk/libs/statechart/test/FifoSchedulerTest.cpp (original)
+++ trunk/libs/statechart/test/FifoSchedulerTest.cpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -31,8 +31,13 @@
 
 struct EvCheckCtorArgs : sc::event< EvCheckCtorArgs >
 {
- EvCheckCtorArgs( int expectedArgs ) : expectedArgs_( expectedArgs ) {}
- const int expectedArgs_;
+ public:
+ EvCheckCtorArgs( int expectedArgs ) : expectedArgs_( expectedArgs ) {}
+ const int expectedArgs_;
+
+ private:
+ // avoids C4512 (assignment operator could not be generated)
+ EvCheckCtorArgs & operator=( const EvCheckCtorArgs & );
 };
 
 struct EvTerminate : sc::event< EvTerminate > {};

Modified: trunk/libs/statechart/test/TuTest.hpp
==============================================================================
--- trunk/libs/statechart/test/TuTest.hpp (original)
+++ trunk/libs/statechart/test/TuTest.hpp 2008-01-02 10:31:45 EST (Wed, 02 Jan 2008)
@@ -31,7 +31,13 @@
 
 namespace sc = boost::statechart;
 
-
+#ifdef BOOST_MSVC
+# pragma warning( push )
+ // class X needs to have dll-interface to be used by clients of class Y
+# pragma warning( disable: 4251 )
+ // non dll-interface class X used as base for dll-interface class
+# pragma warning( disable: 4275 )
+#endif
 
 struct BOOST_STATECHART_DECL EvX : sc::event< EvX > {};
 struct BOOST_STATECHART_DECL EvY : sc::event< EvY > {};
@@ -43,6 +49,9 @@
   void unconsumed_event( const sc::event_base & );
 };
 
+#ifdef BOOST_MSVC
+# pragma warning( pop )
+#endif
 
 
 #endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk