65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#ifndef UTIL_H
|
|
#define UTIL_H
|
|
/*
|
|
File: util.h
|
|
Description: This is a C++ header file containing utility functions
|
|
Rev: 0.1
|
|
Created: 01.04.26
|
|
Author: Uwe Jakobeit
|
|
Copyright: Binder GmbH TUT
|
|
Purpose: Supply utility functions for math. evaluation, validation, conversion
|
|
Notes: [Any relevant details, such as dependencies, usage examples, or known issues.]
|
|
*/
|
|
|
|
#include <algorithm>
|
|
#include <cmath>
|
|
#include <cstdint>
|
|
|
|
|
|
#define MAX std::max
|
|
#define MIN std::min
|
|
|
|
namespace UTILITY_FUNCTIONS {
|
|
|
|
// determine if x is in range of ]lo;hi[
|
|
// if so - x will be returned
|
|
// if not - lo will be returned if x is smaller than lo
|
|
// - hi will be returned if x is greater than hi
|
|
inline double limit(double x, double lo, double hi) {
|
|
return (x < lo) ? lo : (x > hi) ? hi : x;
|
|
}
|
|
|
|
inline double max3(double a, double b, double c) {
|
|
return std::max(a, std::max(b, c));
|
|
}
|
|
inline double min3(double a, double b, double c) {
|
|
return std::min(a, std::min(b, c));
|
|
}
|
|
|
|
|
|
inline bool is_valid(double x) { return std::isfinite(x); }
|
|
|
|
// ST: REAL_TO_INT(x) i.d.R. trunc Richtung 0. Bei Siemens oft ROUND? Du nutzt
|
|
// häufig +0.5.
|
|
inline int real_to_int(double x) { return static_cast<int>(x); }
|
|
|
|
// Platzhalter für GET_VALUE_* (kommt vermutlich aus Parameter-/Recipe-System)
|
|
inline std::int32_t GET_VALUE_DINT(int /*a*/, int /*b*/, int /*c*/, int /*d*/) {
|
|
// TODO: an dein Parameter-System anbinden
|
|
return 0;
|
|
}
|
|
inline double GET_VALUE_REAL(int /*a*/, int /*b*/, int /*c*/, int /*d*/) {
|
|
// TODO: an dein Parameter-System anbinden
|
|
return 0.0;
|
|
}
|
|
|
|
class Util{
|
|
public:
|
|
|
|
};
|
|
|
|
} // namespace UTILITY_FUNCTIONS
|
|
|
|
|
|
|
|
#endif // UTIL_H
|