diff --git a/ReactCommon/fabric/mapbuffer/MapBuffer.cpp b/ReactCommon/fabric/mapbuffer/MapBuffer.cpp new file mode 100644 index 00000000000000..330890f8832d55 --- /dev/null +++ b/ReactCommon/fabric/mapbuffer/MapBuffer.cpp @@ -0,0 +1,18 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "MapBuffer.h" + +namespace facebook { +namespace react { + +MapBuffer::MapBuffer() {} + +MapBuffer::~MapBuffer() {} + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/fabric/mapbuffer/MapBuffer.h b/ReactCommon/fabric/mapbuffer/MapBuffer.h new file mode 100644 index 00000000000000..e92a6f40635ac8 --- /dev/null +++ b/ReactCommon/fabric/mapbuffer/MapBuffer.h @@ -0,0 +1,37 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include + +namespace facebook { +namespace react { + +/** + * MapBuffer is an optimized map format for transferring data like props between + * C++ and other platforms The implemenation of this map is optimized to: + * - be compact to optimize space when sparse (sparse is the common case). + * - be accessible through JNI with zero/minimal copying via ByteBuffer. + * - be Have excellent C++ single-write and many-read performance by maximizing + * CPU cache performance through compactness, data locality, and fixed offsets + * where possible. + * - be optimized for iteration and intersection against other maps, but with + * reasonably good random access as well. + * - Work recursively for nested maps/arrays. + * - Supports dynamic types that map to JSON. + * - Don't require mutability - single-write on creation. + * - have minimal APK size and build time impact. + */ +class MapBuffer { + public: + MapBuffer(); + virtual ~MapBuffer(); +}; + +} // namespace react +} // namespace facebook diff --git a/ReactCommon/fabric/mapbuffer/tests/MapBufferTest.cpp b/ReactCommon/fabric/mapbuffer/tests/MapBufferTest.cpp new file mode 100644 index 00000000000000..591f24f22cf813 --- /dev/null +++ b/ReactCommon/fabric/mapbuffer/tests/MapBufferTest.cpp @@ -0,0 +1,14 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include + +#include + +TEST(MapBufferTest, testSomething) { + // TODO +}