From e00f62022e58036a1d760a42392431ac80f37b0b Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Mon, 25 Feb 2019 12:17:48 -0800 Subject: [PATCH] Fabric: More flexible definition of ConcreteViewShadowNode Summary: The ConcreteViewShadowNode was changed to be independend of actual amount of template arguments of ConcreteShadowNode. We will use it soon. Reviewed By: JoshuaGross Differential Revision: D14187761 fbshipit-source-id: b4c8051e2ae3803932713b0c255492466e80d3bd --- .../fabric/components/view/ConcreteViewShadowNode.h | 13 +++++++++---- .../fabric/core/shadownode/ConcreteShadowNode.h | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h b/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h index 584afe8ec9e..d22010198cb 100644 --- a/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h +++ b/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h @@ -28,11 +28,13 @@ namespace react { template < const char *concreteComponentName, typename ViewPropsT = ViewProps, - typename ViewEventEmitterT = ViewEventEmitter> + typename ViewEventEmitterT = ViewEventEmitter, + typename... Ts> class ConcreteViewShadowNode : public ConcreteShadowNode< concreteComponentName, ViewPropsT, - ViewEventEmitterT>, + ViewEventEmitterT, + Ts...>, public AccessibleShadowNode, public YogaLayoutableShadowNode { static_assert( @@ -46,8 +48,11 @@ class ConcreteViewShadowNode : public ConcreteShadowNode< "ViewPropsT must be a descendant of AccessibilityProps"); public: - using BaseShadowNode = - ConcreteShadowNode; + using BaseShadowNode = ConcreteShadowNode< + concreteComponentName, + ViewPropsT, + ViewEventEmitterT, + Ts...>; using ConcreteViewProps = ViewPropsT; ConcreteViewShadowNode( diff --git a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h index c85abc748a6..a11afafa26d 100644 --- a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h +++ b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h @@ -22,7 +22,8 @@ namespace react { template < const char *concreteComponentName, typename PropsT, - typename EventEmitterT = EventEmitter> + typename EventEmitterT = EventEmitter, + typename... Ts> class ConcreteShadowNode : public ShadowNode { static_assert( std::is_base_of::value,