blob: 101eba318f68f062ac093a0ed6ff41d9cc805922 [file] [log] [blame]
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -08001/*
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
Mathias Agopian002e1e52013-05-06 20:20:50 -070017#include <binder/TextOutput.h>
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080018
Mathias Agopian002e1e52013-05-06 20:20:50 -070019#include <binder/Debug.h>
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080020
Jeff Sharkey8cb89252013-05-30 13:53:39 -070021#include <utils/String8.h>
22#include <utils/String16.h>
23
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080024#include <stdio.h>
25#include <stdlib.h>
26#include <string.h>
27
Mathias Agopian83c04462009-05-22 19:00:22 -070028namespace android {
29
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080030// ---------------------------------------------------------------------------
31
Wei Wang13c41d32016-10-19 10:23:59 -070032TextOutput::TextOutput() {
Mathias Agopian83c04462009-05-22 19:00:22 -070033}
34
Wei Wang13c41d32016-10-19 10:23:59 -070035TextOutput::~TextOutput() {
Mathias Agopian83c04462009-05-22 19:00:22 -070036}
37
38// ---------------------------------------------------------------------------
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080039
The Android Open Source Projectedbf3b62009-03-03 19:31:44 -080040static void textOutputPrinter(void* cookie, const char* txt)
41{
42 ((TextOutput*)cookie)->print(txt, strlen(txt));
43}
44
45TextOutput& operator<<(TextOutput& to, const TypeCode& val)
46{
47 printTypeCode(val.typeCode(), textOutputPrinter, (void*)&to);
48 return to;
49}
50
51HexDump::HexDump(const void *buf, size_t size, size_t bytesPerLine)
52 : mBuffer(buf)
53 , mSize(size)
54 , mBytesPerLine(bytesPerLine)
55 , mSingleLineCutoff(16)
56 , mAlignment(4)
57 , mCArrayStyle(false)
58{
59 if (bytesPerLine >= 16) mAlignment = 4;
60 else if (bytesPerLine >= 8) mAlignment = 2;
61 else mAlignment = 1;
62}
63
64TextOutput& operator<<(TextOutput& to, const HexDump& val)
65{
66 printHexData(0, val.buffer(), val.size(), val.bytesPerLine(),
67 val.singleLineCutoff(), val.alignment(), val.carrayStyle(),
68 textOutputPrinter, (void*)&to);
69 return to;
70}
71
72}; // namespace android