From 9bcad593d830013876bc6a131a7b0b08de50c619 Mon Sep 17 00:00:00 2001 From: Barend Gehrels Date: Sat, 19 Jul 2025 20:34:31 +0200 Subject: [PATCH] fix: documentation support status --- CMakeLists.txt | 6 + .../tools/implementation_status/Jamfile | 26 - .../implementation_status.cpp | 499 ------------------ .../implementation_status.hpp | 15 - .../implementation_status.sln | 19 - .../implementation_status.vcproj | 177 ------- .../tools/implementation_status/tmp/Jamfile | 18 - .../tools/support_status/CMakeLists.txt | 17 + .../tools/support_status/support_status.cpp | 48 +- .../tools/support_status/support_status.sln | 19 - .../support_status/support_status.vcxproj | 85 --- 11 files changed, 31 insertions(+), 898 deletions(-) delete mode 100644 doc/src/docutils/tools/implementation_status/Jamfile delete mode 100644 doc/src/docutils/tools/implementation_status/implementation_status.cpp delete mode 100644 doc/src/docutils/tools/implementation_status/implementation_status.hpp delete mode 100644 doc/src/docutils/tools/implementation_status/implementation_status.sln delete mode 100644 doc/src/docutils/tools/implementation_status/implementation_status.vcproj delete mode 100644 doc/src/docutils/tools/implementation_status/tmp/Jamfile create mode 100644 doc/src/docutils/tools/support_status/CMakeLists.txt delete mode 100644 doc/src/docutils/tools/support_status/support_status.sln delete mode 100644 doc/src/docutils/tools/support_status/support_status.vcxproj diff --git a/CMakeLists.txt b/CMakeLists.txt index 9138c1d954..2b0384e1d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,3 +133,9 @@ if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") add_subdirectory(index/test EXCLUDE_FROM_ALL) endif() + +if(BUILD_DOCUMENTATION) + add_subdirectory(doc/src/examples) + add_subdirectory(doc/src/docutils/tools/support_status) +endif() + diff --git a/doc/src/docutils/tools/implementation_status/Jamfile b/doc/src/docutils/tools/implementation_status/Jamfile deleted file mode 100644 index a2db505260..0000000000 --- a/doc/src/docutils/tools/implementation_status/Jamfile +++ /dev/null @@ -1,26 +0,0 @@ -# Boost.Geometry (aka GGL, Generic Geometry Library) -# -# Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. -# Copyright (c) 2008-2012 Bruno Lalande, Paris, France. -# Copyright (c) 2009-2012 Mateusz Loskot, London, UK. - -# Use, modification and distribution is subject to the Boost Software License, -# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - - -project implementation-status - : - ; - -exe implementation-status : implementation_status.cpp - ; -install dist-bin - : - implementation-status - : - EXE - ../../../../../../../dist/bin - : - release - ; diff --git a/doc/src/docutils/tools/implementation_status/implementation_status.cpp b/doc/src/docutils/tools/implementation_status/implementation_status.cpp deleted file mode 100644 index 763ebbd1fc..0000000000 --- a/doc/src/docutils/tools/implementation_status/implementation_status.cpp +++ /dev/null @@ -1,499 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) -// Tool reporting Implementation Status in QBK format - -// Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands. -// Copyright (c) 2011-2014 Bruno Lalande, Paris, France. - -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -static const int point = 0; -static const int segment = 1; -static const int box = 2; -static const int linestring = 3; -static const int ring = 4; -static const int polygon = 5; -static const int multi_point = 6; -static const int multi_linestring = 7; -static const int multi_polygon = 8; -static const int variant = 9; -static const int geometry_count = 10; - -struct compile_bjam -{ - static inline bool apply(std::string const& id) - { - std::ostringstream command; - // For debugging: - command << "b2 -a tmp > tmp/t_" << id << ".out"; - //command << "b2 -a tmp > tmp/t.out"; - int failed = system(command.str().c_str()); - - { - // For debugging: save t.cpp - std::ostringstream c2; - c2 << "cp tmp/t.cpp tmp/t_" << id << ".cpp"; - system(c2.str().c_str()); - } - return failed == 0; - } -}; - - -struct compile_clang -{ - bool first; - - compile_clang() - : first(true) - {} - - inline bool apply(std::string const& id) - { - if (first) - { - // Generate the pre-compiled header - system("clang -x c++-header -I . -I ../../../../../../.. implementation_status.hpp"); - first = false; - } - - std::ostringstream command; - // We compile only, not even link - command << "clang -include implementation_status.hpp -I . -I ../../../../../../.. -c tmp/t.cpp > tmp/t_" << id << ".out 2>&1"; - int failed = system(command.str().c_str()); - - { - // For debugging: save t.cpp - std::ostringstream c2; - c2 << "cp tmp/t.cpp tmp/t_" << id << ".cpp"; - system(c2.str().c_str()); - } - return failed == 0; - } -}; - -struct compile_msvc -{ - bool first; - int count; - - compile_msvc() - : first(true) - , count(0) - {} - - inline bool apply(std::string const& id) - { - std::ostringstream command; - command << "cl /nologo -I. -I/_svn/boost/trunk /EHsc /Y"; - if (first) - { - std::cout << " (creating PCH)"; - command << "c"; - first = false; - } - else - { - command << "u"; - } - - command << "implementation_status.hpp tmp/t.cpp > tmp/t" //.out"; - // For debugging: - << id << ".out"; - - int failed = system(command.str().c_str()); - return failed == 0; - } -}; - -struct algorithm -{ - std::string name; - int arity; - - explicit algorithm(std::string const& n, int a = 1) - : name(n) - , arity(a) - {} -}; - - -inline std::string bool_string(bool v) -{ - return v ? "true" : "false"; -} - -inline std::string typedef_string(int type, bool clockwise, bool open) -{ - std::ostringstream out; - switch(type) - { - case point : return "P"; - case linestring : return "bg::model::linestring

