Use boost::range_value / boost::property_traits

This commit is contained in:
Mael Rouxel-Labbé 2020-06-23 12:05:26 +02:00
parent 34ddacd5e7
commit 0003c95223
7 changed files with 43 additions and 30 deletions

View File

@ -17,6 +17,8 @@
#include <CGAL/boost/graph/iterator.h>
#include <boost/range/value_type.hpp>
#ifdef CGAL_LINKED_WITH_3MF
#include <Model/COM/NMR_DLLInterfaces.h>
#endif
@ -406,9 +408,10 @@ int read_triangle_soups_from_3mf(const std::string& fname,
ColorRanges& all_colors,
std::vector<std::string>& names)
{
typedef typename PointRanges::value_type PointRange;
typedef typename PolygonRanges::value_type PolygonRange;
typedef typename ColorRanges::value_type ColorRange;
typedef typename boost::range_value<PointRanges>::type PointRange;
typedef typename boost::range_value<PolygonRanges>::type PolygonRange;
typedef typename boost::range_value<ColorRanges>::type ColorRange;
return read_from_3mf<PointRanges,PolygonRanges,ColorRanges,
PointRange, PolygonRange, ColorRange>
(fname, all_points, all_polygons, all_colors, names,

View File

@ -12,13 +12,16 @@
#ifndef CGAL_IO_READ_3MF_H
#define CGAL_IO_READ_3MF_H
#ifdef CGAL_LINKED_WITH_3MF
#include <CGAL/IO/Color.h>
#include <CGAL/Kernel_traits.h>
#include <boost/range/value_type.hpp>
#ifdef CGAL_LINKED_WITH_3MF
#include <Model/COM/NMR_DLLInterfaces.h>
#endif
#include <algorithm>
#include <functional>
@ -26,6 +29,8 @@
#include <string>
#include <vector>
#ifdef CGAL_LINKED_WITH_3MF
namespace CGAL {
namespace transform_nmr_internal {
@ -54,9 +59,9 @@ bool extract_soups (NMR::PLib3MFModelMeshObject *pMeshObject,
ColorRange& colors,
std::string& name)
{
typedef typename PointRange::value_type Point_3;
typedef typename PolygonRange::value_type Polygon;
typedef typename Kernel_traits<Point_3>::Kernel Kernel;
typedef typename boost::range_value<PointRange>::type Point_3;
typedef typename boost::range_value<PolygonRange>::type Polygon;
typedef typename Kernel_traits<Point_3>::Kernel Kernel;
HRESULT hResult;
DWORD nNeededChars;

View File

@ -43,14 +43,15 @@ bool read_GOCAD(std::istream& is,
const CGAL_BGL_NP_CLASS&,
bool verbose = true)
{
typedef typename boost::range_value<PointRange>::type Point;
typedef typename boost::range_value<PolygonRange>::type Poly;
if(!is)
{
if(verbose)
std::cerr<<"File doesn't exist."<<std::endl;
return false;
}
typedef typename boost::range_value<PointRange>::type Point;
typedef typename boost::range_value<PolygonRange>::type Poly;
set_ascii_mode(is); // GOCAD is ASCII only

View File

@ -49,9 +49,8 @@ bool read_OBJ(std::istream& is,
std::cerr<<"File doesn't exist."<<std::endl;
return false;
}
typedef typename boost::range_value<PointRange>::type Point;
typedef typename CGAL::Kernel_traits<Point>::Kernel Kernel;
typedef typename Kernel::Vector_3 Normal;
set_ascii_mode(is); // obj is ASCII only

View File

@ -20,6 +20,7 @@
#include <CGAL/property_map.h>
#include <CGAL/iterator.h>
#include <boost/range/value_type.hpp>
#include <boost/utility/enable_if.hpp>
#include <fstream>
@ -50,12 +51,10 @@ bool read_PLY(std::istream& is,
ColorOutputIterator vc_out,
HUVOutputIterator huvs_out,
bool verbose = true,
typename std::enable_if<
CGAL::is_iterator<ColorOutputIterator>::value
>::type* =0)
typename std::enable_if<CGAL::is_iterator<ColorOutputIterator>::value>::type* = nullptr)
{
typedef typename PointRange::value_type Point_3;
typedef CGAL::Color Color_rgb;
typedef typename boost::range_value<PointRange>::type Point_3;
typedef CGAL::Color Color_rgb;
if(!is.good())
{
@ -300,7 +299,8 @@ bool read_PLY(std::istream& is,
#endif
)
{
typedef typename PointRange::value_type Point_3;
typedef typename boost::range_value<PointRange>::type Point_3;
if(!is.good())
{
if(verbose)
@ -454,8 +454,8 @@ bool write_PLY(std::ostream& out,
#endif
)
{
typedef typename PointRange::value_type Point_3;
typedef typename PolygonRange::value_type Polygon_3;
typedef typename boost::range_value<PointRange>::type Point_3;
typedef typename boost::range_value<PolygonRange>::type Polygon_3;
if(!out.good())
{

View File

@ -17,6 +17,7 @@
#include <CGAL/is_iterator.h>
#include <boost/cstdint.hpp>
#include <boost/range/value_type.hpp>
#include <iostream>
#include <sstream>
@ -71,10 +72,9 @@ template <> struct Convert_FT<float> { typedef float type; };
template <typename PointOrVectorMap>
struct Get_FT_from_map
{
typedef typename Convert_FT
<typename Kernel_traits
<typename boost::property_traits
<PointOrVectorMap>::value_type>::Kernel::FT>::type type;
typedef typename Convert_FT<typename Kernel_traits<
typename boost::property_traits<
PointOrVectorMap>::value_type>::Kernel::FT>::type type;
};
template <typename PointMap>
@ -630,7 +630,8 @@ template <typename OutputValueType,
void process_properties(PLY_element& element, OutputValueType& new_element,
std::tuple<PropertyMap, Constructor, PLY_property<T>...>&& current)
{
typedef typename PropertyMap::value_type PmapValueType;
typedef typename boost::property_traits<PropertyMap>::value_type PmapValueType;
std::tuple<T...> values;
Filler<sizeof...(T)-1>::fill(element, values, current);
PmapValueType new_value = call_functor<PmapValueType>(std::get<1>(current), values);
@ -648,7 +649,8 @@ void process_properties(PLY_element& element, OutputValueType& new_element,
NextPropertyBinder&& next,
PropertyMapBinders&& ... properties)
{
typedef typename PropertyMap::value_type PmapValueType;
typedef typename boost::property_traits<PropertyMap>::value_type PmapValueType;
std::tuple<T...> values;
Filler<sizeof...(T)-1>::fill(element, values, current);
PmapValueType new_value = call_functor<PmapValueType>(std::get<1>(current), values);
@ -692,8 +694,9 @@ bool read_PLY_faces(std::istream& in,
CGAL::is_iterator<ColorOutputIterator>::value
>::type* =0)
{
typedef typename PolygonRange::value_type Polygon_3;
typedef CGAL::Color Color_rgb;
typedef typename boost::range_value<PolygonRange>::type Polygon_3;
typedef CGAL::Color Color_rgb;
bool has_colors = false;
std::string rtag = "r", gtag = "g", btag = "b";

View File

@ -136,7 +136,7 @@ void simple_property_write(std::ostream& stream,
stream << no_char_character(get(map.first, *it));
else
{
typename PropertyMap::value_type value = get(map.first, *it);
typename boost::property_traits<PropertyMap>::reference value = get(map.first, *it);
stream.write(reinterpret_cast<char*>(&value), sizeof(value));
}
}
@ -255,7 +255,7 @@ public:
template <typename Index,
typename PropertyMap,
typename Type = typename PropertyMap::value_type>
typename Type = typename boost::property_traits<PropertyMap>::value_type>
class Simple_property_printer
: public Abstract_property_printer<Index>
{
@ -279,8 +279,10 @@ template <typename Index, typename PropertyMap>
class Char_property_printer
: public Abstract_property_printer<Index>
{
typedef typename PropertyMap::value_type Type;
typedef typename boost::property_traits<PropertyMap>::value_type Type;
PropertyMap m_pmap;
public:
Char_property_printer(const PropertyMap& pmap) : m_pmap(pmap) { }