aboutsummaryrefslogtreecommitdiffstats
path: root/meowpp/utility.h
diff options
context:
space:
mode:
Diffstat (limited to 'meowpp/utility.h')
-rw-r--r--meowpp/utility.h97
1 files changed, 28 insertions, 69 deletions
diff --git a/meowpp/utility.h b/meowpp/utility.h
index 12909e9..14b7af1 100644
--- a/meowpp/utility.h
+++ b/meowpp/utility.h
@@ -1,110 +1,69 @@
-#ifndef UTILITY_H_
-#define UTILITY_H_
+#ifndef utility_H__
+#define utility_H__
+
+#include <cstdlib>
#include <string>
-#include <stack>
-#include <cctype>
namespace meow{
- inline std::string stringPrintf(char const * fmt, ...);
- inline std::string stringReplace(std::string str,
- std::string const& from,
- std::string const& to);
- inline bool cstringEndWith(char const* str, int n, ...);
-#define debugPrintf(...) \
- meow::debugPrintf_(\
- __FILE__,\
- __PRETTY_FUNCTION__,\
- __LINE__,\
- meow::stringPrintf(__VA_ARGS__).c_str())
- inline void debugPrintf_(char const* file,
- char const* func,
- size_t line,
- char const* msg);
- inline void messagePrintf(int level_change, char const* fmt, ...);
-
- static const double PI = 3.14159265358979323846264338327950288;
-
- inline double noEPS(double value, double eps = 1e-9);
- inline double normalize(double lower, double upper, double value);
- inline double denormalize(double lower, double upper, double ratio);
- inline double ratioMapping(double l1, double u1, double m1,
- double l2, double u2);
- template<class T>
- inline T inRange(T const& mn, T const& mx, T const& v);
- template<class T>
- inline T squ(T const& x);
-
- template<class T>
- inline double average(T const& beg, T const& end, double sigs);
- template<class T>
- inline double average(T const& beg, T const& end, T const& p, double sigs);
-
//#
//# === meow:: *Functios* in utility.h
//#
//# [options="header",width="100%",cols="1>s,5<,1<,10<",grid="rows"]
//# |==============================================================
//# |Name | Parameters | Return_Type | Description
+
+
//# |stringPrintf |(char const * `fmt`, ...) | std::string
//# |Format print to C++ string and return it
+ inline std::string stringPrintf(char const * fmt, ...);
//# |stringReplace |(std::string `str`,\std::string const&
//# `from`,\std::string const& `to`) | std::string
//# |Return a string like `str`, but all `from` be replaced by `to`
+ inline std::string stringReplace(std::string str,
+ std::string const& from,
+ std::string const& to);
//# |cstringEndWith |(char const* `str`,\int `n`, ...) | bool
//# |Return whether `str` is end with one of the c-string you specify in
//# the parameters or not
+ inline bool cstringEndWith(char const* str, int n, ...);
//# |debugPrintf |(char const* `fmt`, ...) | void
//# |Print debug message (file name, line number, ...etc) when `DEBUG` is
//# defined
+#define debugPrintf(...) \
+ meow::debugPrintf_(\
+ __FILE__,\
+ __PRETTY_FUNCTION__,\
+ __LINE__,\
+ meow::stringPrintf(__VA_ARGS__).c_str())
+ inline void debugPrintf_(char const* file,
+ char const* func,
+ size_t line,
+ char const* msg);
//# |messagePrintf |(int `level_change`,\char const* `fmt`, ...) | void
//# |階層式的訊息輸出
+ inline void messagePrintf(int level_change, char const* fmt, ...);
+
-
- //# |noEPS |(double `value`, double `eps` = 1e-9) | double |
- //# 如果abs(輸入的數值) < eps, 則回傳0, 否則回傳輸入的數值
-
-
- //# |normalize |(double `lower`, double `upper`, \ double value)
- //# | double | `(value - lower) / (upper - lower)`
-
-
- //# |denormalize |(double `lower`, double `upper`,
- //# \ double `ratio`) | double | `lower + (upper - lower) * ratio`
-
-
- //# |ratioMapping |(double `l1`, double `u1`,
- //# \double `m1`, double `l2`,\double `u2`)
- //# | double | `denormalize(l2, u2, normalize(l1, u1, m1))`
-
-
- //# |inRange<T> |(T const& `mn`, T const& `mx`, \ T const& `v`) | T |
- //# `std::max(mn, std::min(mx, v))`
-
-
- //# |squ<T> |(T const& `x`) | T| `x * x`
-
-
- //# |average<T>|(T const& `beg`, T const& `end`, \ double `sigs`)| T|
- //# 只將 `sigs` 個標準差以內的數據拿來取平均
+ //# |filenameCompare |(std::string const& `f1`, std::string const& `f2`)|void
+ //# | 依照 `a0.txt < a1.txt < a2.txt < a10.txt` 的字串比較方法比較字串
+ inline bool filenameCompare(std::string const& f1, std::string const& f2);
- //# |average<T>|(T const& `beg`, T const& `end`,
- //# \ T const& `p`, double `sigs`)| T| 同上, 不過這次用 `p` 來加權平均
//# |==============================================================
+
//#
//# [NOTE]
//# ====================================
//# * `stringReplace()` 不是用什麼好方法寫的因此執行效率很低請別虐待它.
- //# * 額外附贈一個 `const double PI = 3.141592653589......`
//# ====================================
//#
//# '''
@@ -113,4 +72,4 @@ namespace meow{
#include "utility.hpp"
-#endif // UTILITY_H_
+#endif // utility_H__