First cut at minibind classes.
[minibind.git] / jni / minibind / parcel.cc
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "parcel.h"
6
7 #include "common.h"
8
9 namespace minibind {
10
11 Parcel::Parcel() : data_(), objects_() {}
12
13 Parcel::~Parcel() {}
14
15 void Parcel::WriteInterfaceToken(const std::string& str) {
16 WriteUTF8(str);
17 }
18
19 void Parcel::WriteUTF8(const std::string& str) {
20 data_.insert(data_.end(), str.begin(), str.end());
21 }
22
23 void Parcel::WriteUInt32(uint32_t ui32) {
24 data_.push_back((ui32 >> 24) & 0xff);
25 data_.push_back((ui32 >> 16) & 0xff);
26 data_.push_back((ui32 >> 8) & 0xff);
27 data_.push_back((ui32 >> 0) & 0xff);
28 }
29
30 binder_uintptr_t Parcel::DataPointer() const {
31 return reinterpret_cast<binder_uintptr_t>(&data_[0]);
32 }
33
34 size_t Parcel::DataSize() const {
35 return 0;
36 }
37
38 void Parcel::SetDataSize(size_t size) {
39 // TODO: handle object lifetimes
40 CHECK(size % 4 == 0);
41 data_.resize(size);
42 }
43
44 void Parcel::Print() const {
45 for (size_t i = 0; i < data_.size(); i += 4) {
46 ALOG("%0x %0x %0x %0x", data_[i], data_[i+1], data_[i+2], data_[i+3]);
47 }
48 }
49
50 } // namespace minibind