mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-23 04:01:49 +00:00
ENH: clean codes about device
JIRA: [STUDIO-13609] Change-Id: I591de7033360b9570600006cfbce2148a8d031d5 (cherry picked from commit e9c774be8f4c89b8dafa14ef56913612fb68bd0c)
This commit is contained in:
114
src/slic3r/GUI/DeviceCore/DevUtil.cpp
Normal file
114
src/slic3r/GUI/DeviceCore/DevUtil.cpp
Normal file
@@ -0,0 +1,114 @@
|
||||
#include "DevUtil.h"
|
||||
#include "fast_float/fast_float.h"
|
||||
|
||||
namespace Slic3r
|
||||
{
|
||||
|
||||
int DevUtil::get_flag_bits(std::string str, int start, int count)
|
||||
{
|
||||
try
|
||||
{
|
||||
unsigned long long decimal_value = std::stoull(str, nullptr, 16);
|
||||
unsigned long long mask = (1ULL << count) - 1;
|
||||
int flag = (decimal_value >> start) & mask;
|
||||
return flag;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": failed";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int DevUtil::get_flag_bits(int num, int start, int count, int base)
|
||||
{
|
||||
try
|
||||
{
|
||||
unsigned long long mask = (1ULL << count) - 1;
|
||||
unsigned long long value;
|
||||
if (base == 10)
|
||||
{
|
||||
value = static_cast<unsigned long long>(num);
|
||||
}
|
||||
else if (base == 16)
|
||||
{
|
||||
value = static_cast<unsigned long long>(std::stoul(std::to_string(num), nullptr, 16));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw std::invalid_argument("Unsupported base");
|
||||
}
|
||||
|
||||
int flag = (value >> start) & mask;
|
||||
return flag;
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": failed";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
float DevUtil::string_to_float(const std::string& str_value)
|
||||
{
|
||||
float value = 0.0f;
|
||||
|
||||
try
|
||||
{
|
||||
fast_float::from_chars(str_value.c_str(), str_value.c_str() + str_value.size(), value);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": failed";
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
std::string DevUtil::convertToIp(long long ip)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << ((ip >> 0) & 0xFF) << "." << ((ip >> 8) & 0xFF) << "." << ((ip >> 16) & 0xFF) << "." << ((ip >> 24) & 0xFF);
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
std::string DevJsonValParser::get_longlong_val(const nlohmann::json& j)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (j.is_number())
|
||||
{
|
||||
return std::to_string(j.get<long long>());
|
||||
}
|
||||
else if (j.is_string())
|
||||
{
|
||||
return j.get<std::string>();
|
||||
}
|
||||
}
|
||||
catch (const nlohmann::json::exception& e)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
|
||||
return std::string();
|
||||
}
|
||||
|
||||
};// namespace Slic3r
|
||||
Reference in New Issue
Block a user