Boost logo

Boost-Commit :

From: john.groups_at_[hidden]
Date: 2007-11-02 15:46:34


Author: jtorjo
Date: 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
New Revision: 40695
URL: http://svn.boost.org/trac/boost/changeset/40695

Log:
[logging]
v0.10.2, 2 nov 2007
- added TSS tests - they do run; however, they don't work successfully (they cause memory corruption)

Added:
   sandbox/logging/lib/logging/tests/test_ts_resource/
   sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.cpp (contents, props changed)
   sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.sln (contents, props changed)
   sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.vcproj (contents, props changed)
   sandbox/logging/lib/logging/tests/test_tss/
   sandbox/logging/lib/logging/tests/test_tss/test_tss.cpp (contents, props changed)
   sandbox/logging/lib/logging/tests/test_tss/test_tss.sln (contents, props changed)
   sandbox/logging/lib/logging/tests/test_tss/test_tss.vcproj (contents, props changed)
Text files modified:
   sandbox/logging/boost/logging/detail/raw_doc/changelog.hpp | 3 ++-
   sandbox/logging/boost/logging/detail/tss/tss.hpp | 9 +++------
   sandbox/logging/boost/logging/filter.hpp | 2 +-
   sandbox/logging/boost/logging/logging.hpp | 1 +
   sandbox/logging/boost/logging/macros.hpp | 6 ++++++
   5 files changed, 13 insertions(+), 8 deletions(-)

Modified: sandbox/logging/boost/logging/detail/raw_doc/changelog.hpp
==============================================================================
--- sandbox/logging/boost/logging/detail/raw_doc/changelog.hpp (original)
+++ sandbox/logging/boost/logging/detail/raw_doc/changelog.hpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -1,7 +1,8 @@
 /**
 @page page_changelog Changelog
 
-v0.10.1, 2 nov 2007
+v0.10.2, 2 nov 2007
+- added TSS tests - they do run; however, they don't work successfully (they cause memory corruption)
 - added TSS - however, not tested (TSS is off, for now)
 - compiles on VS2005, gcc 3.4.2 , gcc 4.1 and gcc 4.3
 

Modified: sandbox/logging/boost/logging/detail/tss/tss.hpp
==============================================================================
--- sandbox/logging/boost/logging/detail/tss/tss.hpp (original)
+++ sandbox/logging/boost/logging/detail/tss/tss.hpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -21,10 +21,6 @@
 # pragma once
 #endif
 
-// not tested yet
-#define BOOST_LOG_NO_TSS
-
-
 
 #if !defined(BOOST_LOG_NO_TSS)
 
@@ -49,6 +45,7 @@
 
 namespace boost { namespace logging {
 
+
 template<class type, template<typename> class thread_specific_ptr_type BOOST_LOG_TSS_DEFAULT_CLASS > struct tss_value {
     tss_value(const type & default_ = type() ) : m_default( default_) {}
 
@@ -60,7 +57,7 @@
 #else
             result = new type(m_default);
 #endif
- m_value.set( result );
+ m_value.reset( result );
         }
         return result;
     }
@@ -68,7 +65,7 @@
     type* operator->() const { return get(); }
     type& operator*() const { return *get(); }
 private:
- thread_specific_ptr_type<type> m_value;
+ mutable thread_specific_ptr_type<type> m_value;
     // the default value - to assign each time a new value is created
     type m_default;
 };

Modified: sandbox/logging/boost/logging/filter.hpp
==============================================================================
--- sandbox/logging/boost/logging/filter.hpp (original)
+++ sandbox/logging/boost/logging/filter.hpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -171,7 +171,7 @@
 struct use_tss_with_cache {
     typedef locker::tss_resource_with_cache<bool> data;
 
- use_tss_with_cache(int cache_millis) : m_enabled(true, cache_millis) {}
+ use_tss_with_cache(int cache_secs) : m_enabled(true, cache_secs) {}
     bool is_enabled() const {
         data::read enabled(m_enabled);
         return enabled.use();

Modified: sandbox/logging/boost/logging/logging.hpp
==============================================================================
--- sandbox/logging/boost/logging/logging.hpp (original)
+++ sandbox/logging/boost/logging/logging.hpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -25,6 +25,7 @@
 #include <boost/logging/filter.hpp>
 #include <boost/logging/detail/logger.hpp>
 #include <boost/logging/macros.hpp>
+#include <boost/logging/detail/tss/tss.hpp>
 #include <boost/logging/level.hpp>
 
 // just in case we might think of using formatters

Modified: sandbox/logging/boost/logging/macros.hpp
==============================================================================
--- sandbox/logging/boost/logging/macros.hpp (original)
+++ sandbox/logging/boost/logging/macros.hpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -149,6 +149,11 @@
     namespace { boost::logging::detail::fake_using_log ensure_log_is_created_before_main ## name ( name ## _boost_log_filter_impl_() ); } \
     boost::logging::detail::log_filter_keeper<type, name ## _boost_log_filter_impl_ > name;
 
+#define BOOST_DEFINE_LOG_FILTER_NO_NAMESPACE_PREFIX_WITH_ARGS(name,type, args) type& name ## _boost_log_filter_impl_() \
+ { static type i ( args ); return i; } \
+ namespace { boost::logging::detail::fake_using_log ensure_log_is_created_before_main ## name ( name ## _boost_log_filter_impl_() ); } \
+ boost::logging::detail::log_filter_keeper<type, name ## _boost_log_filter_impl_ > name;
+
 
 /**
 @note
@@ -166,6 +171,7 @@
 */
 #define BOOST_DEFINE_LOG_FILTER(name,type) BOOST_DEFINE_LOG_FILTER_NO_NAMESPACE_PREFIX(name, ::boost::logging:: type)
 
