1#ifndef TEXTMATELIB_ONIGLIB_H
2#define TEXTMATELIB_ONIGLIB_H
17struct IOnigCaptureIndex {
22 IOnigCaptureIndex() : start(0), end(0), length(0) {}
23 IOnigCaptureIndex(
int s,
int e) : start(s), end(e), length(e - s) {}
29 std::vector<IOnigCaptureIndex> captureIndices;
31 IOnigMatch() : index(0) {}
47 const UChar* _utf8Ptr;
50 explicit OnigString(
const std::string& str);
53 const std::string& content()
const {
return _content; }
54 const UChar* utf8Ptr()
const {
return _utf8Ptr; }
55 size_t utf8Length()
const {
return _content.length(); }
63 std::vector<std::string> _sources;
64 std::vector<OnigRegex> _regexes;
69 explicit OnigScanner(
const std::vector<std::string>& sources);
72 IOnigMatch* findNextMatchSync(
const std::string&
string,
74 OrMask<FindOption> options);
76 IOnigMatch* findNextMatchSync(OnigString*
string,
78 OrMask<FindOption> options);
83 bool compilePatterns();
89 virtual ~IOnigLib() {}
91 virtual OnigScanner* createOnigScanner(
const std::vector<std::string>& sources) = 0;
92 virtual OnigString* createOnigString(
const std::string& str) = 0;
96class DefaultOnigLib :
public IOnigLib {
101 OnigScanner* createOnigScanner(
const std::vector<std::string>& sources)
override;
102 OnigString* createOnigString(
const std::string& str)
override;
106void disposeOnigString(OnigString* str);
Core type definitions and interfaces for TextMateLib.