1#pragma once
2
3#include <prim/seadSafeString.h>
4
5namespace al {
6struct MatchStr {
7 const char* str;
8};
9
10const char* createStringIfInStack(const char* str);
11const char* createConcatString(const char* start, const char* end);
12void createFileNameBySuffix(sead::BufferedSafeString* out, const char* name, const char* suffix);
13u32 outputValueWithComma(char* out, u32 size, u64 value, bool usePadding, bool padToThousands);
14void extractString(char* out, const char* str, u32 len, u32 unused);
15const char* searchSubString(const char* str, const char* substr);
16const char* searchSubString(const char* str, const char* substr, s32 substrLen);
17const char* getSubStringUnmatched(const char**, const char*, const MatchStr&,
18 void (*)(const char*, const char*, void*), void*);
19const char* getSubStringUnmatched(const char*, const MatchStr&);
20void extractBaseNameW(sead::WBufferedSafeString*, const sead::WSafeString&);
21void removeExtensionString(char* out, u32 len, const char* str);
22void removeStringFromEnd(char* out, u32 len, const char* end, const char* str);
23void translateCharacters(char* string, const char* charmap, const char* newCharmap);
24void tryReplaceString(sead::BufferedSafeString*, const char*, const char*);
25void tryReplaceString(sead::BufferedSafeString*, const char*, const char*, const char*);
26void tryReplaceStringNoRecursive(sead::BufferedSafeString*, const char*, const char*, const char*);
27bool isEqualString(const char16* str1, const char16* str2);
28bool isEqualSubString(const char* str, const char* subStr);
29bool isEqualSubString(const sead::SafeString& str, const sead::SafeString& subStr);
30bool isStartWithString(const char* str, const char* start);
31bool isEndWithString(const char* str, const char* end);
32bool isMatchString(const char*, const MatchStr&);
33s32 compareStringIgnoreCase(const char* str1, const char* str2);
34void makeUrlEncodeString(char*, u32, const char*);
35void makeUrlDecodeString(char*, u32, const char*);
36void copyString(char* out, const char* str, u32 len);
37void copyStringW(char16* out, const char16* str, u32 len);
38bool isInStack(const void*);
39bool isEqualString(const char* str1, const char* str2);
40bool isEqualString(const sead::SafeString& safestr1, const sead::SafeString& safestr2);
41bool isEqualStringCase(const char* str1, const char* str2);
42bool isEqualStringCase(const sead::SafeString& str1, const sead::SafeString& str2);
43
44template <s32 L>
45class StringTmp : public sead::FixedSafeString<L> {
46public:
47 StringTmp(const char* format, ...) : sead::FixedSafeString<L>() {
48 std::va_list args;
49 va_start(args, format);
50 sead::FixedSafeString<L>::formatV(format, args);
51 va_end(args);
52 }
53
54 StringTmp() : sead::FixedSafeString<L>() {}
55};
56
57template <s32 L>
58class WStringTmp : public sead::WFixedSafeString<L> {
59public:
60 WStringTmp(const char16* format, ...) : sead::WFixedSafeString<L>() {
61 std::va_list args;
62 va_start(args, format);
63 sead::WFixedSafeString<L>::formatV(format, args);
64 va_end(args);
65 }
66
67 WStringTmp() : sead::WFixedSafeString<L>() {}
68};
69} // namespace al
70