+#define BOOST_DEFINE_LOG_FILTER_WITH_ARGS(name,type, args) BOOST_DEFINE_LOG_FILTER_NO_NAMESPACE_PREFIX_WITH_ARGS(name, ::boost::logging:: type, args)
 
 
 

Added: sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.cpp
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.cpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,10 @@
+// test_ts_resource.cpp : Defines the entry point for the console application.
+//
+
+
+
+int main()
+{
+ return 0;
+}
+

Added: sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.sln
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.sln 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_ts_resource", "test_ts_resource.vcproj", "{C24466D5-0243-4D46-AAC0-8A416A731F1C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C24466D5-0243-4D46-AAC0-8A416A731F1C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C24466D5-0243-4D46-AAC0-8A416A731F1C}.Debug|Win32.Build.0 = Debug|Win32
+ {C24466D5-0243-4D46-AAC0-8A416A731F1C}.Release|Win32.ActiveCfg = Release|Win32
+ {C24466D5-0243-4D46-AAC0-8A416A731F1C}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal

Added: sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.vcproj
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_ts_resource/test_ts_resource.vcproj 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_ts_resource"
+ ProjectGUID="{C24466D5-0243-4D46-AAC0-8A416A731F1C}"
+ RootNamespace="test_ts_resource"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\test_ts_resource.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Added: sandbox/logging/lib/logging/tests/test_tss/test_tss.cpp
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_tss/test_tss.cpp 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,184 @@
+// test_tss.cpp : Defines the entry point for the console application.
+//
+
+/*
+ Test : we use TSS (Thread Specific Storage). We check to see that there are no objects leaked.
+
+ We create a number of threads.
+ Each thread :
+ - reads the current file - word by word
+ - after each read, pauses a bit (like, 1 ms)
+ - the words are concatenated, ignoring spaces
+ - after the whole file is read, dumps to console : the thread index and the character at the thread's index from the concatenated string
+ - we read as many words as there are threads (in order not to take too much time)
+
+ The thread information is all kept using TSS
+
+
+*/
+
+#define BOOST_LOG_TSS_USE_INTERNAL
+// this includes tss_value class
+#include <boost/logging/logging.hpp>
+#include <boost/thread/thread.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/xtime.hpp>
+#include <boost/bind.hpp>
+#include <boost/assert.hpp>
+#include <boost/shared_ptr.hpp>
+#include <string>
+#include <fstream>
+#include <sstream>
+#include <iostream>
+
+using namespace boost;
+
+// creating this (a log, or a filter), makes sure we initialize TSS
+BOOST_DEFINE_LOG_FILTER_WITH_ARGS(g_log_filter, filter::use_tss_with_cache , 10)
+
+
+/*
+ counts the number of objects.
+ When it's destroyed, there should be no objects left.
+*/
+struct object_count {
+ typedef mutex::scoped_lock scoped_lock;
+
+ object_count() : m_count(0) {}
+
+ ~object_count() {
+ scoped_lock lk(m_cs);
+ BOOST_ASSERT(m_count == 0);
+ }
+
+ void increment() {
+ scoped_lock lk(m_cs);
+ ++m_count;
+ }
+
+ void decrement() {
+ scoped_lock lk(m_cs);
+ --m_count;
+ }
+
+ int count() const {
+ scoped_lock lk(m_cs);
+ return m_count;
+ }
+
+private:
+ mutable mutex m_cs;
+ int m_count;
+};
+
+
+object_count g_object_count;
+object_count g_running_thread_count;
+
+// the actual number of started threads
+int g_thread_count = 50;
+
+
+struct managed_object {
+ managed_object(object_count & counter) : m_counter(counter) {
+ m_counter.increment();
+ }
+ ~managed_object() {
+ m_counter.decrement();
+ }
+private:
+ object_count & m_counter;
+};
+
+struct read_file : private managed_object {
+ // read this file itself
+ read_file() : managed_object(g_object_count), m_in(new std::ifstream("test_tss.cpp")), m_word_idx(0) {
+ }
+
+ std::string read_word() {
+ ++m_word_idx;
+ if ( m_word_idx < g_thread_count) {
+ std::string word;
+ (*m_in) >> word;
+ return word;
+ }
+ else
+ return "";
+ }
+
+private:
+ boost::shared_ptr<std::ifstream> m_in;
+ int m_word_idx;
+};
+
+struct string_no_spaces : private managed_object {
+ string_no_spaces() : managed_object(g_object_count) {}
+
+ void add_word(const std::string & word) {
+ m_str += word;
+ }
+
+ char at_idx(int idx) {
+ if ( idx < (int)m_str.size())
+ return m_str[idx];
+ else
+ return ' ';
+ }
+
+private:
+ std::string m_str;
+};
+
+void do_sleep(int ms) {
+ xtime next;
+ xtime_get( &next, TIME_UTC);
+ next.nsec += ms * 1000;
+
+ int nano_per_sec = 1000000000;
+ next.sec += next.nsec / nano_per_sec;
+ next.nsec %= nano_per_sec;
+ thread::sleep( next);
+}
+
+void process_file() {
+ managed_object m(g_running_thread_count);
+ int thread_idx = g_running_thread_count.count();
+ std::cout << "started thread " << thread_idx << std::endl;
+
+ using namespace logging;
+ tss_value<read_file> file;
+ tss_value<string_no_spaces> str;
+ while ( true) {
+ std::string word = file->read_word();
+ str->add_word(word);
+ if ( word.empty() )
+ break;
+ do_sleep(1);
+ }
+
+ std::cout << "char at idx " << thread_idx << ":" << str->at_idx(thread_idx) << std::endl ;
+
+ std::cout << "ended thread " << thread_idx << std::endl;
+}
+
+
+
+int main(int argc, char* argv[])
+{
+ if ( argc > 1) {
+ std::istringstream in(argv[1]);
+ in >> g_thread_count;
+ }
+ std::cout << "running test with " << g_thread_count << " threads" << std::endl;
+
+ for ( int idx = 0; idx < g_thread_count ; ++idx)
+ thread t( &process_file);
+
+ while ( g_running_thread_count.count() > 0 ) {
+ do_sleep(100);
+ std::cout << "remaining running threads " << g_running_thread_count.count() << std::endl;
+ }
+ return 0;
+}
+
+

Added: sandbox/logging/lib/logging/tests/test_tss/test_tss.sln
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_tss/test_tss.sln 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tss", "test_tss.vcproj", "{4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}.Debug|Win32.Build.0 = Debug|Win32
+ {4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}.Release|Win32.ActiveCfg = Release|Win32
+ {4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal

Added: sandbox/logging/lib/logging/tests/test_tss/test_tss.vcproj
==============================================================================
--- (empty file)
+++ sandbox/logging/lib/logging/tests/test_tss/test_tss.vcproj 2007-11-02 15:46:32 EDT (Fri, 02 Nov 2007)
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="test_tss"
+ ProjectGUID="{4817A3DF-1CF9-4BF9-98AA-2CF5EE0E742F}"
+ RootNamespace="test_tss"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=".,../../../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="D:\boosts\boost_1_33_1\bin\boost\libs\thread\build\libboost_thread.lib\vc-8_0\debug\threading-multi"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <File
+ RelativePath=".\test_tss.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>


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