18#ifndef BIMHOMEBASE_TOOLS_H
19#define BIMHOMEBASE_TOOLS_H
30#include <boost_signals2.hpp>
34#define M_PI 3.14159265358979323846
81 std::ostream& (*f_)(std::ostream&,
T);
101 return m.
f_(os, m.
i_);
112 inline std::ostream&
tabsN(std::ostream& os,
int n)
114 for (
int i = 0; i < n; i++)
126 inline std::ostream&
blanksN(std::ostream& os,
int n)
128 for (
int i = 0; i < n; i++)
168 return std::max<T>(std::min<T>(upper, num), lower);
184 return (t > 0) ?
T(1) :
T(-1);
197 return static_cast<T>((d *
M_PI) / 180.0);
210 return static_cast<T>((r /
M_PI) * 180.0);
224 T modulo = std::fmod(numerator, denominator);
225 return (modulo >=
T(0)) ? modulo : modulo + denominator;
289 template<
typename Flag =
bool>
339 template<
typename Status,
class Object>
493 static std::string
getUniqueName(
const std::string& baseName,
const std::vector<std::string>& names,
int d = 0);
503 static std::string
addNumber(
const std::string& name,
unsigned int number,
int d = 0);
527 static std::wstring
widen(
const std::string& str);
535 static std::string
narrow(
const std::wstring& str);
593 static bool fileIsOrNotExist(
const QString& path,
const QString& fileName,
const QString& suffix);
622 QByteArray tmp = s.toUtf8();
623 return std::string(tmp.constData(),
static_cast<size_t>(tmp.size()));
634 return QString::fromUtf8(s.c_str(),
static_cast<int>(s.size()));
T
Definition ISnapProcessedBase.h:49
T & flags
位集
Definition Tools.h:443
~BitsetLocker()
析构函数
Definition Tools.h:437
std::size_t flag
要设置的位
Definition Tools.h:444
BitsetLocker(T &flags, std::size_t flag, bool value=true)
构造函数
Definition Tools.h:426
bool oldValue
原始状态值
Definition Tools.h:445
一个用于锁定位集状态的工具类
Definition Tools.h:417
ConnectionBlock blocker
阻塞连接
Definition Tools.h:458
ConnectionBlocker(Connection &c)
构造函数
Definition Tools.h:466
~ConnectionBlocker()
析构函数
Definition Tools.h:472
boost::signals2::connection Connection
Definition Tools.h:456
boost::signals2::shared_connection_block ConnectionBlock
Definition Tools.h:457
一个用于阻塞信号连接的工具类
Definition Tools.h:455
bool old_value
原始状态值
Definition Tools.h:368
ObjectStatusLocker(Status s, Object *o, bool value=true)
构造函数
Definition Tools.h:350
Object * obj
对象的指针
Definition Tools.h:367
~ObjectStatusLocker()
析构函数
Definition Tools.h:360
Status status
要设置的状态
Definition Tools.h:366
一个用于锁定对象状态的工具类
Definition Tools.h:341
StateLocker(bool &flag, bool value=true)
构造函数
Definition Tools.h:387
bool old_value
原始状态值
Definition Tools.h:404
~StateLocker()
析构函数
Definition Tools.h:397
bool & lock
引用要设置的布尔状态
Definition Tools.h:403
一个用于锁定布尔状态的工具类
Definition Tools.h:379
std::string toString(int ms) const
将时间转换为字符串
Private * d
私有数据结构
Definition Tools.h:279
一个简单的计时器类,用于测量时间间隔
Definition Tools.h:235
T i_
操作符的数据
Definition Tools.h:80
friend std::ostream & operator<<(std::ostream &os, manipulator m)
重载流操作符
Definition Tools.h:99
manipulator(std::ostream &(*f)(std::ostream &, T), T i)
构造函数
Definition Tools.h:90
std::ostream &(* f_)(std::ostream &, T)
操作函数指针
Definition Tools.h:81
自定义流操作符
Definition Tools.h:79
T toRadians(T d)
将角度值从度转换为弧度
Definition Tools.h:195
std::ostream & blanksN(std::ostream &os, int n)
在输出流中插入指定数量的空格
Definition Tools.h:126
T sgn(T t)
获取数值的符号
Definition Tools.h:179
T toDegrees(T r)
将弧度值从弧度转换为度
Definition Tools.h:208
std::ostream & tabsN(std::ostream &os, int n)
在输出流中插入指定数量的制表符
Definition Tools.h:112
T fmod(T numerator, T denominator)
计算模运算结果,确保结果为非负数
Definition Tools.h:222
manipulator< int > blanks(int n)
创建一个插入空格的流操作符
Definition Tools.h:150
manipulator< int > tabs(int n)
创建一个插入制表符的流操作符
Definition Tools.h:139
T clamp(T num, T lower, T upper)
将数值限制在指定范围内
Definition Tools.h:166
Definition BaseFigureFactory.h:24
FlagToggler(Flag &_flag)
构造函数
Definition Tools.h:300
FlagToggler(Flag &_flag, Flag check)
构造函数
Definition Tools.h:312
bool toggled
标志是否被切换
Definition Tools.h:293
~FlagToggler()
析构函数
Definition Tools.h:323
Flag & flag
引用要切换的标志
Definition Tools.h:292
一个用于切换标志状态的工具类
Definition Tools.h:291
iotaGen(T v)
构造函数
Definition Tools.h:57
T operator()()
生成下一个值
Definition Tools.h:64
T n
当前值
Definition Tools.h:67
生成连续递增的值
Definition Tools.h:50