libbinder: Add support for Value, Map, and IpPrefix types
Change-Id: I4cd06c7c65f69e6b787111573b29c4ff22f57981
diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h
index 69de136..cf2fa47 100644
--- a/include/binder/Parcel.h
+++ b/include/binder/Parcel.h
@@ -31,6 +31,7 @@
#include <binder/IInterface.h>
#include <binder/Parcelable.h>
+#include <binder/Map.h>
// ---------------------------------------------------------------------------
namespace android {
@@ -43,6 +44,10 @@
class String8;
class TextOutput;
+namespace binder {
+class Value;
+};
+
class Parcel {
friend class IPCThreadState;
public:
@@ -162,6 +167,8 @@
status_t writeParcelable(const Parcelable& parcelable);
+ status_t writeValue(const binder::Value& value);
+
template<typename T>
status_t write(const Flattenable<T>& val);
@@ -173,6 +180,9 @@
template<typename T>
status_t writeVectorSize(const std::unique_ptr<std::vector<T>>& val);
+ status_t writeMap(const binder::Map& map);
+ status_t writeNullableMap(const std::unique_ptr<binder::Map>& map);
+
// Place a native_handle into the parcel (the native_handle's file-
// descriptors are dup'ed, so it is safe to delete the native_handle
// when this function returns).
@@ -278,6 +288,8 @@
template<typename T>
status_t readParcelable(std::unique_ptr<T>* parcelable) const;
+ status_t readValue(binder::Value* value) const;
+
template<typename T>
status_t readStrongBinder(sp<T>* val) const;
@@ -321,6 +333,9 @@
template<typename T>
status_t resizeOutVector(std::unique_ptr<std::vector<T>>* val) const;
+ status_t readMap(binder::Map* map)const;
+ status_t readNullableMap(std::unique_ptr<binder::Map>* map) const;
+
// Like Parcel.java's readExceptionCode(). Reads the first int32
// off of a Parcel's header, returning 0 or the negative error
// code on exceptions, but also deals with skipping over rich