summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorTianyi Liang <tianyi-liang@uiowa.edu>2014-12-06 13:24:01 -0600
committerTianyi Liang <tianyi-liang@uiowa.edu>2014-12-06 13:26:24 -0600
commitc4410c3123f7dc73bb0296ebe01c172e96b210cc (patch)
treee585487fee95d2098c9229b84db236b008fcba4c /src/util
parent5e2eef449c11b0be6b25942bccf7b0712ebe2d20 (diff)
Added C++/Java api examples;
Converted cset to be vector of char, instead of vector of int, since we only accept ascii in input.
Diffstat (limited to 'src/util')
-rw-r--r--src/util/regexp.cpp52
-rw-r--r--src/util/regexp.h26
2 files changed, 44 insertions, 34 deletions
diff --git a/src/util/regexp.cpp b/src/util/regexp.cpp
index b1b454cfa..1c672d4b9 100644
--- a/src/util/regexp.cpp
+++ b/src/util/regexp.cpp
@@ -91,10 +91,10 @@ void String::toInternal(const std::string &s) {
}
}
-void String::getCharSet(std::set<unsigned int> &cset) const {
+void String::getCharSet(std::set<char> &cset) const {
for(std::vector<unsigned int>::const_iterator itr = d_str.begin();
itr != d_str.end(); itr++) {
- cset.insert( *itr );
+ cset.insert( convertUnsignedIntToChar(*itr) );
}
}
@@ -114,33 +114,33 @@ std::string String::toString() const {
std::string str;
for(unsigned int i=0; i<d_str.size(); ++i) {
char c = convertUnsignedIntToChar( d_str[i] );
- if(isprint( c )) {
- if(c == '\\') {
- str += "\\\\";
- } else if(c == '\"') {
- str += "\\\"";
- } else {
- str += c;
- }
+ if(isprint( c )) {
+ if(c == '\\') {
+ str += "\\\\";
+ } else if(c == '\"') {
+ str += "\\\"";
+ } else {
+ str += c;
+ }
} else {
std::string s;
switch(c) {
- case '\a': s = "\\a"; break;
- case '\b': s = "\\b"; break;
- case '\t': s = "\\t"; break;
- case '\r': s = "\\r"; break;
- case '\v': s = "\\v"; break;
- case '\f': s = "\\f"; break;
- case '\n': s = "\\n"; break;
- case '\e': s = "\\e"; break;
- default : {
- std::stringstream ss;
- ss << std::setfill ('0') << std::setw(2) << std::hex << ((int)c);
- std::string t = ss.str();
- t = t.substr(t.size()-2, 2);
- s = "\\x" + t;
- //std::string s2 = static_cast<std::ostringstream*>( &(std::ostringstream() << (int)c) )->str();
- }
+ case '\a': s = "\\a"; break;
+ case '\b': s = "\\b"; break;
+ case '\t': s = "\\t"; break;
+ case '\r': s = "\\r"; break;
+ case '\v': s = "\\v"; break;
+ case '\f': s = "\\f"; break;
+ case '\n': s = "\\n"; break;
+ case '\e': s = "\\e"; break;
+ default : {
+ std::stringstream ss;
+ ss << std::setfill ('0') << std::setw(2) << std::hex << ((int)c);
+ std::string t = ss.str();
+ t = t.substr(t.size()-2, 2);
+ s = "\\x" + t;
+ //std::string s2 = static_cast<std::ostringstream*>( &(std::ostringstream() << (int)c) )->str();
+ }
}
str += s;
}
diff --git a/src/util/regexp.h b/src/util/regexp.h
index 2b7bfa303..26d468a30 100644
--- a/src/util/regexp.h
+++ b/src/util/regexp.h
@@ -116,7 +116,7 @@ public:
if(d_str.size() != y.d_str.size()) return d_str.size() < y.d_str.size();
else {
for(unsigned int i=0; i<d_str.size(); ++i)
- if(d_str[i] != y.d_str[i]) return d_str[i] < y.d_str[i];
+ if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) < convertUnsignedIntToChar(y.d_str[i]);
return false;
}
@@ -126,7 +126,7 @@ public:
if(d_str.size() != y.d_str.size()) return d_str.size() > y.d_str.size();
else {
for(unsigned int i=0; i<d_str.size(); ++i)
- if(d_str[i] != y.d_str[i]) return d_str[i] > y.d_str[i];
+ if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) > convertUnsignedIntToChar(y.d_str[i]);
return false;
}
@@ -136,7 +136,7 @@ public:
if(d_str.size() != y.d_str.size()) return d_str.size() < y.d_str.size();
else {
for(unsigned int i=0; i<d_str.size(); ++i)
- if(d_str[i] != y.d_str[i]) return d_str[i] < y.d_str[i];
+ if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) < convertUnsignedIntToChar(y.d_str[i]);
return true;
}
@@ -146,7 +146,7 @@ public:
if(d_str.size() != y.d_str.size()) return d_str.size() > y.d_str.size();
else {
for(unsigned int i=0; i<d_str.size(); ++i)
- if(d_str[i] != y.d_str[i]) return d_str[i] > y.d_str[i];
+ if(d_str[i] != y.d_str[i]) return convertUnsignedIntToChar(d_str[i]) > convertUnsignedIntToChar(y.d_str[i]);
return true;
}
@@ -188,10 +188,10 @@ public:
return ( d_str.size() == 0 );
}
- unsigned int operator[] (const std::size_t i) const {
+ /*char operator[] (const std::size_t i) const {
assert( i < d_str.size() );
- return d_str[i];
- }
+ return convertUnsignedIntToChar(d_str[i]);
+ }*/
/*
* Convenience functions
*/
@@ -205,6 +205,11 @@ public:
return convertUnsignedIntToChar( d_str[0] );
}
+ char getLastChar() const {
+ assert(d_str.size() != 0);
+ return convertUnsignedIntToChar( d_str[d_str.size() - 1] );
+ }
+
bool isRepeated() const {
if(d_str.size() > 1) {
unsigned int f = d_str[0];
@@ -307,7 +312,12 @@ public:
return -1;
}
}
- void getCharSet(std::set<unsigned int> &cset) const;
+
+ void getCharSet(std::set<char> &cset) const;
+
+ std::vector<unsigned int> getVec() const {
+ return d_str;
+ }
};/* class String */
namespace strings {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback