79 lines
2.1 KiB
C++
79 lines
2.1 KiB
C++
#ifndef A8_SYSUTILS_H
|
|
#define A8_SYSUTILS_H
|
|
|
|
namespace a8
|
|
{
|
|
|
|
a8::tick_t XGetTickCount();
|
|
long long XGetNanoSeconds();
|
|
long long GetMilliSecond();
|
|
|
|
template <class T>
|
|
inline int ArraySize(T& array)
|
|
{
|
|
return (sizeof(array) / sizeof(array[0]));
|
|
}
|
|
|
|
int HashString(const std::string& str);
|
|
|
|
template <typename T>
|
|
T Get(std::vector<T> &vector_t, unsigned int idx, const T& defval)
|
|
{
|
|
if(idx < vector_t.size()){
|
|
return vector_t[idx];
|
|
}else{
|
|
return defval;
|
|
}
|
|
}
|
|
|
|
a8::XValue Get(std::map<std::string, a8::XValue> &map, const char* key, const char* defval=nullptr);
|
|
|
|
template <typename T>
|
|
T& FastAppend(std::vector<T>& t)
|
|
{
|
|
t.emplace_back();
|
|
return t.back();
|
|
}
|
|
|
|
template <typename T>
|
|
T& FastAppend(std::list<T>& t)
|
|
{
|
|
t.emplace_back();
|
|
return t.back();
|
|
}
|
|
|
|
template <typename T>
|
|
void SetToVector(std::set<T>& set_v, std::vector<T>& vector_v)
|
|
{
|
|
vector_v.reserve(set_v.size());
|
|
for (auto& v : set_v) {
|
|
vector_v.push_back(v);
|
|
}
|
|
}
|
|
|
|
int RandEx(int min, int max);
|
|
int GetRangeValue(int src_value, int min, int max);
|
|
void SetBitFlag(int& flag_bits, int bit);
|
|
void UnSetBitFlag(int& flag_bits, int bit);
|
|
bool HasBitFlag(const int& flag_bits, int bit);
|
|
void SetBitFlag(long long& flag_bits, int bit);
|
|
void UnSetBitFlag(long long& flag_bits, int bit);
|
|
bool HasBitFlag(const long long& flag_bits, int bit);
|
|
void XPrintf(const char* fmt, std::initializer_list<a8::XValue> args);
|
|
bool MkDir(const std::string& path);
|
|
void ForceCreateDir(const std::string& path);
|
|
std::string GetIpAddress(unsigned long ip_saddr);
|
|
|
|
std::string FormatDateTime(time_t time_val);
|
|
time_t GetDaySeconds(time_t time_val, int incdays = 0);
|
|
time_t BetweenDays(time_t time_val1, time_t time_val2);
|
|
time_t GetDateTimeSeconds(const char* datetime_str);
|
|
|
|
long long MakeInt64(int low32, int high32);
|
|
int Low32(long long int64_val);
|
|
int High32(long long int64_val);
|
|
|
|
}
|
|
|
|
#endif
|