Index: compiled/String.h |
=================================================================== |
--- a/compiled/String.h |
+++ b/compiled/String.h |
@@ -16,22 +16,28 @@ |
*/ |
#pragma once |
#include <algorithm> |
#include <cstddef> |
#include <cstring> |
#include <type_traits> |
+#include <vector> |
#include "debug.h" |
#include "library.h" |
+#include "intrusive_ptr.h" |
+#include "bindings/runtime.h" |
inline void String_assert_writable(bool isWritable); |
+class OwnedString; |
+class ReMatchResults; |
+ |
class String |
{ |
friend class DependentString; |
friend class OwnedString; |
public: |
typedef char16_t value_type; |
typedef size_t size_type; |
@@ -186,16 +192,19 @@ |
if (currChar >= u'A' && currChar <= u'Z') |
mBuf[i] = currChar + u'a' - u'A'; |
else if (currChar >= 128) |
{ |
mBuf[i] = CharToLower(currChar); |
} |
} |
} |
+ |
+ OwnedString substr(size_type pos, size_type len = npos) const; |
+ bool match(int id, ReMatchResults*) const; |
}; |
class DependentString : public String |
{ |
public: |
explicit DependentString() |
: String(nullptr, 0, INVALID) |
{ |
@@ -400,8 +409,19 @@ |
for (int i = size - 1; i >= 0; i--) |
{ |
mBuf[pos + i] = '0' + (num % 10); |
num /= 10; |
} |
} |
}; |
+ |
+// Utility class to get match from JS code in library.js |
+class ReMatchResults : public ref_counted |
+{ |
+public: |
+ void BINDINGS_EXPORTED push(const String& s) |
+ { |
+ candidates.push_back(OwnedString(s)); |
+ } |
+ std::vector<OwnedString> candidates; |
+}; |