|
1
|
1 #pragma once
|
|
|
2
|
|
|
3 namespace pfc {
|
|
|
4 struct string_part_ref {
|
|
|
5 const char* m_ptr;
|
|
|
6 t_size m_len;
|
|
|
7
|
|
|
8
|
|
|
9 static string_part_ref make(const char* ptr, t_size len);
|
|
|
10 string_part_ref substring(t_size base) const;
|
|
|
11 string_part_ref substring(t_size base, t_size len) const;
|
|
|
12 static string_part_ref make(const char* str);
|
|
|
13 bool equals(string_part_ref other) const;
|
|
|
14 bool equals(const char* str) const;
|
|
|
15 };
|
|
|
16
|
|
|
17 inline string_part_ref string_part(const char* ptr, t_size len) {
|
|
|
18 string_part_ref val = { ptr, len }; return val;
|
|
|
19 }
|
|
|
20
|
|
|
21 template<typename T> static string_part_ref stringToRef(T const& val) { return string_part(stringToPtr(val), val.length()); }
|
|
|
22 inline string_part_ref stringToRef(string_part_ref val) { return val; }
|
|
|
23 inline string_part_ref stringToRef(const char* val) { return string_part(val, strlen(val)); }
|
|
|
24 } |