7 #include "flutter/fml/macros.h"
9 static_assert(__has_feature(objc_arc),
"ARC must be enabled.");
13 class NSDataMapping :
public fml::Mapping {
15 explicit NSDataMapping(NSData* data) : data_(data) {}
17 size_t GetSize()
const override {
return data_.length; }
19 const uint8_t* GetMapping()
const override {
return static_cast<const uint8_t*
>(data_.bytes); }
21 bool IsDontNeedSafe()
const override {
return false; }
25 FML_DISALLOW_COPY_AND_ASSIGN(NSDataMapping);
30 const uint8_t* bytes =
static_cast<const uint8_t*
>(data.bytes);
31 return fml::MallocMapping::Copy(bytes, data.length);
35 size_t size = buffer.GetSize();
36 return [NSData dataWithBytesNoCopy:buffer.Release() length:size];
40 return std::make_unique<NSDataMapping>(data);
44 return [NSData dataWithBytes:mapping->GetMapping() length:mapping->GetSize()];