1 /* 2 * Copyright (C) 2005 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <hwbinder/TextOutput.h> 18 19 #include <hwbinder/Debug.h> 20 21 #include <utils/String8.h> 22 #include <utils/String16.h> 23 24 #include <stdio.h> 25 #include <stdlib.h> 26 #include <string.h> 27 28 namespace android { 29 namespace hardware { 30 31 // --------------------------------------------------------------------------- 32 33 TextOutput::TextOutput() { 34 } 35 36 TextOutput::~TextOutput() { 37 } 38 39 // --------------------------------------------------------------------------- 40 41 static void textOutputPrinter(void* cookie, const char* txt) 42 { 43 ((TextOutput*)cookie)->print(txt, strlen(txt)); 44 } 45 46 TextOutput& operator<<(TextOutput& to, const TypeCode& val) 47 { 48 printTypeCode(val.typeCode(), textOutputPrinter, (void*)&to); 49 return to; 50 } 51 52 HexDump::HexDump(const void *buf, size_t size, size_t bytesPerLine) 53 : mBuffer(buf) 54 , mSize(size) 55 , mBytesPerLine(bytesPerLine) 56 , mSingleLineCutoff(16) 57 , mAlignment(4) 58 , mCArrayStyle(false) 59 { 60 if (bytesPerLine >= 16) mAlignment = 4; 61 else if (bytesPerLine >= 8) mAlignment = 2; 62 else mAlignment = 1; 63 } 64 65 TextOutput& operator<<(TextOutput& to, const HexDump& val) 66 { 67 printHexData(0, val.buffer(), val.size(), val.bytesPerLine(), 68 val.singleLineCutoff(), val.alignment(), val.carrayStyle(), 69 textOutputPrinter, (void*)&to); 70 return to; 71 } 72 73 } // namespace hardware 74 } // namespace android 75