Plutonium framework API  0.3
Simple UI framework for libnx and SDL2
pu_String.hpp
Go to the documentation of this file.
1 
2 /*
3 
4  Plutonium library
5 
6  @file pu_String.hpp
7  @brief A custom string class to support UTF16 and UTF8 -> UTF16 conversion
8  @author XorTroll
9 
10  @copyright Plutonium project - an easy-to-use UI framework for Nintendo Switch homebrew
11 
12 */
13 
14 #pragma once
15 #include <string>
16 #include <switch.h>
17 #include <pu/pu_Macros.hpp>
18 
19 namespace pu
20 {
21  class String
22  {
23  using iterator = std::u16string::iterator;
24 
25  public:
26  String();
27  static const size_t npos;
28 
29  String(const char *C_UTF8);
30  bool operator==(const char *C_UTF8);
31  bool operator!=(const char *C_UTF8);
32  String operator+=(const char *C_UTF8);
33 
34  String(const char16_t *C_UTF16);
35  bool operator==(const char16_t *C_UTF16);
36  bool operator!=(const char16_t *C_UTF16);
37  String operator+=(const char16_t *C_UTF16);
38 
39  String(std::string UTF8);
40  bool operator==(std::string UTF8);
41  bool operator!=(std::string UTF8);
42  String operator+=(std::string UTF8);
43  std::string AsUTF8();
44 
45  String(std::u16string UTF16);
46  bool operator==(std::u16string UTF16);
47  bool operator!=(std::u16string UTF16);
48  String operator+=(std::u16string UTF16);
49  std::u16string AsUTF16();
50 
51  bool operator==(String Str);
52  bool operator!=(String Str);
54 
55  bool StartsWith(String Str);
56  bool IsEmpty();
57  bool HasAny();
58  size_t GetLength();
59  String Substring(size_t Index, size_t Length);
60 
61  // C++ string compatibility
62 
63  bool empty();
64  size_t length();
65  String substr(size_t Offset, size_t Length = npos);
66  size_t find_first_of(String Str, size_t Position = 0);
67  size_t find_last_of(String Str, size_t Position = npos);
68  void erase(size_t Offset, size_t Length = npos);
69  iterator begin();
70  iterator end();
71  size_t find(String Str, size_t Position = 0);
72  String replace(size_t Position, size_t Length, String Str);
73  void reserve(size_t Length);
74 
75  friend String operator+(const String &L, char R);
76  friend String operator+(const String &L, const char *R);
77  friend String operator+(const String &L, const char16_t *R);
78  friend String operator+(const String &L, const std::string R);
79  friend String operator+(const String &L, const std::u16string R);
80  friend String operator+(const String &L, const String &R);
81 
82  friend String operator+(const String &L, u8 U);
83  friend String operator+(const String &L, u16 U);
84  friend String operator+(const String &L, u32 U);
85  friend String operator+(const String &L, u64 U);
86  friend String operator+(const String &L, s8 I);
87  friend String operator+(const String &L, s16 I);
88  friend String operator+(const String &L, i32 I);
89  friend String operator+(const String &L, s64 I);
90  friend String operator+(const String &L, float D);
91  friend String operator+(const String &L, double D);
92 
93  String operator+=(char C);
94  String operator+=(u8 U);
95  String operator+=(u16 U);
96  String operator+=(u32 U);
97  String operator+=(u64 U);
98  String operator+=(s8 I);
99  String operator+=(s16 I);
100  String operator+=(i32 I);
101  String operator+=(s64 I);
102  String operator+=(float D);
103  String operator+=(double D);
104  private:
105  std::u16string base;
106  };
107 }
108 
109 namespace std
110 {
111  // More compatibility
112  int stoi(pu::String Str, size_t *Index = 0, int Base = 10);
113 }
Definition: pu_String.hpp:21
void erase(size_t Offset, size_t Length=npos)
bool IsEmpty()
size_t find_first_of(String Str, size_t Position=0)
std::u16string AsUTF16()
STL namespace.
size_t length()
bool HasAny()
String operator+=(const char *C_UTF8)
bool operator!=(const char *C_UTF8)
String substr(size_t Offset, size_t Length=npos)
iterator begin()
s32 i32
Definition: pu_Macros.hpp:17
friend String operator+(const String &L, char R)
static const size_t npos
Definition: pu_String.hpp:27
size_t find_last_of(String Str, size_t Position=npos)
void reserve(size_t Length)
String replace(size_t Position, size_t Length, String Str)
size_t find(String Str, size_t Position=0)
String Substring(size_t Index, size_t Length)
size_t GetLength()
std::string AsUTF8()
bool StartsWith(String Str)
iterator end()
bool empty()
bool operator==(const char *C_UTF8)