Replace getter in YG_NODE_STYLE_PROPERTY_UNIT_IMPL
macro with template code
Reviewed By: astreet Differential Revision: D8874734 fbshipit-source-id: ba94b4d0fd31e8344c7836b66a269d5f1f69e225
This commit is contained in:
committed by
Facebook Github Bot
parent
6132a59772
commit
48a8f883ba
@@ -604,19 +604,31 @@ struct StyleProp {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template <YGStyle::Dimensions YGStyle::*P>
|
||||||
|
struct DimensionProp {
|
||||||
|
template <YGDimension idx>
|
||||||
|
static WIN_STRUCT(YGValue) get(YGNodeRef node) {
|
||||||
|
YGValue value = (node->getStyle().*P)[idx];
|
||||||
|
if (value.unit == YGUnitUndefined || value.unit == YGUnitAuto) {
|
||||||
|
value.value = YGUndefined;
|
||||||
|
}
|
||||||
|
return WIN_STRUCT_REF(value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#define YG_NODE_STYLE_PROPERTY_SETTER_UNIT_IMPL( \
|
#define YG_NODE_STYLE_PROPERTY_SETTER_UNIT_IMPL( \
|
||||||
type, name, paramName, instanceName) \
|
type, name, paramName, instanceName, dimension) \
|
||||||
void YGNodeStyleSet##name(const YGNodeRef node, const type paramName) { \
|
void YGNodeStyleSet##name(const YGNodeRef node, const type paramName) { \
|
||||||
YGValue value = { \
|
YGValue value = { \
|
||||||
YGFloatSanitize(paramName), \
|
YGFloatSanitize(paramName), \
|
||||||
YGFloatIsUndefined(paramName) ? YGUnitUndefined : YGUnitPoint, \
|
YGFloatIsUndefined(paramName) ? YGUnitUndefined : YGUnitPoint, \
|
||||||
}; \
|
}; \
|
||||||
if ((node->getStyle().instanceName.value != value.value && \
|
if ((node->getStyle().instanceName[dimension].value != value.value && \
|
||||||
value.unit != YGUnitUndefined) || \
|
value.unit != YGUnitUndefined) || \
|
||||||
node->getStyle().instanceName.unit != value.unit) { \
|
node->getStyle().instanceName[dimension].unit != value.unit) { \
|
||||||
node->getStyle().instanceName = value; \
|
node->getStyle().instanceName[dimension] = value; \
|
||||||
node->markDirtyAndPropogate(); \
|
node->markDirtyAndPropogate(); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
@@ -627,10 +639,10 @@ struct StyleProp {
|
|||||||
YGFloatSanitize(paramName), \
|
YGFloatSanitize(paramName), \
|
||||||
YGFloatIsUndefined(paramName) ? YGUnitUndefined : YGUnitPercent, \
|
YGFloatIsUndefined(paramName) ? YGUnitUndefined : YGUnitPercent, \
|
||||||
}; \
|
}; \
|
||||||
if ((node->getStyle().instanceName.value != value.value && \
|
if ((node->getStyle().instanceName[dimension].value != value.value && \
|
||||||
value.unit != YGUnitUndefined) || \
|
value.unit != YGUnitUndefined) || \
|
||||||
node->getStyle().instanceName.unit != value.unit) { \
|
node->getStyle().instanceName[dimension].unit != value.unit) { \ \
|
||||||
node->getStyle().instanceName = value; \
|
node->getStyle().instanceName[dimension] = value; \
|
||||||
node->markDirtyAndPropogate(); \
|
node->markDirtyAndPropogate(); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
@@ -668,16 +680,13 @@ struct StyleProp {
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_NODE_STYLE_PROPERTY_UNIT_IMPL(type, name, paramName, instanceName) \
|
#define YG_NODE_STYLE_PROPERTY_UNIT_IMPL( \
|
||||||
|
type, name, paramName, instanceName, dimension) \
|
||||||
YG_NODE_STYLE_PROPERTY_SETTER_UNIT_IMPL( \
|
YG_NODE_STYLE_PROPERTY_SETTER_UNIT_IMPL( \
|
||||||
float, name, paramName, instanceName) \
|
float, name, paramName, instanceName, dimension) \
|
||||||
\
|
\
|
||||||
type YGNodeStyleGet##name(const YGNodeRef node) { \
|
type YGNodeStyleGet##name(const YGNodeRef node) { \
|
||||||
YGValue value = node->getStyle().instanceName; \
|
return DimensionProp<&YGStyle::instanceName>::get<dimension>(node); \
|
||||||
if (value.unit == YGUnitUndefined || value.unit == YGUnitAuto) { \
|
|
||||||
value.value = YGUndefined; \
|
|
||||||
} \
|
|
||||||
return value; \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define YG_NODE_STYLE_PROPERTY_UNIT_AUTO_IMPL( \
|
#define YG_NODE_STYLE_PROPERTY_UNIT_AUTO_IMPL( \
|
||||||
@@ -990,22 +999,26 @@ YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
|||||||
YGValue,
|
YGValue,
|
||||||
MinWidth,
|
MinWidth,
|
||||||
minWidth,
|
minWidth,
|
||||||
minDimensions[YGDimensionWidth]);
|
minDimensions,
|
||||||
|
YGDimensionWidth);
|
||||||
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
||||||
YGValue,
|
YGValue,
|
||||||
MinHeight,
|
MinHeight,
|
||||||
minHeight,
|
minHeight,
|
||||||
minDimensions[YGDimensionHeight]);
|
minDimensions,
|
||||||
|
YGDimensionHeight);
|
||||||
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
||||||
YGValue,
|
YGValue,
|
||||||
MaxWidth,
|
MaxWidth,
|
||||||
maxWidth,
|
maxWidth,
|
||||||
maxDimensions[YGDimensionWidth]);
|
maxDimensions,
|
||||||
|
YGDimensionWidth);
|
||||||
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
YG_NODE_STYLE_PROPERTY_UNIT_IMPL(
|
||||||
YGValue,
|
YGValue,
|
||||||
MaxHeight,
|
MaxHeight,
|
||||||
maxHeight,
|
maxHeight,
|
||||||
maxDimensions[YGDimensionHeight]);
|
maxDimensions,
|
||||||
|
YGDimensionHeight);
|
||||||
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Left, position[YGEdgeLeft]);
|
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Left, position[YGEdgeLeft]);
|
||||||
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Top, position[YGEdgeTop]);
|
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Top, position[YGEdgeTop]);
|
||||||
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Right, position[YGEdgeRight]);
|
YG_NODE_LAYOUT_PROPERTY_IMPL(float, Right, position[YGEdgeRight]);
|
||||||
|
Reference in New Issue
Block a user