mirror of https://github.com/CGAL/cgal
Allow classification package to be used without Boost IO Stream and Serialization
This commit is contained in:
parent
eee66c5ee7
commit
ed25fd2e04
|
|
@ -38,10 +38,12 @@
|
||||||
|
|
||||||
#include <CGAL/tags.h>
|
#include <CGAL/tags.h>
|
||||||
|
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
#include <boost/archive/text_iarchive.hpp>
|
#include <boost/archive/text_iarchive.hpp>
|
||||||
#include <boost/archive/text_oarchive.hpp>
|
#include <boost/archive/text_oarchive.hpp>
|
||||||
#include <boost/iostreams/filtering_stream.hpp>
|
#include <boost/iostreams/filtering_stream.hpp>
|
||||||
#include <boost/iostreams/filter/gzip.hpp>
|
#include <boost/iostreams/filter/gzip.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BOOST_MSVC
|
#ifdef BOOST_MSVC
|
||||||
# pragma warning(pop)
|
# pragma warning(pop)
|
||||||
|
|
@ -327,6 +329,9 @@ public:
|
||||||
[Serialization](https://www.boost.org/libs/serialization) and
|
[Serialization](https://www.boost.org/libs/serialization) and
|
||||||
[IO Streams](https://www.boost.org/libs/iostreams) (compiled with the GZIP dependency).
|
[IO Streams](https://www.boost.org/libs/iostreams) (compiled with the GZIP dependency).
|
||||||
*/
|
*/
|
||||||
|
#if defined(DOXYGEN_RUNNING) || \
|
||||||
|
(defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && \
|
||||||
|
defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION))
|
||||||
static void convert_deprecated_configuration_to_new_format (std::istream& input, std::ostream& output)
|
static void convert_deprecated_configuration_to_new_format (std::istream& input, std::ostream& output)
|
||||||
{
|
{
|
||||||
Label_set dummy_labels;
|
Label_set dummy_labels;
|
||||||
|
|
@ -335,10 +340,13 @@ public:
|
||||||
classifier.load_deprecated_configuration(input);
|
classifier.load_deprecated_configuration(input);
|
||||||
classifier.save_configuration(output);
|
classifier.save_configuration(output);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \cond SKIP_IN_MANUAL
|
/// \cond SKIP_IN_MANUAL
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && \
|
||||||
|
defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
void load_deprecated_configuration (std::istream& input)
|
void load_deprecated_configuration (std::istream& input)
|
||||||
{
|
{
|
||||||
CGAL::internal::liblearning::RandomForest::ForestParams params;
|
CGAL::internal::liblearning::RandomForest::ForestParams params;
|
||||||
|
|
@ -350,7 +358,7 @@ public:
|
||||||
boost::archive::text_iarchive ias(ins);
|
boost::archive::text_iarchive ias(ins);
|
||||||
ias >> BOOST_SERIALIZATION_NVP(*m_rfc);
|
ias >> BOOST_SERIALIZATION_NVP(*m_rfc);
|
||||||
}
|
}
|
||||||
/// \endcond
|
#endif
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,9 @@
|
||||||
#endif
|
#endif
|
||||||
#include <boost/random/uniform_01.hpp>
|
#include <boost/random/uniform_01.hpp>
|
||||||
#include <boost/random/normal_distribution.hpp>
|
#include <boost/random/normal_distribution.hpp>
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
#include <boost/serialization/vector.hpp>
|
#include <boost/serialization/vector.hpp>
|
||||||
|
#endif
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/make_shared.hpp>
|
#include <boost/make_shared.hpp>
|
||||||
|
|
@ -93,6 +95,7 @@ struct ForestParams {
|
||||||
min_samples_per_node(5),
|
min_samples_per_node(5),
|
||||||
sample_reduction(0.368f)
|
sample_reduction(0.368f)
|
||||||
{}
|
{}
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
|
|
@ -105,6 +108,7 @@ struct ForestParams {
|
||||||
ar & BOOST_SERIALIZATION_NVP(min_samples_per_node);
|
ar & BOOST_SERIALIZATION_NVP(min_samples_per_node);
|
||||||
ar & BOOST_SERIALIZATION_NVP(sample_reduction);
|
ar & BOOST_SERIALIZATION_NVP(sample_reduction);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write (std::ostream& os)
|
void write (std::ostream& os)
|
||||||
{
|
{
|
||||||
|
|
@ -173,6 +177,7 @@ struct QuadraticSplitter {
|
||||||
data_points[i_sample] = std::make_pair(sample_fval, sample_class);
|
data_points[i_sample] = std::make_pair(sample_fval, sample_class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
|
|
@ -180,6 +185,7 @@ struct QuadraticSplitter {
|
||||||
ar & BOOST_SERIALIZATION_NVP(w);
|
ar & BOOST_SERIALIZATION_NVP(w);
|
||||||
ar & BOOST_SERIALIZATION_NVP(threshold);
|
ar & BOOST_SERIALIZATION_NVP(threshold);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LinearSplitter {
|
struct LinearSplitter {
|
||||||
|
|
@ -211,12 +217,14 @@ struct LinearSplitter {
|
||||||
data_points[i_sample] = std::make_pair(sample_fval, sample_class);
|
data_points[i_sample] = std::make_pair(sample_fval, sample_class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
ar & BOOST_SERIALIZATION_NVP(w);
|
ar & BOOST_SERIALIZATION_NVP(w);
|
||||||
ar & BOOST_SERIALIZATION_NVP(threshold);
|
ar & BOOST_SERIALIZATION_NVP(threshold);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AxisAlignedSplitter {
|
struct AxisAlignedSplitter {
|
||||||
|
|
@ -256,12 +264,14 @@ struct AxisAlignedSplitter {
|
||||||
data_points.push_back(std::make_pair(sample_fval, sample_class));
|
data_points.push_back(std::make_pair(sample_fval, sample_class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
ar & BOOST_SERIALIZATION_NVP(feature);
|
ar & BOOST_SERIALIZATION_NVP(feature);
|
||||||
ar & BOOST_SERIALIZATION_NVP(threshold);
|
ar & BOOST_SERIALIZATION_NVP(threshold);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write (std::ostream& os)
|
void write (std::ostream& os)
|
||||||
{
|
{
|
||||||
|
|
@ -274,7 +284,6 @@ struct AxisAlignedSplitter {
|
||||||
is.read((char*)(&feature), sizeof(int));
|
is.read((char*)(&feature), sizeof(int));
|
||||||
is.read((char*)(&threshold), sizeof(FeatureType));
|
is.read((char*)(&threshold), sizeof(FeatureType));
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AxisAlignedRandomSplitGenerator {
|
struct AxisAlignedRandomSplitGenerator {
|
||||||
|
|
|
||||||
|
|
@ -223,12 +223,14 @@ public:
|
||||||
return sum/trees.size();
|
return sum/trees.size();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /* version */)
|
void serialize(Archive& ar, unsigned /* version */)
|
||||||
{
|
{
|
||||||
ar & BOOST_SERIALIZATION_NVP(params);
|
ar & BOOST_SERIALIZATION_NVP(params);
|
||||||
ar & BOOST_SERIALIZATION_NVP(trees);
|
ar & BOOST_SERIALIZATION_NVP(trees);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write (std::ostream& os)
|
void write (std::ostream& os)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -97,11 +97,13 @@ public:
|
||||||
return std::make_pair(best_thresh, float(best_loss));
|
return std::make_pair(best_thresh, float(best_loss));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /* version */)
|
void serialize(Archive& ar, unsigned /* version */)
|
||||||
{
|
{
|
||||||
ar & boost::serialization::make_nvp("base", boost::serialization::base_object< Node< NodeGini<Splitter>, ForestParams, Splitter > >(*this));
|
ar & boost::serialization::make_nvp("base", boost::serialization::base_object< Node< NodeGini<Splitter>, ForestParams, Splitter > >(*this));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,15 @@
|
||||||
#define CGAL_INTERNAL_LIBLEARNING_RANDOMFORESTS_NODE_H
|
#define CGAL_INTERNAL_LIBLEARNING_RANDOMFORESTS_NODE_H
|
||||||
#include "../dataview.h"
|
#include "../dataview.h"
|
||||||
#include "common-libraries.hpp"
|
#include "common-libraries.hpp"
|
||||||
|
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
#include <boost/serialization/scoped_ptr.hpp>
|
#include <boost/serialization/scoped_ptr.hpp>
|
||||||
#include <boost/serialization/vector.hpp>
|
#include <boost/serialization/vector.hpp>
|
||||||
|
#else
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <vector>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if VERBOSE_NODE_LEARNING
|
#if VERBOSE_NODE_LEARNING
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -228,6 +235,7 @@ public:
|
||||||
right->train(samples, labels, sample_idxes + offset_right, n_samples_right, split_generator, gen);
|
right->train(samples, labels, sample_idxes + offset_right, n_samples_right, split_generator, gen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
|
|
@ -243,6 +251,7 @@ public:
|
||||||
ar & BOOST_SERIALIZATION_NVP(right);
|
ar & BOOST_SERIALIZATION_NVP(right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write (std::ostream& os)
|
void write (std::ostream& os)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,11 @@
|
||||||
#define CGAL_INTERNAL_LIBLEARNING_RANDOMFOREST_TREE_H
|
#define CGAL_INTERNAL_LIBLEARNING_RANDOMFOREST_TREE_H
|
||||||
#include "../dataview.h"
|
#include "../dataview.h"
|
||||||
#include "common-libraries.hpp"
|
#include "common-libraries.hpp"
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
#include <boost/serialization/scoped_ptr.hpp>
|
#include <boost/serialization/scoped_ptr.hpp>
|
||||||
|
#else
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace CGAL { namespace internal {
|
namespace CGAL { namespace internal {
|
||||||
|
|
||||||
|
|
@ -115,12 +119,15 @@ public:
|
||||||
return n_common/sqrt((n_common + n_1)*(n_common + n_2));
|
return n_common/sqrt((n_common + n_1)*(n_common + n_2));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
template <typename Archive>
|
template <typename Archive>
|
||||||
void serialize(Archive& ar, unsigned /*version*/)
|
void serialize(Archive& ar, unsigned /*version*/)
|
||||||
{
|
{
|
||||||
ar & BOOST_SERIALIZATION_NVP(params);
|
ar & BOOST_SERIALIZATION_NVP(params);
|
||||||
ar & BOOST_SERIALIZATION_NVP(root_node);
|
ar & BOOST_SERIALIZATION_NVP(root_node);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void write (std::ostream& os)
|
void write (std::ostream& os)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ set(CGAL_target_use_Boost_IOStreams_included TRUE)
|
||||||
function(CGAL_target_use_Boost_IOStreams target)
|
function(CGAL_target_use_Boost_IOStreams target)
|
||||||
|
|
||||||
if( WIN32 )
|
if( WIN32 )
|
||||||
# to avoid a warning with old cmake
|
# to avoid a warning with old cmake
|
||||||
set(_Boost_BZIP2_HEADERS "boost/iostreams/filter/bzip2.hpp")
|
set(_Boost_BZIP2_HEADERS "boost/iostreams/filter/bzip2.hpp")
|
||||||
set(_Boost_ZLIB_HEADERS "boost/iostreams/filter/zlib.hpp")
|
set(_Boost_ZLIB_HEADERS "boost/iostreams/filter/zlib.hpp")
|
||||||
find_package( Boost OPTIONAL_COMPONENTS bzip2 zlib)
|
find_package( Boost OPTIONAL_COMPONENTS bzip2 zlib)
|
||||||
|
|
@ -19,7 +19,7 @@ function(CGAL_target_use_Boost_IOStreams target)
|
||||||
else()
|
else()
|
||||||
target_link_libraries(${target} PUBLIC ${Boost_IOSTREAMS_LIBRARY})
|
target_link_libraries(${target} PUBLIC ${Boost_IOSTREAMS_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if( WIN32 )
|
if( WIN32 )
|
||||||
if (Boost_ZLIB_FOUND AND Boost_BZIP2_FOUND)
|
if (Boost_ZLIB_FOUND AND Boost_BZIP2_FOUND)
|
||||||
target_link_libraries(${target} PUBLIC ${Boost_ZLIB_LIBRARY} ${Boost_BZIP2_LIBRARY})
|
target_link_libraries(${target} PUBLIC ${Boost_ZLIB_LIBRARY} ${Boost_BZIP2_LIBRARY})
|
||||||
|
|
@ -36,4 +36,6 @@ function(CGAL_target_use_Boost_IOStreams target)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_BOOST_IOSTREAMS)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,6 @@ function(CGAL_target_use_Boost_Serialization target)
|
||||||
target_link_libraries(${target} PUBLIC ${Boost_SERIALIZATION_LIBRARY})
|
target_link_libraries(${target} PUBLIC ${Boost_SERIALIZATION_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
target_compile_options( ${target} PUBLIC -DCGAL_LINKED_WITH_BOOST_SERIALIZATION)
|
||||||
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue