annotate include/animone/util.h @ 31:668f4f31ddda

strategist: outward APIs are now in C
author Paper <paper@tflc.us>
date Mon, 10 Feb 2025 00:07:21 -0500
parents a76e55e098d1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
1 #ifndef ANIMONE_ANIMONE_UTIL_H_
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
2 #define ANIMONE_ANIMONE_UTIL_H_
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
3
30
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
4 #include <stdint.h>
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
5 #include <stddef.h>
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
6
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
7 #ifdef __cplusplus
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
8 extern "C" {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
9 #endif
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
10
30
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
11 int animone_internal_util_ReadFile(const char *path, char **data, size_t *size);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
12 int animone_internal_util_EqualStrings(const char *str1, const char *str2);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
13 char *animone_internal_util_Stem(const char *filename);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
14 int animone_internal_util_CheckPattern(const char *pattern, const char *str);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
15 int animone_internal_util_TrimLeft(char *str, const char* chars);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
16 int animone_internal_util_TrimRight(char *str, const char* chars);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
17
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
18 intmax_t animone_internal_util_StringToInt(const char *ptr, intmax_t def);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
19
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
20 #ifdef __cplusplus
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
21 }
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
22
30
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
23 #include <string>
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
24 #include <cstdlib>
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
25
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
26 namespace animone {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
27 namespace internal {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
28 namespace util {
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
29
30
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
30 // Compatibility bindings, to keep the existing C++ code working
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
31 inline bool ReadFile(const std::string &path, std::string &data)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
32 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
33 char *data_c;
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
34 size_t size_c;
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
35
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
36 int x = ::animone_internal_util_ReadFile(path.c_str(), &data_c, &size_c);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
37
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
38 data.assign(data_c, size_c);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
39
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
40 std::free(data_c);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
41
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
42 return static_cast<bool>(x);
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
43 }
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
44
30
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
45 inline bool EqualStrings(const std::string &str1, const std::string &str2)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
46 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
47 return static_cast<bool>(::animone_internal_util_EqualStrings(str1.c_str(), str2.c_str()));
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
48 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
49
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
50 inline bool Stem(const std::string &filename, std::string &stem)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
51 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
52 char *stem_c = ::animone_internal_util_Stem(filename.c_str());
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
53 if (!stem_c)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
54 return 0;
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
55
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
56 stem.assign(stem_c);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
57
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
58 std::free(stem_c);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
59
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
60 return 1;
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
61 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
62
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
63 inline bool CheckPattern(const std::string &pattern, const std::string &str)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
64 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
65 return static_cast<bool>(::animone_internal_util_CheckPattern(pattern.c_str(), str.c_str()));
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
66 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
67
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
68 inline bool TrimLeft(std::string &str, const char *chars)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
69 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
70 return ::animone_internal_util_TrimLeft(str.data(), chars);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
71 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
72
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
73 inline bool TrimRight(std::string &str, const char* chars)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
74 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
75 return ::animone_internal_util_TrimRight(str.data(), chars);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
76 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
77
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
78 inline intmax_t StringToInt(const std::string &ptr, intmax_t def)
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
79 {
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
80 return ::animone_internal_util_StringToInt(ptr.c_str(), def);
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
81 }
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
82
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
83 } // namespace util
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
84 } // namespace internal
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
85 } // namespace animone
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
86
a76e55e098d1 util: rewrite functions in C-ish
Paper <paper@tflc.us>
parents: 14
diff changeset
87 #endif
14
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
88
27b988a1048c *: convert all files CRLF -> LF
Paper <paper@paper.us.eu.org>
parents: 0
diff changeset
89 #endif // ANIMONE_ANIMONE_UTIL_H_