Skip to content

Commit a1fb9c5

Browse files
pr feedback
1 parent 9746a2f commit a1fb9c5

3 files changed

Lines changed: 44 additions & 65 deletions

File tree

yoga/YGGridTrackList.cpp

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,28 @@
99
#include <yoga/node/Node.h>
1010
#include <yoga/style/GridTrack.h>
1111
#include <yoga/style/StyleSizeLength.h>
12+
#include <memory>
1213
#include <vector>
1314

1415
using namespace facebook::yoga;
1516

16-
// Internal representation of a grid track value
1717
struct YGGridTrackValue {
1818
enum class Type { Points, Percent, Fr, Auto, MinMax };
1919

2020
Type type;
2121
float value;
22-
YGGridTrackValue* minValue;
23-
YGGridTrackValue* maxValue;
22+
std::unique_ptr<YGGridTrackValue> minValue;
23+
std::unique_ptr<YGGridTrackValue> maxValue;
2424

25-
YGGridTrackValue(Type t, float v = 0.0f)
26-
: type(t), value(v), minValue(nullptr), maxValue(nullptr) {}
25+
YGGridTrackValue(Type t, float v = 0.0f) : type(t), value(v) {}
2726

28-
YGGridTrackValue(YGGridTrackValue* min, YGGridTrackValue* max)
29-
: type(Type::MinMax), value(0.0f), minValue(min), maxValue(max) {}
30-
31-
~YGGridTrackValue() {
32-
// MinMax owns its min/max values
33-
if (type == Type::MinMax) {
34-
delete minValue;
35-
delete maxValue;
36-
}
37-
}
27+
YGGridTrackValue(
28+
std::unique_ptr<YGGridTrackValue> min,
29+
std::unique_ptr<YGGridTrackValue> max)
30+
: type(Type::MinMax),
31+
value(0.0f),
32+
minValue(std::move(min)),
33+
maxValue(std::move(max)) {}
3834

3935
StyleSizeLength toStyleSizeLength() const {
4036
switch (type) {
@@ -54,27 +50,20 @@ struct YGGridTrackValue {
5450
}
5551
};
5652

57-
// Internal representation of a grid track list
5853
struct YGGridTrackList {
59-
std::vector<YGGridTrackValue*> tracks;
54+
std::vector<std::unique_ptr<YGGridTrackValue>> tracks;
6055

6156
YGGridTrackList() = default;
6257
YGGridTrackList(const YGGridTrackList&) = delete;
6358
YGGridTrackList& operator=(const YGGridTrackList&) = delete;
6459
YGGridTrackList(YGGridTrackList&&) = delete;
6560
YGGridTrackList& operator=(YGGridTrackList&&) = delete;
6661

67-
~YGGridTrackList() {
68-
for (auto* track : tracks) {
69-
delete track;
70-
}
71-
}
72-
7362
GridTrackList toGridTrackList() const {
7463
GridTrackList result;
7564
result.reserve(tracks.size());
7665

77-
for (auto* track : tracks) {
66+
for (const auto& track : tracks) {
7867
if (track->type == YGGridTrackValue::Type::MinMax) {
7968
auto min = track->minValue->toStyleSizeLength();
8069
auto max = track->maxValue->toStyleSizeLength();
@@ -116,28 +105,31 @@ void YGGridTrackListAddTrack(
116105
YGGridTrackListRef list,
117106
YGGridTrackValueRef trackValue) {
118107
if (list && trackValue) {
119-
list->tracks.push_back(trackValue);
108+
list->tracks.push_back(std::unique_ptr<YGGridTrackValue>(trackValue));
120109
}
121110
}
122111

123-
YGGridTrackValueRef YGPoints(float points) {
112+
YGGridTrackValueRef YGGridTrackPoints(float points) {
124113
return new YGGridTrackValue(YGGridTrackValue::Type::Points, points);
125114
}
126115

127-
YGGridTrackValueRef YGPercent(float percent) {
116+
YGGridTrackValueRef YGGridTrackPercent(float percent) {
128117
return new YGGridTrackValue(YGGridTrackValue::Type::Percent, percent);
129118
}
130119

131-
YGGridTrackValueRef YGFr(float fr) {
120+
YGGridTrackValueRef YGGridTrackFr(float fr) {
132121
return new YGGridTrackValue(YGGridTrackValue::Type::Fr, fr);
133122
}
134123

135-
YGGridTrackValueRef YGAuto() {
124+
YGGridTrackValueRef YGGridTrackAuto() {
136125
return new YGGridTrackValue(YGGridTrackValue::Type::Auto);
137126
}
138127

139-
YGGridTrackValueRef YGMinMax(YGGridTrackValueRef min, YGGridTrackValueRef max) {
140-
return new YGGridTrackValue(min, max);
128+
YGGridTrackValueRef
129+
YGGridTrackMinMax(YGGridTrackValueRef min, YGGridTrackValueRef max) {
130+
return new YGGridTrackValue(
131+
std::unique_ptr<YGGridTrackValue>(min),
132+
std::unique_ptr<YGGridTrackValue>(max));
141133
}
142134

143135
void YGNodeStyleSetGridTemplateRows(

yoga/YGGridTrackList.h

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,55 +42,27 @@ YG_EXPORT void YGGridTrackListAddTrack(
4242
/**
4343
* Create a grid track value with a points (px) length.
4444
*/
45-
YG_EXPORT YGGridTrackValueRef YGPoints(float points);
45+
YG_EXPORT YGGridTrackValueRef YGGridTrackPoints(float points);
4646

4747
/**
4848
* Create a grid track value with a percentage length.
4949
*/
50-
YG_EXPORT YGGridTrackValueRef YGPercent(float percent);
50+
YG_EXPORT YGGridTrackValueRef YGGridTrackPercent(float percent);
5151

5252
/**
5353
* Create a grid track value with a flexible (fr) length.
5454
*/
55-
YG_EXPORT YGGridTrackValueRef YGFr(float fr);
55+
YG_EXPORT YGGridTrackValueRef YGGridTrackFr(float fr);
5656

5757
/**
5858
* Create a grid track value with auto sizing.
5959
*/
60-
YG_EXPORT YGGridTrackValueRef YGAuto(void);
60+
YG_EXPORT YGGridTrackValueRef YGGridTrackAuto(void);
6161

6262
/**
6363
* Create a grid track value with minmax(min, max) sizing.
6464
*/
65-
YG_EXPORT YGGridTrackValueRef
66-
YGMinMax(YGGridTrackValueRef min, YGGridTrackValueRef max);
67-
68-
/**
69-
* Set the grid-template-rows property on a node.
70-
*/
71-
YG_EXPORT void YGNodeStyleSetGridTemplateRows(
72-
YGNodeRef node,
73-
YGGridTrackListRef trackList);
74-
75-
/**
76-
* Set the grid-template-columns property on a node.
77-
*/
78-
YG_EXPORT void YGNodeStyleSetGridTemplateColumns(
79-
YGNodeRef node,
80-
YGGridTrackListRef trackList);
81-
82-
/**
83-
* Set the grid-auto-rows property on a node.
84-
*/
85-
YG_EXPORT void YGNodeStyleSetGridAutoRows(
86-
YGNodeRef node,
87-
YGGridTrackListRef trackList);
88-
89-
/**
90-
* Set the grid-auto-columns property on a node.
91-
*/
92-
YG_EXPORT void YGNodeStyleSetGridAutoColumns(
93-
YGNodeRef node,
94-
YGGridTrackListRef trackList);
65+
YG_EXPORT YGGridTrackValueRef
66+
YGGridTrackMinMax(YGGridTrackValueRef min, YGGridTrackValueRef max);
9567

9668
YG_EXTERN_C_END

yoga/YGNodeStyle.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#pragma once
99

1010
#include <stddef.h>
11+
#include <yoga/YGGridTrackList.h>
1112
#include <yoga/YGNode.h>
1213
#include <yoga/YGValue.h>
1314

@@ -178,4 +179,18 @@ YG_EXPORT void YGNodeStyleSetGridRowEndAuto(YGNodeRef node);
178179
YG_EXPORT void YGNodeStyleSetGridRowEndSpan(YGNodeRef node, int span);
179180
YG_EXPORT int YGNodeStyleGetGridRowEnd(YGNodeConstRef node);
180181

182+
// Grid Container Properties
183+
YG_EXPORT void YGNodeStyleSetGridTemplateRows(
184+
YGNodeRef node,
185+
YGGridTrackListRef trackList);
186+
YG_EXPORT void YGNodeStyleSetGridTemplateColumns(
187+
YGNodeRef node,
188+
YGGridTrackListRef trackList);
189+
YG_EXPORT void YGNodeStyleSetGridAutoRows(
190+
YGNodeRef node,
191+
YGGridTrackListRef trackList);
192+
YG_EXPORT void YGNodeStyleSetGridAutoColumns(
193+
YGNodeRef node,
194+
YGGridTrackListRef trackList);
195+
181196
YG_EXTERN_C_END

0 commit comments

Comments
 (0)