mirror of
https://github.com/boostorg/geometry.git
synced 2025-05-12 05:51:47 +00:00
Added optional flag to base iterator
Added closing iterator Added closeable_view [SVN r61760]
This commit is contained in:
parent
7380fda632
commit
d6d33fbd38
@ -18,11 +18,16 @@
|
|||||||
namespace boost { namespace geometry { namespace detail { namespace iterators
|
namespace boost { namespace geometry { namespace detail { namespace iterators
|
||||||
{
|
{
|
||||||
|
|
||||||
template <typename T, typename Iterator>
|
template
|
||||||
struct iterator_base :
|
<
|
||||||
public boost::iterator_adaptor
|
typename DerivedClass,
|
||||||
|
typename Iterator,
|
||||||
|
typename TraversalFlag = boost::bidirectional_traversal_tag
|
||||||
|
>
|
||||||
|
struct iterator_base
|
||||||
|
: public boost::iterator_adaptor
|
||||||
<
|
<
|
||||||
T,
|
DerivedClass,
|
||||||
Iterator,
|
Iterator,
|
||||||
boost::use_default,
|
boost::use_default,
|
||||||
typename boost::mpl::if_
|
typename boost::mpl::if_
|
||||||
@ -32,7 +37,7 @@ struct iterator_base :
|
|||||||
typename boost::iterator_traversal<Iterator>::type,
|
typename boost::iterator_traversal<Iterator>::type,
|
||||||
boost::random_access_traversal_tag
|
boost::random_access_traversal_tag
|
||||||
>,
|
>,
|
||||||
boost::bidirectional_traversal_tag,
|
TraversalFlag,
|
||||||
boost::use_default
|
boost::use_default
|
||||||
>::type
|
>::type
|
||||||
>
|
>
|
||||||
|
98
include/boost/geometry/iterators/closing_iterator.hpp
Normal file
98
include/boost/geometry/iterators/closing_iterator.hpp
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
|
//
|
||||||
|
// Copyright Barend Gehrels 2010, 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)
|
||||||
|
|
||||||
|
#ifndef BOOST_GEOMETRY_ITERATORS_CLOSING_ITERATOR_HPP
|
||||||
|
#define BOOST_GEOMETRY_ITERATORS_CLOSING_ITERATOR_HPP
|
||||||
|
|
||||||
|
#include <boost/range.hpp>
|
||||||
|
#include <boost/iterator.hpp>
|
||||||
|
#include <boost/iterator/iterator_adaptor.hpp>
|
||||||
|
#include <boost/iterator/iterator_categories.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/iterators/base.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
namespace boost { namespace geometry
|
||||||
|
{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Iterator which iterates through a range, but adds first element at end of the range
|
||||||
|
\tparam Range range on which this class is based on
|
||||||
|
\ingroup iterators
|
||||||
|
\note Use with "closing_iterator<Range> or "closing_iterator<Range const>
|
||||||
|
to get non-const / const behaviour
|
||||||
|
\note This class is normally used from "closeable_view" if Close==true
|
||||||
|
*/
|
||||||
|
template <typename Range>
|
||||||
|
struct closing_iterator
|
||||||
|
: public detail::iterators::iterator_base
|
||||||
|
<
|
||||||
|
closing_iterator<Range>,
|
||||||
|
typename boost::range_iterator<Range>::type,
|
||||||
|
boost::forward_traversal_tag
|
||||||
|
>
|
||||||
|
{
|
||||||
|
friend class boost::iterator_core_access;
|
||||||
|
|
||||||
|
explicit inline closing_iterator(Range& range)
|
||||||
|
: m_range(range)
|
||||||
|
, m_beyond(false)
|
||||||
|
, m_end(boost::end(m_range))
|
||||||
|
{
|
||||||
|
this->base_reference() = boost::begin(m_range);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructor to indicate the end of a range
|
||||||
|
explicit inline closing_iterator(Range& range, bool)
|
||||||
|
: m_range(range)
|
||||||
|
, m_beyond(true)
|
||||||
|
, m_end(boost::end(m_range))
|
||||||
|
{
|
||||||
|
this->base_reference() = m_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
//inline bool equal(closing_iterator const& other) const
|
||||||
|
inline bool operator==(closing_iterator const& other) const
|
||||||
|
{
|
||||||
|
return this->base() == other->base()
|
||||||
|
&& this->m_beyond == other->m_beyond;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
inline void increment()
|
||||||
|
{
|
||||||
|
if (m_beyond)
|
||||||
|
{
|
||||||
|
this->base_reference() = m_end;
|
||||||
|
}
|
||||||
|
else if (this->base() != m_end)
|
||||||
|
{
|
||||||
|
(this->base_reference())++;
|
||||||
|
|
||||||
|
if (this->base() == m_end)
|
||||||
|
{
|
||||||
|
// Now beyond last position -> set to "begin" again
|
||||||
|
// and set flag "beyond" such that next increment
|
||||||
|
// will finish traversal
|
||||||
|
this->base_reference() = boost::begin(m_range);
|
||||||
|
m_beyond = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Range& m_range;
|
||||||
|
bool m_beyond;
|
||||||
|
typename boost::range_iterator<Range>::type m_end;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}} // namespace boost::geometry
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BOOST_GEOMETRY_ITERATORS_CLOSING_ITERATOR_HPP
|
74
include/boost/geometry/util/closeable_view.hpp
Normal file
74
include/boost/geometry/util/closeable_view.hpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
|
//
|
||||||
|
// Copyright Barend Gehrels 2010, 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)
|
||||||
|
|
||||||
|
#ifndef BOOST_GEOMETRY_UTIL_CLOSEABLE_VIEW_HPP
|
||||||
|
#define BOOST_GEOMETRY_UTIL_CLOSEABLE_VIEW_HPP
|
||||||
|
|
||||||
|
|
||||||
|
#include <boost/range.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/core/ring_type.hpp>
|
||||||
|
#include <boost/geometry/core/tag.hpp>
|
||||||
|
#include <boost/geometry/core/tags.hpp>
|
||||||
|
#include <boost/geometry/iterators/closing_iterator.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
namespace boost { namespace geometry
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Range, bool Close>
|
||||||
|
struct closeable_view {};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Range>
|
||||||
|
struct closeable_view<Range, false>
|
||||||
|
{
|
||||||
|
closeable_view(Range& r)
|
||||||
|
: m_range(r)
|
||||||
|
{}
|
||||||
|
|
||||||
|
typedef typename boost::range_iterator<Range const>::type const_iterator;
|
||||||
|
typedef typename boost::range_iterator<Range>::type iterator;
|
||||||
|
|
||||||
|
const_iterator begin() const { return boost::begin(m_range); }
|
||||||
|
const_iterator end() const { return boost::end(m_range); }
|
||||||
|
|
||||||
|
iterator begin() { return boost::begin(m_range); }
|
||||||
|
iterator end() { return boost::end(m_range); }
|
||||||
|
private :
|
||||||
|
Range& m_range;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Range>
|
||||||
|
struct closeable_view<Range, true>
|
||||||
|
{
|
||||||
|
closeable_view(Range& r)
|
||||||
|
: m_range(r)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
typedef closing_iterator<Range> iterator;
|
||||||
|
typedef closing_iterator<Range const> const_iterator;
|
||||||
|
|
||||||
|
const_iterator begin() const { return const_iterator(m_range); }
|
||||||
|
const_iterator end() const { return const_iterator(m_range, true); }
|
||||||
|
|
||||||
|
iterator begin() { return iterator(m_range); }
|
||||||
|
iterator end() { return iterator(m_range, true); }
|
||||||
|
private :
|
||||||
|
Range& m_range;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}} // namespace boost::geometry
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BOOST_GEOMETRY_UTIL_CLOSEABLE_VIEW_HPP
|
@ -9,6 +9,7 @@
|
|||||||
test-suite ggl-iterators
|
test-suite ggl-iterators
|
||||||
:
|
:
|
||||||
[ run circular_iterator.cpp ]
|
[ run circular_iterator.cpp ]
|
||||||
|
[ run closing_iterator.cpp ]
|
||||||
[ run ever_circling_iterator.cpp ]
|
[ run ever_circling_iterator.cpp ]
|
||||||
[ run segment_iterator.cpp ]
|
[ run segment_iterator.cpp ]
|
||||||
;
|
;
|
||||||
|
90
test/iterators/closing_iterator.cpp
Normal file
90
test/iterators/closing_iterator.cpp
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
// Boost.Geometry (aka GGL, Generic Geometry Library) test file
|
||||||
|
//
|
||||||
|
// Copyright Barend Gehrels 2007-2009, Geodan, Amsterdam, the Netherlands
|
||||||
|
// Copyright Bruno Lalande 2008, 2009
|
||||||
|
// 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 <algorithm>
|
||||||
|
#include <iterator>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <geometry_test_common.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/iterators/closing_iterator.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/core/coordinate_type.hpp>
|
||||||
|
#include <boost/geometry/extensions/gis/io/wkt/read_wkt.hpp>
|
||||||
|
#include <boost/geometry/geometries/cartesian2d.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Geometry>
|
||||||
|
void test_geometry(std::string const& wkt)
|
||||||
|
{
|
||||||
|
Geometry geometry;
|
||||||
|
boost::geometry::read_wkt(wkt, geometry);
|
||||||
|
typedef boost::geometry::closing_iterator<Geometry const> closing_iterator;
|
||||||
|
|
||||||
|
|
||||||
|
// 1. Test normal behaviour
|
||||||
|
{
|
||||||
|
closing_iterator it(geometry);
|
||||||
|
closing_iterator end(geometry, true);
|
||||||
|
|
||||||
|
std::ostringstream out;
|
||||||
|
for (; it != end; ++it)
|
||||||
|
{
|
||||||
|
out << " " << boost::geometry::get<0>(*it) << boost::geometry::get<1>(*it);
|
||||||
|
}
|
||||||
|
BOOST_CHECK_EQUAL(out.str(), " 11 14 44 41 11");
|
||||||
|
|
||||||
|
// All the following does NOT compile, and should NOT,
|
||||||
|
// 1) Because it is forward only:
|
||||||
|
//it--;
|
||||||
|
//--it;
|
||||||
|
// 2) Because it is not random access:
|
||||||
|
//it += 2;
|
||||||
|
//it = boost::begin(geometry);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 2: check copy behaviour
|
||||||
|
{
|
||||||
|
typedef typename boost::range_iterator<Geometry const>::type normal_iterator;
|
||||||
|
Geometry copy;
|
||||||
|
|
||||||
|
std::copy<closing_iterator>(
|
||||||
|
closing_iterator(geometry),
|
||||||
|
closing_iterator(geometry, true),
|
||||||
|
std::back_inserter(copy));
|
||||||
|
|
||||||
|
std::ostringstream out;
|
||||||
|
for (normal_iterator cit = boost::begin(copy); cit != boost::end(copy); ++cit)
|
||||||
|
{
|
||||||
|
out << " " << boost::geometry::get<0>(*cit) << boost::geometry::get<1>(*cit);
|
||||||
|
}
|
||||||
|
BOOST_CHECK_EQUAL(out.str(), " 11 14 44 41 11");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename P>
|
||||||
|
void test_all()
|
||||||
|
{
|
||||||
|
test_geometry<boost::geometry::linear_ring<P> >("POLYGON((1 1,1 4,4 4,4 1))");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int test_main(int, char* [])
|
||||||
|
{
|
||||||
|
test_all<boost::geometry::point_2d>();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
178
test/iterators/closing_iterator.vcproj
Normal file
178
test/iterators/closing_iterator.vcproj
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="closing_iterator"
|
||||||
|
ProjectGUID="{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}"
|
||||||
|
RootNamespace="closing_iterator"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)\closing_iterator"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
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"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
SubSystem="1"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
EmbedManifest="false"
|
||||||
|
/>
|
||||||
|
<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)\closing_iterator"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../../..;.."
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
SubSystem="1"
|
||||||
|
OptimizeReferences="2"
|
||||||
|
EnableCOMDATFolding="2"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
EmbedManifest="false"
|
||||||
|
/>
|
||||||
|
<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=".\closing_iterator.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
@ -8,6 +8,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "segment_iterator", "segment
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ggl_headers", "..\ggl_headers.vcproj", "{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ggl_headers", "..\ggl_headers.vcproj", "{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "closing_iterator", "closing_iterator.vcproj", "{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
@ -30,6 +32,10 @@ Global
|
|||||||
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Debug|Win32.Build.0 = Debug|Win32
|
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Release|Win32.ActiveCfg = Release|Win32
|
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Release|Win32.Build.0 = Release|Win32
|
{B3B37654-5AB4-49F3-A1D3-DFDE73EA5E1A}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{04C31A2D-BE88-4FDB-AFFE-EFDFFA9D9C39}.Release|Win32.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -12,4 +12,7 @@ test-suite ggl-util
|
|||||||
[ run for_each_coordinate.cpp ]
|
[ run for_each_coordinate.cpp ]
|
||||||
[ run select_most_precise.cpp ]
|
[ run select_most_precise.cpp ]
|
||||||
[ run write_dsv.cpp ]
|
[ run write_dsv.cpp ]
|
||||||
|
[ run reversible_view.cpp ]
|
||||||
|
[ run closeable_view.cpp ]
|
||||||
|
[ run reversible_closeable.cpp ]
|
||||||
;
|
;
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
ExceptionHandling="2"
|
ExceptionHandling="2"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
74
test/util/closeable_view.cpp
Normal file
74
test/util/closeable_view.cpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Boost.Geometry (aka GGL, Generic Geometry Library) test file
|
||||||
|
//
|
||||||
|
// Copyright Barend Gehrels 2010, 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 <algorithm>
|
||||||
|
#include <iterator>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <geometry_test_common.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/util/closeable_view.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/extensions/gis/io/wkt/read_wkt.hpp>
|
||||||
|
#include <boost/geometry/util/write_dsv.hpp>
|
||||||
|
#include <boost/geometry/geometries/cartesian2d.hpp>
|
||||||
|
#include <boost/geometry/geometries/adapted/tuple_cartesian.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
template <bool Close, typename Range>
|
||||||
|
void test_optionally_closing(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
typedef boost::geometry::closeable_view<Range const, Close> view_type;
|
||||||
|
typedef typename boost::range_iterator<view_type const>::type iterator;
|
||||||
|
|
||||||
|
view_type view(range);
|
||||||
|
|
||||||
|
bool first = true;
|
||||||
|
std::ostringstream out;
|
||||||
|
iterator end = boost::end(view);
|
||||||
|
for (iterator it = boost::begin(view); it != end; ++it, first = false)
|
||||||
|
{
|
||||||
|
out << (first ? "" : " ") << boost::geometry::dsv(*it);
|
||||||
|
}
|
||||||
|
BOOST_CHECK_EQUAL(out.str(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Geometry>
|
||||||
|
void test_geometry(std::string const& wkt,
|
||||||
|
std::string const& expected_false,
|
||||||
|
std::string const& expected_true)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
Geometry geo;
|
||||||
|
bg::read_wkt(wkt, geo);
|
||||||
|
|
||||||
|
test_optionally_closing<false>(geo, expected_false);
|
||||||
|
test_optionally_closing<true>(geo, expected_true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename P>
|
||||||
|
void test_all()
|
||||||
|
{
|
||||||
|
test_geometry<boost::geometry::linear_ring<P> >(
|
||||||
|
"POLYGON((1 1,1 4,4 4,4 1))",
|
||||||
|
"(1, 1) (1, 4) (4, 4) (4, 1)",
|
||||||
|
"(1, 1) (1, 4) (4, 4) (4, 1) (1, 1)");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int test_main(int, char* [])
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_all<bg::point_2d>();
|
||||||
|
test_all<bg::point<int, 2, bg::cs::cartesian> >();
|
||||||
|
test_all<boost::tuple<double, double> >();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
176
test/util/closeable_view.vcproj
Normal file
176
test/util/closeable_view.vcproj
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="closeable_view"
|
||||||
|
ProjectGUID="{5C40995A-B6FC-4C94-B552-0D80EC9E2049}"
|
||||||
|
RootNamespace="closeable_view"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)\closeable_view"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
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"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
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)\closeable_view"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../../..;.."
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
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=".\closeable_view.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
@ -46,6 +46,7 @@
|
|||||||
ExceptionHandling="2"
|
ExceptionHandling="2"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
ExceptionHandling="2"
|
ExceptionHandling="2"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
178
test/util/reversible_closeable.cpp
Normal file
178
test/util/reversible_closeable.cpp
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
// Boost.Geometry (aka GGL, Generic Geometry Library) test file
|
||||||
|
//
|
||||||
|
// Copyright Barend Gehrels 2010, 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 <algorithm>
|
||||||
|
#include <iterator>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <geometry_test_common.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/util/closeable_view.hpp>
|
||||||
|
#include <boost/geometry/util/reversible_view.hpp>
|
||||||
|
|
||||||
|
#include <boost/geometry/extensions/gis/io/wkt/read_wkt.hpp>
|
||||||
|
#include <boost/geometry/util/write_dsv.hpp>
|
||||||
|
#include <boost/geometry/geometries/cartesian2d.hpp>
|
||||||
|
#include <boost/geometry/geometries/adapted/tuple_cartesian.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
template <typename View, typename Range>
|
||||||
|
void test_option(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
typedef typename boost::range_iterator<View const>::type iterator;
|
||||||
|
|
||||||
|
View view(range);
|
||||||
|
|
||||||
|
bool first = true;
|
||||||
|
std::ostringstream out;
|
||||||
|
iterator end = boost::end(view);
|
||||||
|
for (iterator it = boost::begin(view); it != end; ++it, first = false)
|
||||||
|
{
|
||||||
|
out << (first ? "" : " ") << boost::geometry::dsv(*it);
|
||||||
|
}
|
||||||
|
BOOST_CHECK_EQUAL(out.str(), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <bool Close, boost::geometry::iterate_direction Direction, typename Range>
|
||||||
|
void test_close_reverse(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_option
|
||||||
|
<
|
||||||
|
bg::closeable_view
|
||||||
|
<
|
||||||
|
bg::reversible_view<Range const, Direction> const,
|
||||||
|
Close
|
||||||
|
>
|
||||||
|
>(range, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
This should NOT compile, or at least not instantiate
|
||||||
|
Use the code as above, so reversible_view should be nested inside closeable_view
|
||||||
|
|
||||||
|
template <boost::geometry::iterate_direction Direction, bool Close, typename Range>
|
||||||
|
void test_reverse_close(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_option
|
||||||
|
<
|
||||||
|
bg::reversible_view
|
||||||
|
<
|
||||||
|
bg::closeable_view<Range const, Close> const,
|
||||||
|
Direction
|
||||||
|
>
|
||||||
|
>(range, expected);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
template
|
||||||
|
<
|
||||||
|
boost::geometry::iterate_direction Direction1,
|
||||||
|
boost::geometry::iterate_direction Direction2,
|
||||||
|
typename Range
|
||||||
|
>
|
||||||
|
void test_reverse_reverse(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_option
|
||||||
|
<
|
||||||
|
bg::reversible_view
|
||||||
|
<
|
||||||
|
bg::reversible_view<Range const, Direction2> const,
|
||||||
|
Direction1
|
||||||
|
>
|
||||||
|
>(range, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
template
|
||||||
|
<
|
||||||
|
bool Close1,
|
||||||
|
bool Close2,
|
||||||
|
typename Range
|
||||||
|
>
|
||||||
|
void test_close_close(Range const& range, std::string const& expected)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_option
|
||||||
|
<
|
||||||
|
bg::closeable_view
|
||||||
|
<
|
||||||
|
bg::closeable_view<Range const, Close2> const,
|
||||||
|
Close1
|
||||||
|
>
|
||||||
|
>(range, expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename Geometry>
|
||||||
|
void test_geometry(std::string const& wkt,
|
||||||
|
std::string const& expected_1,
|
||||||
|
std::string const& expected_2,
|
||||||
|
std::string const& expected_3,
|
||||||
|
std::string const& expected_4,
|
||||||
|
std::string const& expected_cc
|
||||||
|
)
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
Geometry geo;
|
||||||
|
bg::read_wkt(wkt, geo);
|
||||||
|
|
||||||
|
test_close_reverse<false, bg::iterate_forward>(geo, expected_1);
|
||||||
|
test_close_reverse<true, bg::iterate_forward>(geo, expected_2);
|
||||||
|
test_close_reverse<false, bg::iterate_reverse>(geo, expected_3);
|
||||||
|
test_close_reverse<true, bg::iterate_reverse>(geo, expected_4);
|
||||||
|
|
||||||
|
/*
|
||||||
|
This should NOT compile on purpose
|
||||||
|
Because the closing_iterator can only be used forward
|
||||||
|
test_reverse_close<bg::iterate_forward, false>(geo, expected_1);
|
||||||
|
test_reverse_close<bg::iterate_forward, true>(geo, expected_2);
|
||||||
|
test_reverse_close<bg::iterate_reverse, false>(geo, expected_3);
|
||||||
|
test_reverse_close<bg::iterate_reverse, true>(geo, expected_4);
|
||||||
|
*/
|
||||||
|
|
||||||
|
test_reverse_reverse<bg::iterate_forward, bg::iterate_forward>(geo, expected_1);
|
||||||
|
test_reverse_reverse<bg::iterate_reverse, bg::iterate_reverse>(geo, expected_1);
|
||||||
|
|
||||||
|
test_close_close<false, false>(geo, expected_1);
|
||||||
|
test_close_close<true, false>(geo, expected_2);
|
||||||
|
test_close_close<false, true>(geo, expected_2);
|
||||||
|
|
||||||
|
// Does not compile - no assignment operator
|
||||||
|
// Ranges basically support nesting, but the closing iterator does not.
|
||||||
|
// It is not necessary for the closing iterator to do so.
|
||||||
|
|
||||||
|
//test_close_close<true, true>(geo, expected_cc);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <typename P>
|
||||||
|
void test_all()
|
||||||
|
{
|
||||||
|
test_geometry<boost::geometry::linear_ring<P> >(
|
||||||
|
"POLYGON((1 1,1 4,4 4,4 1))",
|
||||||
|
"(1, 1) (1, 4) (4, 4) (4, 1)",
|
||||||
|
"(1, 1) (1, 4) (4, 4) (4, 1) (1, 1)",
|
||||||
|
"(4, 1) (4, 4) (1, 4) (1, 1)",
|
||||||
|
"(4, 1) (4, 4) (1, 4) (1, 1) (4, 1)",
|
||||||
|
"(1, 1) (1, 4) (4, 4) (4, 1) (1, 1) (1, 1)" // closed twice, not used
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int test_main(int, char* [])
|
||||||
|
{
|
||||||
|
namespace bg = boost::geometry;
|
||||||
|
test_all<bg::point_2d>();
|
||||||
|
test_all<bg::point<int, 2, bg::cs::cartesian> >();
|
||||||
|
test_all<boost::tuple<double, double> >();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
176
test/util/reversible_closeable.vcproj
Normal file
176
test/util/reversible_closeable.vcproj
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="reversible_closeable"
|
||||||
|
ProjectGUID="{AAA72638-34CD-4A34-8329-984DFC766E24}"
|
||||||
|
RootNamespace="reversible_closeable"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)\reversible_closeable"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
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"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
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)\reversible_closeable"
|
||||||
|
ConfigurationType="1"
|
||||||
|
InheritedPropertySheets="..\boost.vsprops"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../../..;.."
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||||
|
ExceptionHandling="2"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
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=".\reversible_closeable.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
@ -47,6 +47,7 @@
|
|||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
ExceptionHandling="2"
|
ExceptionHandling="2"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -12,6 +12,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "as_range", "as_range.vcproj
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reversible_view", "reversible_view.vcproj", "{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reversible_view", "reversible_view.vcproj", "{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "closeable_view", "closeable_view.vcproj", "{5C40995A-B6FC-4C94-B552-0D80EC9E2049}"
|
||||||
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "reversible_closeable", "reversible_closeable.vcproj", "{AAA72638-34CD-4A34-8329-984DFC766E24}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
@ -42,6 +46,14 @@ Global
|
|||||||
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Debug|Win32.Build.0 = Debug|Win32
|
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.ActiveCfg = Release|Win32
|
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.Build.0 = Release|Win32
|
{BFB08FEE-76D6-4F3D-9184-BE03CC3F7968}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{5C40995A-B6FC-4C94-B552-0D80EC9E2049}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{AAA72638-34CD-4A34-8329-984DFC766E24}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{AAA72638-34CD-4A34-8329-984DFC766E24}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{AAA72638-34CD-4A34-8329-984DFC766E24}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{AAA72638-34CD-4A34-8329-984DFC766E24}.Release|Win32.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
ExceptionHandling="2"
|
ExceptionHandling="2"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
|
DebugInformationFormat="1"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user