diff options
author | Erwin Nindl <nine@wirdorange.org> | 2008-02-27 21:21:05 +0000 |
---|---|---|
committer | Erwin Nindl <nine@wirdorange.org> | 2008-02-27 21:21:05 +0000 |
commit | 63cc38e6bd6329dfe0021adc2f8609bf7819fc49 (patch) | |
tree | 07bceb456776f1f0b98dcc53a843097f612f37ef /buffer.cpp | |
parent | removed debug statements (diff) |
added mux to options
Diffstat (limited to 'buffer.cpp')
-rw-r--r-- | buffer.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -31,6 +31,7 @@ #include <stdexcept> #include <string> #include <sstream> +#include <iostream> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> #include "datatypes.h" @@ -64,6 +65,23 @@ Buffer::Buffer(u_int8_t* data, u_int32_t length, bool allow_realloc) : length_(l std::memcpy(buf_, data, length_); } +Buffer::Buffer(std::string hex_data, bool allow_realloc) : length_(hex_data.size()/2), + real_length_(length_ + Buffer::OVER_SIZE_), + allow_realloc_(allow_realloc) +{ + buf_ = new u_int8_t[real_length_]; + if(!buf_) { + length_ = 0; + real_length_ = 0; + throw std::bad_alloc(); + } + std::stringstream tmp(hex_data); + for(u_int32_t i=0;i<length_;++i) + { + tmp >> std::hex >> std::setw(2) >> buf_[i]; + } +} + Buffer::~Buffer() { if(buf_) |