Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2019-07-04 23:52:33 +0300
committerbubnikv <bubnikv@gmail.com>2019-07-04 23:52:33 +0300
commit211d1ee1e32f8eb2d68173323208a9dd660689bc (patch)
treef8e5ebc9132a0d272b878e7e4d77d55ca1d98690 /src
parent9fd0c55eb86110182b4cf53ac93e3fb802cbd35b (diff)
Trying to make all C++ of the platforms happy.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/libslic3r/ObjectID.hpp3
-rw-r--r--src/slic3r/Utils/UndoRedo.cpp29
3 files changed, 18 insertions, 16 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 61faa0571..3ee46289a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -75,7 +75,7 @@ if (NOT MSVC)
set_target_properties(PrusaSlicer PROPERTIES OUTPUT_NAME "prusa-slicer")
endif ()
-target_link_libraries(PrusaSlicer libslic3r)
+target_link_libraries(PrusaSlicer libslic3r cereal)
if (APPLE)
# add_compile_options(-stdlib=libc++)
# add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE)
diff --git a/src/libslic3r/ObjectID.hpp b/src/libslic3r/ObjectID.hpp
index fe0bf465f..df16f9202 100644
--- a/src/libslic3r/ObjectID.hpp
+++ b/src/libslic3r/ObjectID.hpp
@@ -69,7 +69,6 @@ protected:
void assign_new_unique_ids_recursive() { this->set_new_unique_id(); }
private:
- friend class UndoRedo::StackImpl;
ObjectID m_id;
static inline ObjectID generate_new_id() { return ObjectID(++ s_last_id); }
@@ -77,9 +76,9 @@ private:
friend ObjectID wipe_tower_object_id();
friend ObjectID wipe_tower_instance_id();
- friend class Slic3r::UndoRedo::StackImpl;
friend class cereal::access;
+ friend class Slic3r::UndoRedo::StackImpl;
template<class Archive> void serialize(Archive &ar) { ar(m_id); }
ObjectBase(const ObjectID id) : m_id(id) {}
template<class Archive> static void load_and_construct(Archive & ar, cereal::construct<ObjectBase> &construct) { ObjectID id; ar(id); construct(id); }
diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp
index 11fceee0a..d5da0c618 100644
--- a/src/slic3r/Utils/UndoRedo.cpp
+++ b/src/slic3r/Utils/UndoRedo.cpp
@@ -153,19 +153,7 @@ public:
bool is_serialized() const { return m_shared_object.get() == nullptr; }
const std::string& serialized_data() const { return m_serialized; }
- std::shared_ptr<const T>& shared_ptr(StackImpl &stack) {
- if (m_shared_object.get() == nullptr && ! this->m_serialized.empty()) {
- // Deserialize the object.
- std::istringstream iss(m_serialized);
- {
- Slic3r::UndoRedo::InputArchive archive(stack, iss);
- std::unique_ptr<std::remove_const<T>::type> mesh(new std::remove_const<T>::type());
- archive(*mesh.get());
- m_shared_object = std::move(mesh);
- }
- }
- return m_shared_object;
- }
+ std::shared_ptr<const T>& shared_ptr(StackImpl &stack);
#ifdef SLIC3R_UNDOREDO_DEBUG
std::string format() override {
@@ -560,6 +548,21 @@ namespace cereal
namespace Slic3r {
namespace UndoRedo {
+template<typename T> std::shared_ptr<const T>& ImmutableObjectHistory<T>::shared_ptr(StackImpl &stack)
+{
+ if (m_shared_object.get() == nullptr && ! this->m_serialized.empty()) {
+ // Deserialize the object.
+ std::istringstream iss(m_serialized);
+ {
+ Slic3r::UndoRedo::InputArchive archive(stack, iss);
+ std::unique_ptr<std::remove_const<T>::type> mesh(new std::remove_const<T>::type());
+ archive(*mesh.get());
+ m_shared_object = std::move(mesh);
+ }
+ }
+ return m_shared_object;
+}
+
template<typename T, typename T_AS> ObjectID StackImpl::save_mutable_object(const T &object)
{
// First find or allocate a history stack for the ObjectID of this object instance.