$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
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>