#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 #include #include #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; } // determine the maximum of the 3 parameters inline double max3(double a, double b, double c) { return std::max(a, std::max(b, c)); } // determine the minimum of the 3 parameters 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(x); } // Platzhalter für GET_VALUE_* (kommt vermutlich aus Parameter-/Recipe-System) inline 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; } // UJ: not yet needed, maybe future use - leave it for now class Util{ public: }; } // namespace UTILITY_FUNCTIONS #endif // UTIL_H