diff options
Diffstat (limited to 'yaml-cpp/src/regex.cpp')
-rwxr-xr-x | yaml-cpp/src/regex.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/yaml-cpp/src/regex.cpp b/yaml-cpp/src/regex.cpp new file mode 100755 index 00000000..b35b1f43 --- /dev/null +++ b/yaml-cpp/src/regex.cpp @@ -0,0 +1,60 @@ +#include "regex.h" + +namespace YAML +{ + // constructors + RegEx::RegEx(): m_op(REGEX_EMPTY) + { + } + + RegEx::RegEx(REGEX_OP op): m_op(op) + { + } + + RegEx::RegEx(char ch): m_op(REGEX_MATCH), m_a(ch) + { + } + + RegEx::RegEx(char a, char z): m_op(REGEX_RANGE), m_a(a), m_z(z) + { + } + + RegEx::RegEx(const std::string& str, REGEX_OP op): m_op(op) + { + for(std::size_t i=0;i<str.size();i++) + m_params.push_back(RegEx(str[i])); + } + + // combination constructors + RegEx operator ! (const RegEx& ex) + { + RegEx ret(REGEX_NOT); + ret.m_params.push_back(ex); + return ret; + } + + RegEx operator || (const RegEx& ex1, const RegEx& ex2) + { + RegEx ret(REGEX_OR); + ret.m_params.push_back(ex1); + ret.m_params.push_back(ex2); + return ret; + } + + RegEx operator && (const RegEx& ex1, const RegEx& ex2) + { + RegEx ret(REGEX_AND); + ret.m_params.push_back(ex1); + ret.m_params.push_back(ex2); + return ret; + } + + RegEx operator + (const RegEx& ex1, const RegEx& ex2) + { + RegEx ret(REGEX_SEQ); + ret.m_params.push_back(ex1); + ret.m_params.push_back(ex2); + return ret; + } +} + |