00001 #include "SingleString.hpp" 00002 #include <iostream> 00003 #include <cassert> 00004 #include <cstring> 00005 00006 namespace aitools { 00007 namespace invertedindex { 00008 00009 const std::string 00010 SingleString::classname("SingleString"); 00011 00012 SingleString::SingleString() 00013 {} 00014 00015 SingleString::SingleString(const std::string& element) 00016 : element_(element) 00017 {} 00018 00019 SingleString::SingleString(const SingleString& single) 00020 : element_(single.element_) 00021 {} 00022 00023 SingleString::~SingleString() 00024 {} 00025 00026 void 00027 SingleString::clear() 00028 { 00029 element_.clear(); 00030 } 00031 00032 bool 00033 SingleString::operator==(const SingleString& single) const 00034 { 00035 return element_ == single.element_; 00036 } 00037 00038 bool 00039 SingleString::operator!=(const SingleString& single) const 00040 { 00041 return !(*this == single); 00042 } 00043 00044 bool 00045 SingleString::operator>(const SingleString& single) const 00046 { 00047 return score() > single.score(); 00048 } 00049 00050 bool 00051 SingleString::operator<(const SingleString& single) const 00052 { 00053 return score() < single.score(); 00054 } 00055 00056 void 00057 SingleString::parse(std::istream& is) 00058 { 00059 is >> element_; 00060 } 00061 00062 void 00063 SingleString::print(std::ostream& os) const 00064 { 00065 os << element_; 00066 } 00067 00068 double 00069 SingleString::score() const 00070 { 00071 return element_.size(); 00072 } 00073 00074 std::string& 00075 SingleString::element() 00076 { 00077 return element_; 00078 } 00079 00080 const std::string& 00081 SingleString::element() const 00082 { 00083 return element_; 00084 } 00085 00086 void 00087 SingleString::to_bytes(ByteBuffer& buffer) const 00088 { 00089 buffer.resize(element_.size()); 00090 std::memcpy(buffer.data(), element_.data(), element_.size()); 00091 } 00092 00093 void 00094 SingleString::wrap(const char* data, size_t size) 00095 { 00096 assert(size > 0); 00097 assert(data != NULL); 00098 element_.assign(data, size); 00099 } 00100 00101 void 00102 SingleString::wrap(const ByteBuffer& buffer) 00103 { 00104 Value::wrap(buffer); 00105 } 00106 00107 } // namespace invertedindex 00108 } // namespace aitools