"; - case box : return "bg::model::box

"; - case segment : return "bg::model::segment

"; - case ring : - out << "bg::model::ring"; - break; - case variant : - case polygon : - out << "bg::model::polygon"; - break; - case multi_point : return "bg::model::multi_point

"; - case multi_linestring : - out << "bg::model::multi_linestring >"; - break; - case multi_polygon : - out << "bg::model::multi_polygon >"; - break; - } - return out.str(); -} - -inline std::string wkt_string(int type) -{ - switch(type) - { - case point : return "POINT(1 1)"; - case linestring : return "LINESTRING(1 1,2 2)"; - case segment : return "LINESTRING(1 1,2 2)"; - case box : return "POLYGON((1 1,2 2))"; - case polygon : - case variant : - case ring : - return "POLYGON((0 0,0 1,1 1,0 0))"; - case multi_point : return "MULTIPOINT((1 1),(2 2))"; - case multi_linestring : return "MULTILINESTRING((1 1,2 2))"; - case multi_polygon : return "MULTIPOLYGON(((0 0,0 1,1 1,0 0)))"; - } - return ""; -} - -inline std::string geometry_string(int type) -{ - switch(type) - { - case point : return "Point"; - case linestring : return "Linestring"; - case box : return "Box"; - case polygon : return "Polygon"; - case ring : return "Ring"; - case segment : return "Segment"; - case multi_point : return "MultiPoint"; - case multi_linestring : return "MultiLinestring"; - case multi_polygon : return "MultiPolygon"; - case variant : return "Variant"; - } - return ""; -} - -template -int report_library(CompilePolicy& compile_policy, - int type, algorithm const& algo, bool clockwise, - bool open, int dimensions, std::string const& cs, - int type2 = -1) -{ - std::string lit; - { - std::ostringstream out; - out << geometry_string(type); - if (type2 != -1) - { - out << "_" << geometry_string(type2); - } - out - << "_" << algo.name - << "_" << bool_string(clockwise) - << "_" << bool_string(open) - << "_" << boost::replace_all_copy - ( - boost::replace_all_copy - ( - boost::replace_all_copy(cs, "bg::", "") - , "<", "_" - ) - , ">", "_" - ); - lit = out.str(); - } - - std::cout << lit; - - { - std::ofstream out("tmp/t.cpp"); - - std::string name = "geometry"; - - if (type == variant) - { - name = "source"; - } - - out << "#include " << std::endl; - - if (type == variant) - { - out << "#include " << std::endl; - } - - out - << "template " << std::endl - << "inline void test()" << std::endl - << "{" << std::endl - << " namespace bg = boost::geometry;" << std::endl - << " " << typedef_string(type, clockwise, open) << " " << name << ";" << std::endl - << " bg::read_wkt(\"" << wkt_string(type) << "\", " << name << ");" << std::endl; - - if (type == variant) - { - out - << " typedef " << typedef_string(polygon, clockwise, open) << " type1;" << std::endl - << " typedef " << typedef_string(box, clockwise, open) << " type2;" << std::endl - << " boost::variant geometry;" << std::endl - << " geometry = source;" - << std::endl; - } - - if (algo.arity > 1) - { - out - << " " << typedef_string(type2, clockwise, open) << " geometry2;" << std::endl - << " bg::read_wkt(\"" << wkt_string(type2) << "\", geometry2);" << std::endl; - } - - if (algo.name == std::string("centroid")) - { - out << " P point;"; - out << " bg::" << algo.name << "(geometry, point);" << std::endl; - } - else if (algo.name == std::string("envelope")) - { - out << " bg::model::box

box;"; - out << " bg::" << algo.name << "(geometry, box);" << std::endl; - } - else - { - switch(algo.arity) - { - case 1 : - out << " bg::" << algo.name << "(geometry);" << std::endl; - break; - case 2 : - // For cases as point-in-polygon, take first geometry 2 (point), then geometry (polygon) such that - // it is listed as column:point in row:polygon - out << " bg::" << algo.name << "(geometry2, geometry);" << std::endl; - break; - } - } - - out - << "}" << std::endl - << std::endl - ; - - out - << "int main()" << std::endl - << "{" << std::endl - << " namespace bg = boost::geometry;" << std::endl - << " test >();" << std::endl - << " return 0;" << std::endl - << "}" << std::endl - << std::endl - ; - } - - bool result = compile_policy.apply(lit); - if (! result) - { - std::cout << " ERROR"; - } - std::cout << std::endl; - return result; -} - - -template -std::vector report(CompilePolicy& compile_policy, - int type, algorithm const& algo, bool clockwise, - bool open, int dimensions, std::string const& cs) -{ - std::vector result; - - switch(algo.arity) - { - case 1 : - result.push_back(report_library(compile_policy, type, algo, clockwise, open, dimensions, cs)); - break; - case 2 : - for (int type2 = point; type2 < geometry_count; ++type2) - { - result.push_back(report_library(compile_policy, type, algo, clockwise, open, dimensions, cs, type2)); - } - break; - } - - return result; -} - - -struct cs -{ - std::string name; - - cs(std::string const& n) - : name(n) - {} -}; - - -int main(int , char** ) -{ -#if defined(_MSC_VER) - compile_msvc compile_policy; -#else - //compile_bjam compile_policy; - compile_clang compile_policy; -#endif - - typedef std::vector v_a_type; - v_a_type algorithms; - algorithms.push_back(algorithm("area")); - algorithms.push_back(algorithm("clear")); - algorithms.push_back(algorithm("correct")); - algorithms.push_back(algorithm("centroid")); // NOTE: current doc contains 2D / 3D - algorithms.push_back(algorithm("envelope")); - algorithms.push_back(algorithm("length")); - algorithms.push_back(algorithm("is_simple")); - algorithms.push_back(algorithm("is_valid")); - algorithms.push_back(algorithm("num_points")); - algorithms.push_back(algorithm("perimeter")); - - algorithms.push_back(algorithm("covered_by", 2)); - algorithms.push_back(algorithm("distance", 2)); - algorithms.push_back(algorithm("crosses", 2)); - algorithms.push_back(algorithm("disjoint", 2)); - algorithms.push_back(algorithm("equals", 2)); - algorithms.push_back(algorithm("intersects", 2)); - algorithms.push_back(algorithm("overlaps", 2)); - algorithms.push_back(algorithm("within", 2)); - - typedef std::vector cs_type; - cs_type css; - css.push_back(cs("cartesian")); - // css.push_back(cs("spherical")); - // css.push_back(cs("spherical")); - - - boost::timer timer; - - for (v_a_type::const_iterator it = algorithms.begin(); it != algorithms.end(); ++it) - { -/*([heading Behavior] -[table -[[Case] [Behavior] ] -[[__2dim__][All combinations of: box, ring, polygon, multi_polygon]] -[[__other__][__nyiversion__]] -[[__sph__][__nyiversion__]] -[[Three dimensional][__nyiversion__]] -]*/ - - std::ostringstream name; - name << "../../../../reference/status/" << it->name << "_status.qbk"; - - std::ofstream out(name.str().c_str()); - out << "[heading Supported geometries]" << std::endl; - - cs_type::const_iterator cit = css.begin(); - - { - // Construct the table - - std::vector > table; - - for (int type = point; type < geometry_count; type++) - { - table.push_back(report(compile_policy, type, *it, true, true, 2, cit->name)); - } - - -#if SURPRESS - // Detect red rows/columns - - std::vector lines_status(table.size(), false); - std::vector columns_status(table[0].size(), false); - - for (unsigned int i = 0; i != table.size(); ++i) - { - for (unsigned int j = 0; j != table[i].size(); ++j) - { - lines_status[i] |= table[i][j]; - columns_status[j] |= table[i][j]; - } - } -#endif - - - // Display the table - - out << "[table" << std::endl << "["; - - if (it->arity > 1) - { - out << "[ ]"; - for (int type = point; type < geometry_count; type++) - { -#if SURPRESS - if (!columns_status[type]) continue; -#endif - out << "[" << geometry_string(type) << "]"; - } - } - else - { - out << "[Geometry][Status]"; - } - - out << "]" << std::endl; - - for (unsigned int i = 0; i != table.size(); ++i) - { -#if SURPRESS - if (!lines_status[i]) continue; -#endif - out << "["; - out << "[" << geometry_string(i) << "]"; - for (unsigned int j = 0; j != table[i].size(); ++j) - { -#if SURPRESS - if (!columns_status[j]) continue; -#endif - out << "[ [$img/" << (table[i][j] ? "ok" : "nyi") << ".png] ]"; - } - out << "]" << std::endl; - } - - out << "]" << std::endl; - } - } - - std::cout << "TIME: " << timer.elapsed() << std::endl; - - return 0; -} diff --git a/doc/src/docutils/tools/implementation_status/implementation_status.hpp b/doc/src/docutils/tools/implementation_status/implementation_status.hpp deleted file mode 100644 index 3d1095e7f9..0000000000 --- a/doc/src/docutils/tools/implementation_status/implementation_status.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// Boost.Geometry (aka GGL, Generic Geometry Library) - -// implementation_status (developed in the context of Boost.Geometry documentation) -// -// Copyright Barend Gehrels 2010, 2011, Geodan, Amsterdam, the Netherlands -// Use, modification and distribution is subject to the Boost Software License, -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include -#include -#include -#include -#include - diff --git a/doc/src/docutils/tools/implementation_status/implementation_status.sln b/doc/src/docutils/tools/implementation_status/implementation_status.sln deleted file mode 100644 index b21756780e..0000000000 --- a/doc/src/docutils/tools/implementation_status/implementation_status.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "implementation_status", "implementation_status.vcproj", "{2A4F2616-8F8B-4BA0-A2F6-7E41135EC7B8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {2A4F2616-8F8B-4BA0-A2F6-7E41135EC7B8}.Debug|Win32.ActiveCfg = Debug|Win32 - {2A4F2616-8F8B-4BA0-A2F6-7E41135EC7B8}.Debug|Win32.Build.0 = Debug|Win32 - {2A4F2616-8F8B-4BA0-A2F6-7E41135EC7B8}.Release|Win32.ActiveCfg = Release|Win32 - {2A4F2616-8F8B-4BA0-A2F6-7E41135EC7B8}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/doc/src/docutils/tools/implementation_status/implementation_status.vcproj b/doc/src/docutils/tools/implementation_status/implementation_status.vcproj deleted file mode 100644 index f1aad144fc..0000000000 --- a/doc/src/docutils/tools/implementation_status/implementation_status.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/src/docutils/tools/implementation_status/tmp/Jamfile b/doc/src/docutils/tools/implementation_status/tmp/Jamfile deleted file mode 100644 index 21631f4239..0000000000 --- a/doc/src/docutils/tools/implementation_status/tmp/Jamfile +++ /dev/null @@ -1,18 +0,0 @@ -# Boost.Geometry (aka GGL, Generic Geometry Library) -# -# Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands. -# Copyright (c) 2011-2012 Bruno Lalande, Paris, France. - -# Use, modification and distribution is subject to the Boost Software License, -# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - - -project implementation-status-test - : - ; - -exe status-test : t.cpp - : ../../../../../../../.. - .. - ; diff --git a/doc/src/docutils/tools/support_status/CMakeLists.txt b/doc/src/docutils/tools/support_status/CMakeLists.txt new file mode 100644 index 0000000000..897ad49e9e --- /dev/null +++ b/doc/src/docutils/tools/support_status/CMakeLists.txt @@ -0,0 +1,17 @@ +# Boost.Geometry + +# Copyright (c) 2025-2025 Barend Gehrels, Amsterdam, the Netherlands. + +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +# Official repository: https://github.com/boostorg/geometry +# Documentation: http://www.boost.org/libs/geometry + +cmake_minimum_required(VERSION 3.8...3.20) +project(support_status LANGUAGES CXX) + +add_executable(${PROJECT_NAME} support_status.cpp) + +target_link_libraries(${PROJECT_NAME} PRIVATE Boost::geometry) +target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_14) diff --git a/doc/src/docutils/tools/support_status/support_status.cpp b/doc/src/docutils/tools/support_status/support_status.cpp index 4d07a74728..2105e6ac24 100644 --- a/doc/src/docutils/tools/support_status/support_status.cpp +++ b/doc/src/docutils/tools/support_status/support_status.cpp @@ -20,41 +20,8 @@ #include #define BOOST_GEOMETRY_IMPLEMENTATION_STATUS_BUILD true -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include #include "text_outputter.hpp" #include "qbk_outputter.hpp" @@ -101,7 +68,7 @@ typedef boost::mpl::vector< DECLARE_BINARY_ALGORITHM(append) DECLARE_UNARY_ALGORITHM(area) -DECLARE_BINARY_ALGORITHM(buffer) +// DECLARE_BINARY_ALGORITHM(buffer) // compilation error DECLARE_UNARY_ALGORITHM(centroid) DECLARE_UNARY_ALGORITHM(clear) DECLARE_BINARY_ALGORITHM(closest_points) @@ -128,7 +95,7 @@ DECLARE_UNARY_ALGORITHM(num_segments) DECLARE_BINARY_ALGORITHM(overlaps) DECLARE_UNARY_ALGORITHM(perimeter) DECLARE_UNARY_ALGORITHM(reverse) -DECLARE_UNARY_ALGORITHM(simplify) +// DECLARE_UNARY_ALGORITHM(simplify) // compilation error DECLARE_BINARY_ALGORITHM(transform) DECLARE_UNARY_ALGORITHM(unique) DECLARE_BINARY_ALGORITHM(within) @@ -243,7 +210,7 @@ void support_status() { test_binary_algorithm >, OutputFactory>("append"); test_unary_algorithm("area"); - test_binary_algorithm("buffer"); + // test_binary_algorithm("buffer"); test_unary_algorithm("centroid"); test_unary_algorithm("clear"); test_binary_algorithm("closest_points"); @@ -262,14 +229,15 @@ void support_status() test_unary_algorithm("is_simple"); test_unary_algorithm("is_valid"); test_unary_algorithm("length"); - test_binary_algorithm("line_interpolate"); + // Compilation error + // test_binary_algorithm("line_interpolate"); test_unary_algorithm("num_geometries"); test_unary_algorithm("num_interior_rings"); test_unary_algorithm("num_points"); test_binary_algorithm("overlaps"); test_unary_algorithm("perimeter"); test_unary_algorithm("reverse"); - test_unary_algorithm("simplify"); + // test_unary_algorithm("simplify"); test_binary_algorithm("transform"); test_unary_algorithm("unique"); test_binary_algorithm("within"); diff --git a/doc/src/docutils/tools/support_status/support_status.sln b/doc/src/docutils/tools/support_status/support_status.sln deleted file mode 100644 index 491a33ea6c..0000000000 --- a/doc/src/docutils/tools/support_status/support_status.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C++ Express 2010 -Project("{047EF2F6-2E37-11E1-91D6-C70F4924019B}") = "support_status", "support_status.vcxproj", "{72FDA9D6-899F-5B22-C919-4723D44FB2A0}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {72FDA9D6-899F-5B22-C919-4723D44FB2A0}.Debug|Win32.ActiveCfg = Debug|Win32 - {72FDA9D6-899F-5B22-C919-4723D44FB2A0}.Debug|Win32.Build.0 = Debug|Win32 - {72FDA9D6-899F-5B22-C919-4723D44FB2A0}.Release|Win32.ActiveCfg = Release|Win32 - {72FDA9D6-899F-5B22-C919-4723D44FB2A0}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/doc/src/docutils/tools/support_status/support_status.vcxproj b/doc/src/docutils/tools/support_status/support_status.vcxproj deleted file mode 100644 index 9d07493614..0000000000 --- a/doc/src/docutils/tools/support_status/support_status.vcxproj +++ /dev/null @@ -1,85 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - Win32Proj - - - - Application - - - Application - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - Debug\ - Debug\ - true - Release\ - Release\ - true - - - - Disabled - ../../../../../../..;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level3 - EditAndContinue - - - true - Console - MachineX86 - - - - - ../../../../../../..;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level3 - ProgramDatabase - - - true - Console - true - true - MachineX86 - - - - - - - - - \ No newline at end of file