blob: 5628f5c771561d6832e7274becd5a0386897566e [file] [log] [blame]
Mathias Agopian4ea13dc2013-05-06 20:20:50 -07001/*
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
Steven Moreland507238e2020-07-14 22:12:20 +000017#include "TextOutput.h"
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070018
Martijn Coenen4080edc2016-05-04 14:17:02 +020019#include <hwbinder/Debug.h>
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070020
Jeff Sharkey69c328d2013-05-30 13:53:39 -070021#include <utils/String8.h>
22#include <utils/String16.h>
23
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070024#include <stdio.h>
25#include <stdlib.h>
26#include <string.h>
27
28namespace android {
Martijn Coenenf75a23d2016-08-01 11:55:17 +020029namespace hardware {
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070030
31// ---------------------------------------------------------------------------
32
Wei Wang896c8562016-10-14 09:54:27 -070033TextOutput::TextOutput() {
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070034}
35
Wei Wang896c8562016-10-14 09:54:27 -070036TextOutput::~TextOutput() {
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070037}
38
39// ---------------------------------------------------------------------------
40
Mathias Agopian4ea13dc2013-05-06 20:20:50 -070041static void textOutputPrinter(void* cookie, const char* txt)
42{
43 ((TextOutput*)cookie)->print(txt, strlen(txt));
44}
45
46TextOutput& operator<<(TextOutput& to, const TypeCode& val)
47{
48 printTypeCode(val.typeCode(), textOutputPrinter, (void*)&to);
49 return to;
50}
51
52HexDump::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
65TextOutput& 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
Steven Moreland7173a4c2019-09-26 15:55:02 -070073} // namespace hardware
74} // namespace android