X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2Fhexdump.ct;h=76abf997d51641ad96612e14ba4614884c83bb5c;hb=412024ed31a4ab4eaea7a4165a434f8efebee325;hp=350c8c5b8f464ebe9f0deeee2b1833d8d12c6a14;hpb=9cd0c7d8fc22ecf342c5d2a45980c245b827a67f;p=senf.git diff --git a/Utils/hexdump.ct b/Utils/hexdump.ct index 350c8c5..76abf99 100644 --- a/Utils/hexdump.ct +++ b/Utils/hexdump.ct @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,56 +23,28 @@ /** \file \brief hexdump non-inline template implementation */ -//#include "hexdump.ih" +#include "hexdump.ih" // Custom includes -#include //#include "hexdump.mpp" #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// template -prefix_ void senf::hexdump(Iterator i, Iterator const & i_end, std::ostream& stream, unsigned block_size=16) +prefix_ void senf::hexdump(Iterator i, Iterator i_end, std::ostream & stream, + unsigned block_size) { - unsigned offset (0); - std::string ascii; - for (; i != i_end; ++i, ++offset) { - switch ((offset % block_size)==0) { - case true: - if (!ascii.empty()) { - stream << " " << ascii << "\n"; - ascii = ""; - } - stream << " " - << std::hex << std::setw(4) << std::setfill('0') - << offset << ' '; - break; - case false: - stream << " "; - ascii += ' '; - break; - } - stream << ' ' << std::hex << std::setw(2) << std::setfill('0') - << unsigned(*i); - ascii += (*i >= ' ' && *i < 126) ? *i : '.'; - } - if (!ascii.empty()) { - for (; (offset % block_size) != 0; ++offset) { - if ((offset % block_size) == block_size/2) - stream << " "; - stream << " "; - } - stream << " " << ascii << "\n"; - } - stream << std::dec; + detail::HexDumper dumper (stream, block_size); + for (; i != i_end; ++i) + dumper(*i); } ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ //#include "hexdump.mpp" - + // Local Variables: // mode: c++ // fill-column: 100