LAMA
/home/brandes/workspace/LAMA/src/lama/NoSyncToken.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_NOSYNCTOKEN_HPP_
00034 #define LAMA_NOSYNCTOKEN_HPP_
00035 
00036 // for dll_import
00037 #include <lama/config.hpp>
00038 
00039 // base classes
00040 #include <lama/SyncToken.hpp>
00041 
00042 namespace lama
00043 {
00044 
00045 class LAMA_DLL_IMPORTEXPORT NoSyncToken : public SyncToken
00046 {
00047 public:
00048 
00049     inline NoSyncToken();
00050 
00051     inline virtual ~NoSyncToken();
00052 
00053     inline virtual void wait();
00054 
00055     inline virtual bool probe() const;
00056 
00057     inline void writeAt( std::ostream& stream ) const;
00058 };
00059 
00060 NoSyncToken::NoSyncToken()
00061 {
00062     LAMA_LOG_DEBUG( logger, "NoSyncToken constructed" );
00063 }
00064 
00065 NoSyncToken::~NoSyncToken()
00066 {
00067     LAMA_LOG_DEBUG( logger, "~NoSyncToken, synchronized = " << isSynchronized() );
00068 
00069     if ( !isSynchronized() ) 
00070     {
00071         setSynchronized();  // Important: accesses should be freed
00072     }
00073 }
00074 
00075 void NoSyncToken::writeAt( std::ostream& stream ) const
00076 {
00077     stream << "NoSyncToken( synchronized = " << isSynchronized() << " )";
00078 }
00079 
00080 void NoSyncToken::wait()
00081 {
00082     if ( !isSynchronized() )
00083     {
00084         setSynchronized();  // Important: accesses should be freed
00085     }
00086 }
00087 
00088 bool NoSyncToken::probe() const
00089 {
00090     return true;   // always ready
00091 }
00092 
00093 }
00094 
00095 #endif // LAMA_NOSYNCTOKEN_HPP_