react-native/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h
Spencer Ahrens 83da74b556 Refactor uimanager stuff a bit
Summary: Simplies UIManager a bit and some other tweaks

Reviewed By: shergin

Differential Revision: D10211883

fbshipit-source-id: 93ab23dd2baab2fdc6d9c54e976b001a19efab7f
2018-10-10 20:01:04 -07:00

43 lines
1.2 KiB
C++

// 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 <memory>
#include <fabric/core/ComponentDescriptor.h>
namespace facebook {
namespace react {
class ComponentDescriptorRegistry;
using SharedComponentDescriptorRegistry =
std::shared_ptr<const ComponentDescriptorRegistry>;
/*
* Registry of particular `ComponentDescriptor`s.
*/
class ComponentDescriptorRegistry {
public:
void registerComponentDescriptor(
SharedComponentDescriptor componentDescriptor);
const SharedComponentDescriptor operator[](
const SharedShadowNode &shadowNode) const;
const SharedComponentDescriptor operator[](
const ComponentName &componentName) const;
SharedShadowNode createNode(
Tag tag, const std::string &viewName, Tag rootTag, const folly::dynamic &props, const SharedEventTarget &eventTarget) const;
private:
std::unordered_map<ComponentHandle, SharedComponentDescriptor>
_registryByHandle;
std::unordered_map<ComponentName, SharedComponentDescriptor> _registryByName;
};
} // namespace react
} // namespace facebook