/* */ #include "Data.h" #include "MetaEntryVisitor.h" #include #include // <-- TODO remove this if strtoll is replaced with Util::parseLLInt() namespace aria2 { Data::Data(const unsigned char* data, size_t len, bool number):number(number) { init(data, len); } Data::Data(const char* data, size_t len, bool number):number(number) { init(reinterpret_cast(data), len); } Data::Data(const std::string& data, bool number):number(number) { init(reinterpret_cast(data.c_str()), data.size()); } void Data::init(const unsigned char* src, size_t slen) { if(src) { data = new unsigned char[slen]; memcpy(data, src, slen); len = slen; } else { data = 0; len = 0; } } Data::~Data() { delete [] data; } std::string Data::toString() const { return std::string(&data[0], &data[len]); } const unsigned char* Data::getData() const { if(this->len == 0) { return NULL; } else { return data; } } size_t Data::getLen() const { return len; } int32_t Data::toInt() const { return toLLInt(); } int64_t Data::toLLInt() const { if(len == 0) { return 0; } else { return strtoll(toString().c_str(), NULL, 10); } } bool Data::isNumber() const { return number; } void Data::accept(MetaEntryVisitor* v) const { v->visit(this); } } // namespace aria2