|
From: <ric...@us...> - 2011-09-20 23:19:21
|
Revision: 1111
http://loki-lib.svn.sourceforge.net/loki-lib/?rev=1111&view=rev
Author: rich_sposato
Date: 2011-09-20 23:19:14 +0000 (Tue, 20 Sep 2011)
Log Message:
-----------
Back to revision 1109. Accidentally checked in more files than I intended.
Revision Links:
--------------
http://loki-lib.svn.sourceforge.net/loki-lib/?rev=1109&view=rev
Modified Paths:
--------------
trunk/Loki.workspace
trunk/include/loki/StrongPtr.h
trunk/include/loki/ThreadLocal.h
trunk/include/loki/flex/flex_string_shell.h
trunk/src/StrongPtr.cpp
trunk/test/LevelMutex/LevelMutex.cbp
trunk/test/LevelMutex/MultiThreadTests.cpp
trunk/test/LevelMutex/ThreadPool.cpp
trunk/test/LevelMutex/main.cpp
trunk/test/LockingPtr/LockingPtr.cbp
trunk/test/SmartPtr/SmartPtr.cbp
trunk/test/SmartPtr/base.h
trunk/test/SmartPtr/main.cpp
trunk/test/SmartPtr/strong.cpp
trunk/test/ThreadLocal/ThreadLocal.cbp
trunk/test/ThreadLocal/main.cpp
Modified: trunk/Loki.workspace
===================================================================
--- trunk/Loki.workspace 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/Loki.workspace 2011-09-20 23:19:14 UTC (rev 1111)
@@ -2,46 +2,46 @@
<CodeBlocks_workspace_file>
<Workspace title="Workspace">
<Project filename="Loki.cbp" active="1" />
- <Project filename="test/CachedFactory/CachedFactory.cbp">
+ <Project filename="test\CachedFactory\CachedFactory.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/Checker/Checker.cbp" />
- <Project filename="test/CheckReturn/CheckReturn.cbp" />
- <Project filename="test/DeletableSingleton/DeletableSingleton.cbp">
+ <Project filename="test\Checker\Checker.cbp" />
+ <Project filename="test\CheckReturn\CheckReturn.cbp" />
+ <Project filename="test\DeletableSingleton\DeletableSingleton.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/Factory/Factory.cbp" />
- <Project filename="test/flex_string/flex_string.cbp" />
- <Project filename="test/Function/Function.cbp" />
- <Project filename="test/LevelMutex/LevelMutex.cbp">
+ <Project filename="test\Factory\Factory.cbp" />
+ <Project filename="test\flex_string\flex_string.cbp" />
+ <Project filename="test\Function\Function.cbp" />
+ <Project filename="test\LevelMutex\LevelMutex.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/LockingPtr/LockingPtr.cbp" />
- <Project filename="test/Longevity/Longevity.cbp" />
- <Project filename="test/OrderedStatic/OrderedStatic.cbp">
+ <Project filename="test\LockingPtr\LockingPtr.cbp" />
+ <Project filename="test\Longevity\Longevity.cbp" />
+ <Project filename="test\OrderedStatic\OrderedStatic.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/Pimpl/Pimpl.cbp" />
- <Project filename="test/Register/Register.cbp" />
- <Project filename="test/RegressionTest/RegressionTest.cbp">
+ <Project filename="test\Pimpl\Pimpl.cbp" />
+ <Project filename="test\Register\Register.cbp" />
+ <Project filename="test\RegressionTest\RegressionTest.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/SafeFormat/SafeFormat.cbp">
+ <Project filename="test\SafeFormat\SafeFormat.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/ScopeGuard/ScopeGuard.cbp" />
- <Project filename="test/Singleton/Singleton.cbp">
+ <Project filename="test\ScopeGuard\ScopeGuard.cbp" />
+ <Project filename="test\Singleton\Singleton.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/SmallObj/SmallObj.cbp">
+ <Project filename="test\SmallObj\SmallObj.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/SmallObj/DefaultAlloc.cbp" />
- <Project filename="test/SmartPtr/SmartPtr.cbp">
+ <Project filename="test\SmallObj\DefaultAlloc.cbp" />
+ <Project filename="test\SmartPtr\SmartPtr.cbp">
<Depends filename="Loki.cbp" />
</Project>
- <Project filename="test/Visitor/Visitor.cbp" />
- <Project filename="test/SafeBits/SafeBits.cbp" />
- <Project filename="test/ThreadLocal/ThreadLocal.cbp" />
+ <Project filename="test\Visitor\Visitor.cbp" />
+ <Project filename="test\SafeBits\SafeBits.cbp" />
+ <Project filename="test\ThreadLocal\ThreadLocal.cbp" />
</Workspace>
</CodeBlocks_workspace_file>
Modified: trunk/include/loki/StrongPtr.h
===================================================================
--- trunk/include/loki/StrongPtr.h 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/include/loki/StrongPtr.h 2011-09-20 23:19:14 UTC (rev 1111)
@@ -85,10 +85,7 @@
/// If you write your own policy, you must implement these 3 functions:
/// -# void static Delete( const P * p )
/// -# static P * Default( void )
-/// -# Default constructor.
-/// -# Copy constructor.
-/// -# Templated copy constructor.
-/// -# void Swap( YourDeletePolicy & )
+/// -# void Swap( YourResetPolicy & )
///
/// \par ResetPolicy
/// A reset policy tells the ReleaseAll and ResetAll functions whether they
@@ -238,7 +235,46 @@
inline void Swap( DeleteSingle & ) {}
};
+namespace Private
+{
+
////////////////////////////////////////////////////////////////////////////////
+/// \class DeleteArrayBase
+///
+/// \ingroup StrongPointerDeleteGroup
+/// Base class used only by the DeleteArray policy class. This stores the
+/// number of elements in an array of shared objects.
+////////////////////////////////////////////////////////////////////////////////
+
+class DeleteArrayBase
+{
+public:
+
+ inline size_t GetArrayCount( void ) const { return m_itemCount; }
+
+protected:
+
+ DeleteArrayBase( void ) : m_itemCount( 0 ) {}
+
+ explicit DeleteArrayBase( size_t itemCount ) : m_itemCount( itemCount ) {}
+
+ DeleteArrayBase( const DeleteArrayBase & that ) : m_itemCount( that.m_itemCount ) {}
+
+ void Swap( DeleteArrayBase & rhs );
+
+ void OnInit( const void * p ) const;
+
+ void OnCheckRange( size_t index ) const;
+
+private:
+
+ size_t m_itemCount;
+
+};
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
/// \class DeleteArray
///
/// \ingroup StrongPointerDeleteGroup
@@ -2032,27 +2068,19 @@
return * GetPointer();
}
- /** operator[] returns a reference to an modifiable object. If the index is greater than or
- equal to the number of elements, the function will throw a std::out_of_range exception.
- This only works with DeleteArray policy. Any other policy will cause a compiler error.
- */
ReferenceType operator [] ( size_t index )
{
+ KP::OnDereference( GetPointer() );
+ DP::OnCheckRange( index );
PointerType p = GetPointer();
- KP::OnDereference( p );
- DP::OnCheckRange( index );
return p[ index ];
}
- /** operator[] returns a reference to a const object. If the index is greater than or
- equal to the number of elements, the function will throw a std::out_of_range exception.
- This only works with DeleteArray policy. Any other policy will cause a compiler error.
- */
ConstReferenceType operator [] ( size_t index ) const
{
+ KP::OnDereference( GetPointer() );
+ DP::OnCheckRange( index );
ConstPointerType p = GetPointer();
- KP::OnDereference( p );
- DP::OnCheckRange( index );
return p[ index ];
}
Modified: trunk/include/loki/ThreadLocal.h
===================================================================
--- trunk/include/loki/ThreadLocal.h 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/include/loki/ThreadLocal.h 2011-09-20 23:19:14 UTC (rev 1111)
@@ -28,29 +28,21 @@
// The __APPLE__ macro does not refer to a compiler, but to the Apple OSX operating system.
#if defined( __APPLE__ )
#warning "GCC for Apple does not allow thread_local storage, so you can not use some parts of Loki."
- #undef LOKI_THINKS_COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
+ #undef COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
#elif defined( __CYGWIN__ )
#if ( __GNUC__ <= 3 )
#warning "Older versions of GCC for Cygwin do not allow thread_local storage, so you can not use some parts of Loki."
- #undef LOKI_THINKS_COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
+ #undef COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
#endif
#elif ( __GNUC__ == 4 ) // GNU versions other than Cygwin.
- #if ( __GNUC_MINOR__ < 4 )
- #warning "GCC versions before 4.4 implements thread_local storage incorrectly, so you can not use some parts of Loki."
- #undef LOKI_THINKS_COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
- #else
- #warning "Versions 4.4 through 4.6 of GCC implemented thread_local storage for some platforms, but not others. Run ThreadLocal test project."
+ #if ( __GNUC_MINOR__ == 4 )
+ #warning "GCC version 4.4 implements thread_local storage incorrectly, so you can not use some parts of Loki."
+ #undef COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
#endif
#endif
-
-#elif defined( _MSC_VER )
- #if ( _MSC_VER < 1300 )
- #warning "Only Visual Studio versions 7.0 and after support thread local storage properly, so you can not use some parts of Loki."
- #undef LOKI_THINKS_COMPILER_ALLOWS_THREAD_LOCAL_STORAGE
- #endif
-#endif
+#endif
#if defined( LOKI_THINKS_COMPILER_ALLOWS_THREAD_LOCAL_STORAGE ) && !defined( LOKI_THREAD_LOCAL )
@@ -65,7 +57,11 @@
you can't use some parts of Loki.
*/
#if defined( _MSC_VER )
- #define LOKI_THREAD_LOCAL __declspec( thread )
+ #if ( _MSC_VER >= 1300 )
+ #define LOKI_THREAD_LOCAL __declspec( thread )
+ #else
+ #error "Only Visual Studio versions 7.0 and after supported."
+ #endif
#elif ( __GNUC__ )
#define LOKI_THREAD_LOCAL __thread
Modified: trunk/include/loki/flex/flex_string_shell.h
===================================================================
--- trunk/include/loki/flex/flex_string_shell.h 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/include/loki/flex/flex_string_shell.h 2011-09-20 23:19:14 UTC (rev 1111)
@@ -1339,17 +1339,17 @@
typename flex_string<E, T, A, S>::value_type delim)
{
size_t nread = 0;
- typename std::basic_istream<typename flex_string<E, T, A, S>::value_type,
+ typename basic_istream<typename flex_string<E, T, A, S>::value_type,
typename flex_string<E, T, A, S>::traits_type>::sentry sentry(is, true);
if (sentry) {
- ::std::basic_streambuf<typename flex_string<E, T, A, S>::value_type,
+ basic_streambuf<typename flex_string<E, T, A, S>::value_type,
typename flex_string<E, T, A, S>::traits_type>* buf = is.rdbuf();
str.clear();
while (nread < str.max_size()) {
int c1 = buf->sbumpc();
if (flex_string<E, T, A, S>::traits_type::eq_int_type(c1, flex_string<E, T, A, S>::traits_type::eof())) {
- is.setstate(::std::ios_base::eofbit);
+ is.setstate(ios_base::eofbit);
break;
}
else {
@@ -1363,7 +1363,7 @@
}
}
if (nread == 0 || nread >= str.max_size())
- is.setstate(::std::ios_base::failbit);
+ is.setstate(ios_base::failbit);
return is;
}
Modified: trunk/src/StrongPtr.cpp
===================================================================
--- trunk/src/StrongPtr.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/src/StrongPtr.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -15,6 +15,9 @@
#include <loki/StrongPtr.h>
+#include <stdexcept>
+#include <string>
+
#include <memory.h>
#ifdef DO_EXTRA_LOKI_TESTS
#include <cassert>
@@ -38,6 +41,45 @@
// ----------------------------------------------------------------------------
+void DeleteArrayBase::Swap( DeleteArrayBase & rhs )
+{
+ assert( NULL != this );
+
+ const size_t temp = m_itemCount;
+ m_itemCount = rhs.m_itemCount;
+ rhs.m_itemCount = temp;
+}
+
+// ----------------------------------------------------------------------------
+
+void DeleteArrayBase::OnInit( const void * p ) const
+{
+ assert( NULL != this );
+ if ( NULL == p )
+ {
+ assert( 0 == m_itemCount );
+ }
+ else
+ {
+ assert( 0 < m_itemCount );
+ }
+}
+
+// ----------------------------------------------------------------------------
+
+void DeleteArrayBase::OnCheckRange( size_t index ) const
+{
+ assert( NULL != this );
+
+ if ( index < m_itemCount )
+ return;
+
+ const ::std::string message( "index out of range in ::Loki::DeleteArrayBase::OnCheckRange" );
+ throw ::std::out_of_range( message );
+}
+
+// ----------------------------------------------------------------------------
+
OneOwnerRefCountInfo::OneOwnerRefCountInfo( SingleOwnerRefCount * ptr )
: m_pointer( NULL )
, m_strongPtr( ptr )
Modified: trunk/test/LevelMutex/LevelMutex.cbp
===================================================================
--- trunk/test/LevelMutex/LevelMutex.cbp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/LevelMutex/LevelMutex.cbp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -6,24 +6,24 @@
<Option compiler="cygwin" />
<Build>
<Target title="Debug_GCC">
- <Option output="obj/Debug_GCC/LevelMutex" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_GCC/" />
+ <Option output="obj\Debug_GCC\LevelMutex" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
+ <Add option="-W" />
<Add option="-g" />
- <Add option="-W" />
- <Add directory="../../include" />
- <Add directory="../../include/loki" />
+ <Add directory="..\..\include" />
+ <Add directory="..\..\include\loki" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki_D.a" />
- <Add library="/usr/lib/libpthread.so" />
+ <Add library="..\..\lib\GCC\Loki_D.a" />
+ <Add library="..\..\..\PThreads\lib\pthreadVC2.lib" />
</Linker>
</Target>
<Target title="Release_GCC">
- <Option output="obj/Release_GCC/LevelMutex" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_GCC/" />
+ <Option output="obj\Release_GCC\LevelMutex" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
@@ -31,33 +31,33 @@
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include" />
- <Add directory="../../include/loki" />
+ <Add directory="..\..\include" />
+ <Add directory="..\..\include\loki" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki.a" />
- <Add library="/usr/lib/libpthread.so" />
+ <Add library="..\..\lib\GCC\Loki.a" />
+ <Add library="..\..\..\PThreads\lib\pthreadVC2.lib" />
</Linker>
</Target>
<Target title="Debug_Cygwin">
- <Option output="obj/Debug_Cygwin/LevelMutex" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_Cygwin/" />
+ <Option output="obj\Debug_Cygwin\LevelMutex" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_Cygwin\" />
<Option type="1" />
<Option compiler="cygwin" />
<Compiler>
<Add option="-W" />
<Add option="-g" />
- <Add directory="../../include" />
- <Add directory="../../include/loki" />
+ <Add directory="..\..\include" />
+ <Add directory="..\..\include\loki" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki_D.a" />
- <Add library="../../../PThreads/lib/pthreadVC2.lib" />
+ <Add library="..\..\lib\Cygwin\Loki_D.a" />
+ <Add library="..\..\..\PThreads\lib\pthreadVC2.lib" />
</Linker>
</Target>
<Target title="Release_Cygwin">
- <Option output="obj/Release_Cygwin/LevelMutex" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_Cygwin/" />
+ <Option output="obj\Release_Cygwin\LevelMutex" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_Cygwin\" />
<Option type="1" />
<Option compiler="cygwin" />
<Compiler>
@@ -65,12 +65,12 @@
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include" />
- <Add directory="../../include/loki" />
+ <Add directory="..\..\include" />
+ <Add directory="..\..\include\loki" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki.a" />
- <Add library="../../../PThreads/lib/pthreadVC2.lib" />
+ <Add library="..\..\lib\Cygwin\Loki.a" />
+ <Add library="..\..\..\PThreads\lib\pthreadVC2.lib" />
</Linker>
</Target>
</Build>
Modified: trunk/test/LevelMutex/MultiThreadTests.cpp
===================================================================
--- trunk/test/LevelMutex/MultiThreadTests.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/LevelMutex/MultiThreadTests.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -4,9 +4,9 @@
// Copyright (c) 2008, 2009 Richard Sposato
// The copyright on this file is protected under the terms of the MIT license.
//
-// Permission to use, copy, modify, distribute and sell this software for any
-// purpose is hereby granted without fee, provided that the above copyright
-// notice appear in all copies and that both that copyright notice and this
+// Permission to use, copy, modify, distribute and sell this software for any
+// purpose is hereby granted without fee, provided that the above copyright
+// notice appear in all copies and that both that copyright notice and this
// permission notice appear in supporting documentation.
//
// The author makes no representations about the suitability of this software
@@ -22,7 +22,7 @@
#include "MultiThreadTests.hpp"
#include <assert.h>
-//#include <process.h>
+#include <process.h>
#include <stdlib.h>
#include <time.h>
@@ -239,8 +239,6 @@
void MultiThreadSimpleTest( void )
{
- cout << "Starting MultiThreadSimpleTest." << endl;
-
Thing::Init( 0 );
const unsigned int threadCount = 5;
ThreadPool pool( threadCount );
@@ -264,8 +262,6 @@
pool.JoinAll();
Thing::Destroy();
-
- cout << "Finished MultiThreadSimpleTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -303,17 +299,13 @@
void MultiThreadTryLockTest( void )
{
- cout << "Starting MultiThreadTryLockTest." << endl;
-
static const unsigned int threadCount = 3;
Thing::Init( 0 );
volatile Thing & thing = Thing::GetIt();
volatile SleepMutex & mutex = thing.GetMutex();
cout << endl << "Doing multi-threaded TryLock test. This test should not deadlock." << endl;
- cout << "Press enter key to continue." << endl;
- char theKey = 0;
- cin.get( theKey );
+ ::system( "pause" );
// First step is to lock the mutex in the main thread so no child thread
// can ever lock it, change the value, or anything like that.
MutexErrors::Type result = mutex.Lock();
@@ -321,46 +313,36 @@
bool okay = mutex.IsLockedByCurrentThread();
assert( okay );
thing.SetValue( threadCount );
-
+ ThreadPool pool( threadCount );
+ for ( unsigned int ii = 0; ii < threadCount; ++ii )
{
- ThreadPool pool( threadCount );
- for ( unsigned int ii = 0; ii < threadCount; ++ii )
- {
- void * p = reinterpret_cast< void * >( ii );
- pool.Start( TryLockThread, p );
- }
- pool.JoinAll();
+ void * p = reinterpret_cast< void * >( ii );
+ pool.Start( TryLockThread, p );
}
+ pool.JoinAll();
+ const unsigned int value = thing.GetValue();
+ assert( value == threadCount );
+ result = mutex.Unlock();
+ assert( MutexErrors::Success == result );
+ okay = !mutex.IsLockedByCurrentThread();
+ assert( okay );
+ okay = !mutex.IsLocked();
+ assert( okay );
- const unsigned int value = thing.GetValue();
- assert( value == threadCount );
- result = mutex.Unlock();
- assert( MutexErrors::Success == result );
- okay = !mutex.IsLockedByCurrentThread();
- assert( okay );
- okay = !mutex.IsLocked();
- assert( okay );
-
Thing::Destroy();
-
- cout << "Finished MultiThreadTryLockTest." << endl;
}
// ----------------------------------------------------------------------------
void MultiThreadReentrantTest( void )
{
- cout << "Starting MultiThreadReentrantTest." << endl;
-
Thing::Init( 0 );
const unsigned int threadCount = 8;
TestResults::Create( threadCount );
ThreadPool pool( threadCount );
cout << endl << "Doing thread-safe value test. This test should pass and not deadlock." << endl;
- cout << "Press enter key to continue." << endl;
- char theKey = 0;
- cin.get( theKey );
+ ::system( "pause" );
for ( unsigned int ii = 0; ii < threadCount; ++ii )
{
void * p = reinterpret_cast< void * >( ii );
@@ -370,8 +352,7 @@
TestResults::GetIt()->OutputResults();
cout << endl << "Doing thread-unsafe value test. This test may fail." << endl;
- cout << "Press enter key to continue." << endl;
- cin.get( theKey );
+ ::system( "pause" );
for ( unsigned int ii = 0; ii < threadCount; ++ii )
{
void * p = reinterpret_cast< void * >( ii );
@@ -382,8 +363,6 @@
TestResults::Destroy();
Thing::Destroy();
-
- cout << "Finished MultiThreadReentrantTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -667,8 +646,6 @@
void MultiThreadMultiLockTest( void )
{
- cout << "Starting MultiThreadMultiLockTest." << endl;
-
Thing::MakePool( thingCount );
const unsigned int threadCount = 8;
TestResults::Create( threadCount );
@@ -697,8 +674,6 @@
TestResults::Destroy();
Thing::DestroyPool();
-
- cout << "Finished MultiThreadMultiLockTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -833,8 +808,6 @@
void MultiThreadRandomMultiLockTest( void )
{
- cout << "Starting MultiThreadRandomMultiLockTest." << endl;
-
Thing::MakePool( thingCount );
const unsigned int threadCount = 8;
TestResults::Create( threadCount );
@@ -863,8 +836,6 @@
TestResults::Destroy();
Thing::DestroyPool();
-
- cout << "Finished MultiThreadRandomMultiLockTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -965,8 +936,6 @@
void MultiThreadHierarchySingleLockTest( void )
{
- cout << "Starting MultiThreadHierarchySingleLockTest." << endl;
-
LevelThing::MakePool( thingCount );
const unsigned int threadCount = 8;
TestResults::Create( threadCount );
@@ -995,8 +964,6 @@
TestResults::Destroy();
LevelThing::DestroyPool();
-
- cout << "Finished MultiThreadHierarchySingleLockTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -1098,8 +1065,6 @@
void MultiThreadHierarchyMultiLockTest( void )
{
- cout << "Starting MultiThreadHierarchyMultiLockTest." << endl;
-
MultiLevelPool::MakePool( 10, thingCount );
const unsigned int threadCount = 8;
TestResults::Create( threadCount );
@@ -1128,8 +1093,6 @@
TestResults::Destroy();
MultiLevelPool::DestroyPool();
-
- cout << "Finished MultiThreadHierarchyMultiLockTest." << endl;
}
// ----------------------------------------------------------------------------
Modified: trunk/test/LevelMutex/ThreadPool.cpp
===================================================================
--- trunk/test/LevelMutex/ThreadPool.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/LevelMutex/ThreadPool.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -20,7 +20,7 @@
#include <assert.h>
-//#include <process.h>
+#include <process.h>
#if !defined( _MSC_VER )
#include <unistd.h> // needed for the usleep function.
#endif
@@ -86,13 +86,11 @@
bool Thread::WaitForThread( void ) volatile
{
assert( IsValid( m_owner ) );
-
const volatile Thread * current = Thread::GetCurrentThread();
if ( this == current )
return false;
if ( m_status == Thread::Dead )
return false;
-
while ( this->m_status == Thread::Active )
{
// Call the wait policy.
@@ -102,8 +100,6 @@
::usleep( 1000 );
#endif
}
-
- m_status = Thread::Idle;
return true;
}
Modified: trunk/test/LevelMutex/main.cpp
===================================================================
--- trunk/test/LevelMutex/main.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/LevelMutex/main.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -48,8 +48,6 @@
void SingleThreadSimpleTest( void )
{
- cout << "Starting SingleThreadSimpleTest." << endl;
-
const unsigned int priorLevel = GetCurrentThreadsLevel();
const unsigned int priorLockCount = CountLocksInCurrentThread();
const unsigned int priorMutexCount = CountMutexesInCurrentThread();
@@ -173,8 +171,6 @@
assert( okay );
okay = ( CountMutexesAtCurrentLevel() == priorLevelMutexCount );
assert( okay );
-
- cout << "Finished SingleThreadSimpleTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -182,8 +178,6 @@
void SingleThreadReentrantTest( void )
{
- cout << "Starting SingleThreadReentrantTest." << endl;
-
const unsigned int priorLevel = GetCurrentThreadsLevel();
const unsigned int priorLockCount = CountLocksInCurrentThread();
const unsigned int priorMutexCount = CountMutexesInCurrentThread();
@@ -289,8 +283,6 @@
assert( okay );
okay = ( CountMutexesAtCurrentLevel() == priorLevelMutexCount );
assert( okay );
-
- cout << "Finished SingleThreadReentrantTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -298,8 +290,6 @@
void SingleThreadSimpleMultiLockTest( void )
{
- cout << "Starting SingleThreadSimpleMultiLockTest." << endl;
-
const unsigned int priorLevel = GetCurrentThreadsLevel();
const unsigned int priorLockCount = CountLocksInCurrentThread();
const unsigned int priorMutexCount = CountMutexesInCurrentThread();
@@ -491,8 +481,6 @@
assert( okay );
okay = ( CountMutexesAtCurrentLevel() == priorLevelMutexCount );
assert( okay );
-
- cout << "Finished SingleThreadSimpleMultiLockTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -500,8 +488,6 @@
void SingleThreadExceptionTest( void )
{
- cout << "Starting SingleThreadExceptionTest." << endl;
-
const unsigned int priorLevel = GetCurrentThreadsLevel();
const unsigned int priorLockCount = CountLocksInCurrentThread();
const unsigned int priorMutexCount = CountMutexesInCurrentThread();
@@ -650,8 +636,6 @@
assert( okay );
okay = ( CountMutexesAtCurrentLevel() == priorLevelMutexCount );
assert( okay );
-
- cout << "Finished SingleThreadExceptionTest." << endl;
}
// ----------------------------------------------------------------------------
@@ -676,7 +660,6 @@
MultiThreadSimpleTest();
MultiThreadTryLockTest();
- cout << "main 679" << endl;
MultiThreadReentrantTest();
MultiThreadMultiLockTest();
MultiThreadRandomMultiLockTest();
Modified: trunk/test/LockingPtr/LockingPtr.cbp
===================================================================
--- trunk/test/LockingPtr/LockingPtr.cbp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/LockingPtr/LockingPtr.cbp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -3,27 +3,26 @@
<FileVersion major="1" minor="6" />
<Project>
<Option title="LockingPtr" />
- <Option compiler="gcc" />
+ <Option compiler="cygwin" />
<Build>
<Target title="Debug_GCC">
- <Option output="obj/Debug_GCC/LockingPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_GCC/" />
+ <Option output="obj\Debug_GCC\LockingPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
- <Add option="-g" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add option="-g" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki_D.a" />
- <Add library="/usr/lib/libpthread.so" />
+ <Add library="..\..\lib\GCC\Loki_D.a" />
</Linker>
</Target>
<Target title="Release_GCC">
- <Option output="obj/Release_GCC/LockingPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_GCC/" />
+ <Option output="obj\Release_GCC\LockingPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
@@ -31,44 +30,43 @@
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki.a" />
- <Add library="/usr/lib/libpthread.so" />
+ <Add library="..\..\lib\GCC\Loki.a" />
</Linker>
</Target>
<Target title="Debug_Cygwin">
- <Option output="obj/Debug_Cygwin/LockingPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_Cygwin/" />
+ <Option output="obj\Debug_Cygwin\LockingPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_Cygwin\" />
<Option type="1" />
- <Option compiler="gcc" />
+ <Option compiler="cygwin" />
<Compiler>
<Add option="-W" />
<Add option="-g" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki_D.a" />
+ <Add library="..\..\lib\Cygwin\Loki_D.a" />
</Linker>
</Target>
<Target title="Release_Cygwin">
- <Option output="obj/Release_Cygwin/LockingPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_Cygwin/" />
+ <Option output="obj\Release_Cygwin\LockingPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_Cygwin\" />
<Option type="1" />
- <Option compiler="gcc" />
+ <Option compiler="cygwin" />
<Compiler>
<Add option="-fexpensive-optimizations" />
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki.a" />
+ <Add library="..\..\lib\Cygwin\Loki.a" />
</Linker>
</Target>
</Build>
Modified: trunk/test/SmartPtr/SmartPtr.cbp
===================================================================
--- trunk/test/SmartPtr/SmartPtr.cbp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/SmartPtr/SmartPtr.cbp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -6,25 +6,23 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug_GCC">
- <Option output="bin/Debug_GCC/SmartPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_GCC/" />
+ <Option output="bin\Debug_GCC\SmartPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
- <Add option="-g" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add option="-g" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki_D.a" />
- <Add library="/usr/lib/libpthread.so" />
- <Add library="/usr/lib/libc.so" />
+ <Add library="..\..\lib\GCC\Loki_D.a" />
</Linker>
</Target>
<Target title="Release_GCC">
- <Option output="bin/Release_GCC/SmartPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_GCC/" />
+ <Option output="bin\Release_GCC\SmartPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
@@ -32,33 +30,31 @@
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/GCC/Loki.a" />
- <Add library="/usr/lib/libpthread.so" />
- <Add library="/usr/lib/libc.so" />
+ <Add library="..\..\lib\GCC\Loki.a" />
</Linker>
</Target>
<Target title="Debug_Cygwin">
- <Option output="bin/Debug_Cygwin/SmartPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_Cygwin/" />
+ <Option output="bin\Debug_Cygwin\SmartPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_Cygwin\" />
<Option type="1" />
<Option compiler="cygwin" />
<Compiler>
<Add option="-W" />
<Add option="-g" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki_D.a" />
+ <Add library="..\..\lib\Cygwin\Loki_D.a" />
</Linker>
</Target>
<Target title="Release_Cygwin">
- <Option output="bin/Release_Cygwin/SmartPtr" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_Cygwin/" />
+ <Option output="bin\Release_Cygwin\SmartPtr" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_Cygwin\" />
<Option type="1" />
<Option compiler="cygwin" />
<Compiler>
@@ -66,11 +62,11 @@
<Add option="-Os" />
<Add option="-O3" />
<Add option="-W" />
- <Add directory="../../include/loki" />
- <Add directory="../../include" />
+ <Add directory="..\..\include\loki" />
+ <Add directory="..\..\include" />
</Compiler>
<Linker>
- <Add library="../../lib/Cygwin/Loki.a" />
+ <Add library="..\..\lib\Cygwin\Loki.a" />
</Linker>
</Target>
</Build>
@@ -78,7 +74,6 @@
<Unit filename="base.h">
<Option target="<{~None~}>" />
</Unit>
- <Unit filename="colvin_gibbons_trick.cpp" />
<Unit filename="main.cpp" />
<Unit filename="strong.cpp" />
<Extensions>
Modified: trunk/test/SmartPtr/base.h
===================================================================
--- trunk/test/SmartPtr/base.h 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/SmartPtr/base.h 2011-09-20 23:19:14 UTC (rev 1111)
@@ -73,11 +73,10 @@
return s_destructions;
}
-protected:
- BaseClass( const BaseClass & that ) : m_refCount( that.m_refCount ) {}
-
private:
/// Not implemented.
+ BaseClass( const BaseClass & );
+ /// Not implemented.
BaseClass & operator = ( const BaseClass & );
static unsigned int s_constructions;
@@ -111,45 +110,7 @@
}
};
-// ----------------------------------------------------------------------------
-/** @class Feline - The feline family of classes are to test dynamic_cast. Also used to test
- pointers to arrays of objects.
- */
-class Feline : public BaseClass
-{
-public:
- virtual ~Feline() {}
- virtual Feline * Clone( void ) const = 0;
-};
-
-class Lion : public Feline
-{
-public:
- virtual ~Lion() {}
- virtual Lion * Clone( void ) const { return new Lion( *this ); }
-};
-
-class Tiger : public Feline
-{
-public:
- Tiger( void ) : m_stripes( 100 ) {}
- virtual ~Tiger() {}
- virtual Tiger * Clone( void ) const { return new Tiger( *this ); }
- unsigned int GetStripes( void ) const { return m_stripes; }
- void SetStripes( unsigned int s ) { m_stripes = s; }
-private:
- unsigned int m_stripes;
-};
-
-class Dog
-{
-public:
- virtual ~Dog() {}
- virtual Dog * Clone( void ) const { return new Dog( *this ); }
-};
-
-
// ----------------------------------------------------------------------------
/** @class MimicCOM Acts like a COM object by having an intrusive ref count.
Modified: trunk/test/SmartPtr/main.cpp
===================================================================
--- trunk/test/SmartPtr/main.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/SmartPtr/main.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -1205,6 +1205,75 @@
// ----------------------------------------------------------------------------
+namespace
+{
+
+ class Feline
+ {
+ public:
+
+ static inline bool AllDestroyed( void )
+ {
+ return ( s_constructions == s_destructions );
+ }
+
+ static inline bool ExtraConstructions( void )
+ {
+ return ( s_constructions > s_destructions );
+ }
+
+ static inline bool ExtraDestructions( void )
+ {
+ return ( s_constructions < s_destructions );
+ }
+
+ static inline unsigned int GetCtorCount( void )
+ {
+ return s_constructions;
+ }
+
+ static inline unsigned int GetDtorCount( void )
+ {
+ return s_destructions;
+ }
+
+ Feline( void ) { s_constructions++; }
+ virtual ~Feline() { s_destructions++; }
+ virtual Feline * Clone( void ) const = 0;
+
+ private:
+ static unsigned int s_constructions;
+ static unsigned int s_destructions;
+ };
+
+ unsigned int Feline::s_constructions = 0;
+ unsigned int Feline::s_destructions = 0;
+
+ class Tiger : public Feline
+ {
+ public:
+ virtual ~Tiger() {}
+ virtual Tiger * Clone( void ) const { return new Tiger( *this ); }
+ };
+
+ class Lion : public Feline
+ {
+ public:
+ virtual ~Lion() {}
+ virtual Lion * Clone( void ) const { return new Lion( *this ); }
+ };
+
+ class Dog
+ {
+ public:
+ virtual ~Dog() {}
+ virtual Dog * Clone( void ) const { return new Dog( *this ); }
+ };
+
+}
+
+// ----------------------------------------------------------------------------
+
void DoSmartPtrDynamicCastTests( void )
{
cout << "Starting DoSmartPtrDynamicCastTests." << endl;
@@ -1290,9 +1359,9 @@
assert( !pDog );
}
- assert( BaseClass::AllDestroyed() );
- assert( !BaseClass::ExtraConstructions() );
- assert( !BaseClass::ExtraDestructions() );
+ assert( Feline::AllDestroyed() );
+ assert( !Feline::ExtraConstructions() );
+ assert( !Feline::ExtraDestructions() );
cout << "Finished DoSmartPtrDynamicCastTests." << endl;
}
@@ -1449,161 +1518,6 @@
// ----------------------------------------------------------------------------
-/// Use these typedefs to test DeleteArray policy.
-
-typedef Loki::SmartPtr< Tiger, RefCounted, DisallowConversion,
- AssertCheck, ArrayStorage, DontPropagateConst >
- TigerArray_RefCounted_ptr;
-
-typedef Loki::SmartPtr< Tiger, RefLinked, DisallowConversion,
- AssertCheck, ArrayStorage, DontPropagateConst >
- TigerArray_2RefLinks_ptr;
-
-// ----------------------------------------------------------------------------
-
-void DoSmartArrayTests( void )
-{
- cout << "Starting DoSmartArrayTests." << endl;
-
- {
- // test default construction.
- TigerArray_RefCounted_ptr sp1;
- assert( !sp1 );
- assert( 0 == sp1.GetArrayCount() );
-
- // test assignment.
- sp1.Assign( new Tiger[ 8 ], 8 );
- assert( sp1 );
- assert( 8 == sp1.GetArrayCount() );
- sp1[ 0 ].SetStripes( 8 );
- sp1[ 1 ].SetStripes( 16 );
- sp1[ 2 ].SetStripes( 24 );
- sp1[ 3 ].SetStripes( 32 );
- sp1[ 4 ].SetStripes( 40);
- sp1[ 5 ].SetStripes( 48 );
- sp1[ 6 ].SetStripes( 56 );
- sp1[ 7 ].SetStripes( 64 );
-
- // test initialization construction.
- TigerArray_RefCounted_ptr sp2( new Tiger[ 4 ], 4 );
- assert( sp2 );
- assert( 4 == sp2.GetArrayCount() );
- sp2[ 0 ].SetStripes( 5 );
- sp2[ 1 ].SetStripes( 10 );
- sp2[ 2 ].SetStripes( 15 );
- sp2[ 3 ].SetStripes( 20 );
-
- // test range checking.
- try
- {
- Tiger & p4 = sp2[ 4 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- // test range checking.
- try
- {
- Tiger & p8 = sp1[ 8 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- // test swap.
- sp2.Swap( sp1 );
- assert( sp1 );
- assert( sp2 );
- // test checking of item count.
- assert( 4 == sp1.GetArrayCount() );
- assert( 8 == sp2.GetArrayCount() );
-
- // test that operator[] returns reference to
- assert( 5 == sp1[ 0 ].GetStripes() );
- assert( 10 == sp1[ 1 ].GetStripes() );
- assert( 15 == sp1[ 2 ].GetStripes() );
- assert( 20 == sp1[ 3 ].GetStripes() );
- assert( 8 == sp2[ 0 ].GetStripes() );
- assert( 16 == sp2[ 1 ].GetStripes() );
- assert( 24 == sp2[ 2 ].GetStripes() );
- assert( 32 == sp2[ 3 ].GetStripes() );
- assert( 40 == sp2[ 4 ].GetStripes() );
- assert( 48 == sp2[ 5 ].GetStripes() );
- assert( 56 == sp2[ 6 ].GetStripes() );
- assert( 64 == sp2[ 7 ].GetStripes() );
-
- try
- {
- Tiger & p4 = sp1[ 4 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- try
- {
- Tiger & p8 = sp2[ 8 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- const TigerArray_RefCounted_ptr sp3( sp1 );
- assert( sp3 == sp1 );
- assert( sp3.GetArrayCount() == sp1.GetArrayCount() );
- try
- {
- const Tiger & p4 = sp3[ 4 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- const TigerArray_RefCounted_ptr sp5( sp2 );
- assert( sp5 == sp2 );
- assert( sp5.GetArrayCount() == sp2.GetArrayCount() );
- try
- {
- const Tiger & p8 = sp5[ 8 ];
- assert( false );
- }
- catch ( const ::std::out_of_range & ex )
- {
- assert( true );
- }
-
- sp2 = sp1;
- assert( sp1 == sp2 );
- assert( sp3 == sp2 );
- assert( sp2.GetArrayCount() == sp1.GetArrayCount() );
- assert( sp2.GetArrayCount() == sp1.GetArrayCount() );
- assert( sp1 != sp5 );
- assert( sp2 != sp5 );
- assert( sp3 != sp5 );
- assert( sp1.GetArrayCount() != sp5.GetArrayCount() );
- assert( sp2.GetArrayCount() != sp5.GetArrayCount() );
- assert( sp3.GetArrayCount() != sp5.GetArrayCount() );
- }
-
- assert( BaseClass::AllDestroyed() );
- assert( !BaseClass::ExtraConstructions() );
- assert( !BaseClass::ExtraDestructions() );
- cout << "Finished DoSmartArrayTests." << endl;
-}
-
-// ----------------------------------------------------------------------------
-
int main( int argc, const char * argv[] )
{
bool doThreadTest = false;
@@ -1642,7 +1556,6 @@
DoSmartPtrDynamicCastTests();
DoStrongPtrDynamicCastTests();
DoStrongArrayTests();
- DoSmartArrayTests();
#if defined (LOKI_OBJECT_LEVEL_THREADING) || defined (LOKI_CLASS_LEVEL_THREADING)
if ( doThreadTest )
Modified: trunk/test/SmartPtr/strong.cpp
===================================================================
--- trunk/test/SmartPtr/strong.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/SmartPtr/strong.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -1778,6 +1778,42 @@
// ----------------------------------------------------------------------------
+namespace
+{
+
+ class Feline : public BaseClass
+ {
+ public:
+ virtual ~Feline() {}
+ };
+
+ class Lion : public Feline
+ {
+ public:
+ virtual ~Lion() {}
+ };
+
+ class Tiger : public Feline
+ {
+ public:
+ Tiger( void ) : m_stripes( 100 ) {}
+ virtual ~Tiger() {}
+ unsigned int GetStripes( void ) const { return m_stripes; }
+ void SetStripes( unsigned int s ) { m_stripes = s; }
+ private:
+ unsigned int m_stripes;
+ };
+
+ class Dog
+ {
+ public:
+ virtual ~Dog() {}
+ };
+
+}
+
+// ----------------------------------------------------------------------------
+
void DoStrongPtrDynamicCastTests( void )
{
typedef ::Loki::StrongPtr< Feline, true, ::Loki::TwoRefCounts > FelineCountPtr;
Modified: trunk/test/ThreadLocal/ThreadLocal.cbp
===================================================================
--- trunk/test/ThreadLocal/ThreadLocal.cbp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/ThreadLocal/ThreadLocal.cbp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -7,37 +7,28 @@
<Option compiler="gcc" />
<Build>
<Target title="Debug_GCC">
- <Option output="obj/Debug_GCC/ThreadLocal" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Debug_GCC/" />
+ <Option output="obj\Debug_GCC\ThreadLocal" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Debug_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-Wmain" />
<Add option="-pedantic" />
- <Add option="-g" />
<Add option="-W" />
- <Add directory="../../include" />
+ <Add option="-g" />
+ <Add directory="..\..\include" />
</Compiler>
- <Linker>
- <Add library="/usr/lib/libpthread.so" />
- <Add library="/usr/lib/libc.so" />
- </Linker>
</Target>
<Target title="Release_GCC">
- <Option output="obj/Release_GCC/ThreadLocal" prefix_auto="1" extension_auto="1" />
- <Option object_output="obj/Release_GCC/" />
+ <Option output="obj\Release_GCC\ThreadLocal" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj\Release_GCC\" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-O2" />
- <Add option="-Wmain" />
- <Add option="-pedantic" />
- <Add option="-W" />
- <Add directory="../../include" />
</Compiler>
<Linker>
<Add option="-s" />
- <Add library="/usr/lib/libpthread.so" />
</Linker>
</Target>
</Build>
@@ -50,7 +41,6 @@
<code_completion />
<debugger />
<lib_finder disable_auto="1" />
- <envvars />
</Extensions>
</Project>
</CodeBlocks_project_file>
Modified: trunk/test/ThreadLocal/main.cpp
===================================================================
--- trunk/test/ThreadLocal/main.cpp 2011-09-20 22:34:24 UTC (rev 1110)
+++ trunk/test/ThreadLocal/main.cpp 2011-09-20 23:19:14 UTC (rev 1111)
@@ -26,8 +26,19 @@
#include <sstream>
#include <iostream>
-#include <stdlib.h>
+using namespace ::std;
+
+#if !defined( NULL )
+ #define NULL 0
+#endif
+
+// define nullptr even though new compilers will have this keyword just so we
+// have a consistent and easy way of identifying which uses of 0 mean null.
+#if !defined( nullptr )
+ #define nullptr NULL
+#endif
+
#if defined(_WIN32)
#include <process.h>
@@ -45,8 +56,6 @@
#else
- #include <pthread.h>
-
#define LOKI_pthread_t \
pthread_t
#define LOKI_pthread_create(handle,attr,func,arg) \
@@ -56,19 +65,6 @@
#endif
-
-using namespace ::std;
-
-#if !defined( NULL )
- #define NULL 0
-#endif
-
-// define nullptr even though new compilers will have this keyword just so we
-// have a consistent and easy way of identifying which uses of 0 mean null.
-#if !defined( nullptr )
- #define nullptr NULL
-#endif
-
// ----------------------------------------------------------------------------
class Thread
@@ -368,10 +364,7 @@
// ----------------------------------------------------------------------------
int main( int argc, const char * const argv[] )
-{
- (void)argc;
- (void)argv;
-
+{
bool okay = true;
cout << "Starting ThreadLocal tests." << endl;
cout << "If any tests fail, or any assertions fail," << endl
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|