libutils: hide SharedBuffer by moving SharedBuffer.h to the implementation directory

Some methods in header files of classes using SharedBuffer need
to be moved to the implementation files accordingly

Change-Id: I891f3ace2b940ab219e4e449040bfed71c0547db
diff --git a/libutils/BasicHashtable.cpp b/libutils/BasicHashtable.cpp
index 491d9e9..1e9f053 100644
--- a/libutils/BasicHashtable.cpp
+++ b/libutils/BasicHashtable.cpp
@@ -22,6 +22,8 @@
 #include <utils/BasicHashtable.h>
 #include <utils/misc.h>
 
+#include "SharedBuffer.h"
+
 namespace android {
 
 BasicHashtableImpl::BasicHashtableImpl(size_t entrySize, bool hasTrivialDestructor,
@@ -46,6 +48,12 @@
 {
 }
 
+void BasicHashtableImpl::edit() {
+    if (mBuckets && !SharedBuffer::bufferFromData(mBuckets)->onlyOwner()) {
+        clone();
+    }
+}
+
 void BasicHashtableImpl::dispose() {
     if (mBuckets) {
         releaseBuckets(mBuckets, mBucketCount);