1#ifndef HYDROBRICKS_UTILS_H
2#define HYDROBRICKS_UTILS_H
11[[nodiscard]]
bool InitHydrobricks();
16[[nodiscard]]
bool InitHydrobricksForPython();
23string GetUserDirPath();
30[[nodiscard]]
bool CheckOutputDirectory(
const string& path);
37void DisplayProcessingTime(std::chrono::steady_clock::time_point startTime);
44void InitLog(
const string& path);
51string LogFilePath(
const string& directory);
71void SetDebugLogLevel();
76void SetMessageLogLevel();
95bool IsNaN(
float value);
103bool IsNaN(
double value);
110const char* GetPathSeparator();
123bool StringsMatch(
const string& str1,
const string& str2);
135int Find(
const int* start,
const int* end,
int value,
int tolerance = 0,
bool showWarning =
true);
147int Find(
const float* start,
const float* end,
float value,
float tolerance = 0.0,
bool showWarning =
true);
159int Find(
const double* start,
const double* end,
double value,
double tolerance = 0.0,
bool showWarning =
true);
171template <std::totally_ordered T>
172int FindT(
const T* start,
const T* end, T value, T tolerance = 0,
bool showWarning =
true);
182double IncrementDateBy(
double date,
int amount, TimeUnit unit);
190Time GetTimeStructFromMJD(
double mjd);
199double ParseDate(
const string& dateStr, TimeFormat format);
212double GetMJD(
int year,
int month = 1,
int day = 1,
int hour = 0,
int minute = 0,
int second = 0);