XJ music engine  1.9.6
In-game runtime engine for XJ music.
ValueUtils.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_VALUE_UTILS_H
4 #define XJMUSIC_VALUE_UTILS_H
5 
6 #include <optional>
7 #include <random>
8 #include <set>
9 #include <regex>
10 #include <string>
11 #include <vector>
12 
13 #include "EntityUtils.h"
14 
15 namespace XJ {
16 
17  class ValueUtils {
18  private:
19  static std::regex isIntegerRgx;
20  static std::string K;
21  static float entityPositionDecimalPlaces;
22  static float roundPositionMultiplier;
23  static std::random_device rd;
24  static std::mt19937 gen;
25 
26  public:
27  static long MILLIS_PER_SECOND;
28  static long MICROS_PER_MILLI;
29  static long NANOS_PER_MICRO;
30  static long MICROS_PER_SECOND;
32  static long NANOS_PER_SECOND;
33  static long SECONDS_PER_MINUTE;
34  static long MICROS_PER_MINUTE;
36  static long MINUTES_PER_HOUR;
37  static long HOURS_PER_DAY;
38  static long SECONDS_PER_HOUR;
39  static long SECONDS_PER_DAY;
40 
47  static float eitherOr(float d1, float d2);
48 
55  static std::string eitherOr(std::string s1, std::string s2);
56 
63  static std::set<int> dividedBy(float divisor, const std::set<int> &originals);
64 
71  static float ratio(float value, float limit);
72 
78  static bool isInteger(const std::string &raw);
79 
86  static float limitDecimalPrecision(float value);
87 
93  static std::string k(int value);
94 
100  static std::string randomFrom(std::vector<std::string> from);
101 
109  static std::vector<std::string> randomFrom(std::vector<std::string> from, int num);
110 
117  static long gcd(long a, long b);
118 
125  static std::vector<int> factors(long target, std::vector<int> testFactors);
126 
140  static int subDiv(int numerator, int denominator);
141 
148  static int multipleFloor(int factor, float value);
149 
157  static float interpolate(float floor, float ceiling, float position);
158 
164  static void enforceMaxStereo(int value);
165 
171  static std::optional<UUID> getKeyOfHighestValue(const std::map<UUID, int> &map);
172 
176  static int roundToNearest(int N, int value);
177 
184  static std::vector<UUID> withIdsRemoved(std::vector<UUID> fromIds, int count);
185 
191  static std::string emptyZero(int value);
192 
199  static std::vector<std::string> last(int num, std::vector<std::string> list);
200 
201  };
202 
203 }
204 
205 #endif //XJMUSIC_VALUE_UTILS_H
Definition: ValueUtils.h:17
static long SECONDS_PER_HOUR
Definition: ValueUtils.h:38
static std::set< int > dividedBy(float divisor, const std::set< int > &originals)
Definition: ValueUtils.cpp:53
static int subDiv(int numerator, int denominator)
Definition: ValueUtils.cpp:116
static float ratio(float value, float limit)
Definition: ValueUtils.cpp:62
static std::optional< UUID > getKeyOfHighestValue(const std::map< UUID, int > &map)
Definition: ValueUtils.cpp:144
static long HOURS_PER_DAY
Definition: ValueUtils.h:37
static bool isInteger(const std::string &raw)
Definition: ValueUtils.cpp:67
static void enforceMaxStereo(int value)
Definition: ValueUtils.cpp:138
static std::string k(int value)
Definition: ValueUtils.cpp:77
static std::vector< UUID > withIdsRemoved(std::vector< UUID > fromIds, int count)
Definition: ValueUtils.cpp:161
static long MILLIS_PER_SECOND
Definition: ValueUtils.h:27
static float MICROS_PER_MINUTE_FLOAT
Definition: ValueUtils.h:35
static long NANOS_PER_SECOND
Definition: ValueUtils.h:32
static int roundToNearest(int N, int value)
Definition: ValueUtils.cpp:156
static long SECONDS_PER_MINUTE
Definition: ValueUtils.h:33
static std::vector< std::string > last(int num, std::vector< std::string > list)
Definition: ValueUtils.cpp:178
static std::string randomFrom(std::vector< std::string > from)
Definition: ValueUtils.cpp:82
static long MINUTES_PER_HOUR
Definition: ValueUtils.h:36
static float limitDecimalPrecision(float value)
Definition: ValueUtils.cpp:72
static std::string emptyZero(int value)
Definition: ValueUtils.cpp:174
static int multipleFloor(int factor, float value)
Definition: ValueUtils.cpp:127
static long SECONDS_PER_DAY
Definition: ValueUtils.h:39
static long MICROS_PER_SECOND
Definition: ValueUtils.h:30
static long MICROS_PER_MINUTE
Definition: ValueUtils.h:34
static std::vector< int > factors(long target, std::vector< int > testFactors)
Definition: ValueUtils.cpp:107
static long NANOS_PER_MICRO
Definition: ValueUtils.h:29
static float MICROS_PER_SECOND_FLOAT
Definition: ValueUtils.h:31
static long MICROS_PER_MILLI
Definition: ValueUtils.h:28
static long gcd(long a, long b)
Definition: ValueUtils.cpp:97
static float interpolate(float floor, float ceiling, float position)
Definition: ValueUtils.cpp:133
static float eitherOr(float d1, float d2)
Definition: ValueUtils.cpp:37
Definition: ActiveAudio.h:11