Remove boost dependency
parent
4d93f5c3b7
commit
d7a3bc7db8
|
@ -86,23 +86,6 @@ macx {
|
|||
|
||||
RESOURCES += resources.qrc
|
||||
|
||||
DEFINES += BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE
|
||||
win32 {
|
||||
isEmpty(BOOST_INCLUDEDIR) {
|
||||
BOOST_INCLUDEDIR = $$(BOOST_INCLUDEDIR)
|
||||
}
|
||||
isEmpty(BOOST_INCLUDEDIR) {
|
||||
error("No BOOST_INCLUDEDIR define found in environment variables")
|
||||
}
|
||||
}
|
||||
macx {
|
||||
BOOST_INCLUDEDIR = /usr/local/opt/boost/include
|
||||
}
|
||||
unix:!macx {
|
||||
BOOST_INCLUDEDIR = /usr/local/include
|
||||
}
|
||||
INCLUDEPATH += $$BOOST_INCLUDEDIR
|
||||
|
||||
INCLUDEPATH += ../
|
||||
INCLUDEPATH += ../third_party
|
||||
INCLUDEPATH += ../third_party/rapidxml-1.13
|
||||
|
@ -262,6 +245,7 @@ HEADERS += ../dust3d/base/vector3.h
|
|||
SOURCES += ../dust3d/base/vector3.cc
|
||||
HEADERS += ../dust3d/base/vector2.h
|
||||
HEADERS += ../dust3d/base/uuid.h
|
||||
SOURCES += ../dust3d/base/uuid.cc
|
||||
HEADERS += ../dust3d/mesh/box_mesh.h
|
||||
SOURCES += ../dust3d/mesh/box_mesh.cc
|
||||
HEADERS += ../dust3d/mesh/centripetal_catmull_rom_spline.h
|
||||
|
|
|
@ -1297,7 +1297,7 @@ void DocumentWindow::showCutFaceSettingPopup(const QPoint &globalPos, std::set<d
|
|||
buttons.resize(cutFaceList.size());
|
||||
for (size_t i = 0; i < cutFaceList.size(); ++i) {
|
||||
QString cutFaceString = cutFaceList[i];
|
||||
dust3d::CutFace cutFace;
|
||||
dust3d::CutFace cutFace = dust3d::CutFace::Quad;
|
||||
dust3d::Uuid cutFacePartId(cutFaceString.toUtf8().constData());
|
||||
QPushButton *button = new QPushButton;
|
||||
button->setIconSize(QSize(Theme::toolIconSize * 0.75, Theme::toolIconSize * 0.75));
|
||||
|
|
|
@ -67,7 +67,7 @@ public:
|
|||
return m_data[0];
|
||||
}
|
||||
|
||||
inline const double right() const
|
||||
inline double right() const
|
||||
{
|
||||
return left() + width();
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ public:
|
|||
return m_data[1];
|
||||
}
|
||||
|
||||
inline const double bottom() const
|
||||
inline double bottom() const
|
||||
{
|
||||
return top() + height();
|
||||
}
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <boost/algorithm/string/join.hpp>
|
||||
|
||||
#include <numeric>
|
||||
#include <dust3d/base/string.h>
|
||||
|
||||
namespace dust3d
|
||||
|
@ -30,7 +30,10 @@ namespace String
|
|||
|
||||
std::string join(const std::vector<std::string> &stringList, const char *separator)
|
||||
{
|
||||
return boost::algorithm::join(stringList, separator);
|
||||
return std::accumulate(stringList.begin(), stringList.end(), std::string(),
|
||||
[=](const std::string &a, const std::string &b) -> std::string {
|
||||
return a + (a.length() > 0 ? separator : "") + b;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ inline std::string valueOrEmpty(const std::map<std::string, std::string> &map, c
|
|||
return it->second;
|
||||
}
|
||||
|
||||
static bool isTrue(const std::string &string)
|
||||
inline bool isTrue(const std::string &string)
|
||||
{
|
||||
return "true" == string || "True" == string || "1" == string;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2021 Jeremy HU <jeremy-at-dust3d dot org>. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <dust3d/base/uuid.h>
|
||||
|
||||
namespace dust3d
|
||||
{
|
||||
|
||||
Uuid::RandomGenerator *Uuid::m_generator = new Uuid::RandomGenerator;
|
||||
|
||||
} // namespace dust3d
|
|
@ -23,12 +23,10 @@
|
|||
#ifndef DUST3D_BASE_UUID_H_
|
||||
#define DUST3D_BASE_UUID_H_
|
||||
|
||||
#include <boost/uuid/uuid.hpp>
|
||||
#include <boost/uuid/uuid_generators.hpp>
|
||||
#include <boost/uuid/uuid_io.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <boost/functional/hash.hpp>
|
||||
#include <string>
|
||||
#include <random>
|
||||
#include <sstream>
|
||||
#include <chrono>
|
||||
#include <ctime>
|
||||
|
||||
namespace dust3d
|
||||
{
|
||||
|
@ -36,40 +34,105 @@ namespace dust3d
|
|||
class Uuid
|
||||
{
|
||||
public:
|
||||
Uuid()
|
||||
class RandomGenerator
|
||||
{
|
||||
m_uuid = boost::uuids::nil_uuid();
|
||||
}
|
||||
public:
|
||||
RandomGenerator():
|
||||
m_randomGenerator(m_randomDevice() + std::chrono::time_point_cast<std::chrono::seconds>(std::chrono::system_clock::now()).time_since_epoch().count()),
|
||||
m_randomDistribution(0, 15)
|
||||
{
|
||||
}
|
||||
|
||||
int generate()
|
||||
{
|
||||
return m_randomDistribution(m_randomGenerator);
|
||||
}
|
||||
|
||||
Uuid(const boost::uuids::uuid &uuid) :
|
||||
m_uuid(uuid)
|
||||
{
|
||||
}
|
||||
private:
|
||||
std::random_device m_randomDevice;
|
||||
std::mt19937 m_randomGenerator;
|
||||
std::uniform_int_distribution<int> m_randomDistribution;
|
||||
};
|
||||
|
||||
static RandomGenerator *m_generator;
|
||||
|
||||
Uuid() = default;
|
||||
|
||||
Uuid(const std::string &string)
|
||||
{
|
||||
if (sizeof("{hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh}") - 1 != string.length() ||
|
||||
'{' != string[0]) {
|
||||
m_uuid = boost::uuids::nil_uuid();
|
||||
if (sizeof("{hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh}") - 1 == string.length() &&
|
||||
'{' == string[0] &&
|
||||
validate(&string[1], string.length() - 2)) {
|
||||
m_uuid = string.substr(1, string.length() - 2);
|
||||
return;
|
||||
}
|
||||
m_uuid = boost::lexical_cast<boost::uuids::uuid>(
|
||||
string.substr(1, sizeof("hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh") - 1));
|
||||
if (sizeof("hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh") - 1 == string.length() &&
|
||||
validate(&string[0], string.length())) {
|
||||
m_uuid = string;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static bool validate(const char *string, size_t length)
|
||||
{
|
||||
return length >= 24 &&
|
||||
'-' == string[8] &&
|
||||
'-' == string[13] &&
|
||||
'-' == string[18] &&
|
||||
'-' == string[23];
|
||||
}
|
||||
|
||||
bool isNull() const
|
||||
{
|
||||
return m_uuid.is_nil();
|
||||
return m_uuid.empty();
|
||||
}
|
||||
|
||||
std::string toString() const
|
||||
{
|
||||
return "{" + to_string(m_uuid) + "}";
|
||||
return "{" + m_uuid + "}";
|
||||
}
|
||||
|
||||
static Uuid createUuid()
|
||||
{
|
||||
return Uuid(boost::uuids::random_generator()());
|
||||
std::ostringstream ss;
|
||||
ss << std::hex;
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << "-";
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << "-";
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << "-";
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << "-";
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
ss << m_generator->generate();
|
||||
return Uuid(ss.str());
|
||||
}
|
||||
private:
|
||||
friend std::string to_string(const Uuid &uuid);
|
||||
|
@ -77,12 +140,12 @@ private:
|
|||
friend bool operator==(const Uuid &lhs, const Uuid &rhs);
|
||||
friend bool operator!=(const Uuid &lhs, const Uuid &rhs);
|
||||
friend bool operator<(const Uuid &lhs, const Uuid &rhs);
|
||||
boost::uuids::uuid m_uuid;
|
||||
std::string m_uuid;
|
||||
};
|
||||
|
||||
inline std::string to_string(const Uuid &uuid)
|
||||
{
|
||||
return "{" + to_string(uuid.m_uuid) + "}";
|
||||
return "{" + uuid.m_uuid + "}";
|
||||
}
|
||||
|
||||
inline bool operator==(const Uuid &lhs, const Uuid &rhs)
|
||||
|
@ -110,7 +173,7 @@ struct hash<dust3d::Uuid>
|
|||
{
|
||||
size_t operator()(const dust3d::Uuid& uuid) const
|
||||
{
|
||||
return boost::hash<boost::uuids::uuid>()(uuid.m_uuid);
|
||||
return std::hash<std::string>()(uuid.m_uuid);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
#include <unordered_set>
|
||||
#include <functional>
|
||||
#include <dust3d/base/string.h>
|
||||
#include <dust3d/base/part_target.h>
|
||||
#include <dust3d/base/part_base.h>
|
||||
|
|
Loading…
Reference in New Issue