/* * 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 * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Authors: Manuel Mausz (manuel@mausz.at) * Christian Raschko (c.raschko@netcore.at) */ // Header #include "wxbufferex.h" //Libraries #include //------------------------------------------------------------------------------ // Hex dump on the stream. void wxMemoryBufferEx::HexDump(wxOutputStream &strm) { wxTextOutputStream out(strm); const size_t colums = 16; size_t size = GetDataLen(); //print all data for(size_t i = 0; i < ((size % colums == 0) ? (size / colums) : (size / colums) + 1); i++) { //address out << wxString::Format(_T("%.4x "), i * colums); //print hex table for(size_t j = 0; j < colums; j++) { if(j == colums/2) out << _T(" "); if(j + i*colums >= size) { out << _T(" "); } else { wxByte *pos = static_cast(GetData()); pos += (j + i * colums); out << wxString::Format(_T(" %.2x"), *pos); } } //seperator out << _T(" "); //print ascii for(size_t j = 0; j < colums; j++) { if(j == colums/2) out << _T(" "); if(j + i*colums >= size) { out << _T(" "); } else { wxByte *pos = static_cast(GetData()); pos += ( j + i * colums); out << wxString::Format(_T("%c"), (wxIsprint(*pos) ? *pos : '.')); } } out << endl; } }