From 6c5b8c603b5eb3309ddb9ffe144c81e2b4c5aaa5 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Tue, 6 Nov 2018 10:58:51 -0800 Subject: [PATCH] Fabric: Introduced ComponentDescriptorRegistry::at() method family Summary: This is more usable (because it allows to use `->` operator) and safe (const-style) methods replacing old `operator[]` methods. Reviewed By: mdvacca Differential Revision: D12876744 fbshipit-source-id: 8ea7398c9777f8be3e88db873ec00915d0761615 --- .../uimanager/ComponentDescriptorRegistry.cpp | 18 ++++++++++++++++++ .../uimanager/ComponentDescriptorRegistry.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp b/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp index 680c0afd3a1da3..8cd94d14908729 100644 --- a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp +++ b/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.cpp @@ -81,6 +81,24 @@ static const std::string componentNameByReactViewName(std::string viewName) { return viewName; } +const ComponentDescriptor &ComponentDescriptorRegistry::at( + ComponentName componentName) const { + auto unifiedComponentName = componentNameByReactViewName(componentName); + + auto it = _registryByName.find(unifiedComponentName); + if (it == _registryByName.end()) { + throw std::invalid_argument( + ("Unable to find componentDescriptor for " + unifiedComponentName) + .c_str()); + } + return *it->second; +} + +const ComponentDescriptor &ComponentDescriptorRegistry::at( + ComponentHandle componentHandle) const { + return *_registryByHandle.at(componentHandle); +} + SharedShadowNode ComponentDescriptorRegistry::createNode( Tag tag, const std::string &viewName, diff --git a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h b/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h index 6629ad1562fefd..83a119713b3209 100644 --- a/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h +++ b/ReactCommon/fabric/uimanager/ComponentDescriptorRegistry.h @@ -25,6 +25,9 @@ class ComponentDescriptorRegistry { void registerComponentDescriptor( SharedComponentDescriptor componentDescriptor); + const ComponentDescriptor &at(ComponentName componentName) const; + const ComponentDescriptor &at(ComponentHandle componentHandle) const; + const SharedComponentDescriptor operator[]( const SharedShadowNode &shadowNode) const; const SharedComponentDescriptor operator[](