Add YGConfigGetInstanceCount
Summary: - depends on #496 - For memory leak unit test - Expose the API for C# Closes https://github.com/facebook/yoga/pull/497 Reviewed By: emilsjolander Differential Revision: D4796190 Pulled By: splhack fbshipit-source-id: 99e4e78e8dfb3d459cf6cd7103ab252c3748e5a6
This commit is contained in:
parent
ca6e0b37cf
commit
ecd0df01af
|
@ -308,6 +308,7 @@ static inline float YGResolveValueMargin(const YGValue *const value, const float
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t gNodeInstanceCount = 0;
|
int32_t gNodeInstanceCount = 0;
|
||||||
|
int32_t gConfigInstanceCount = 0;
|
||||||
|
|
||||||
WIN_EXPORT YGNodeRef YGNodeNewWithConfig(const YGConfigRef config) {
|
WIN_EXPORT YGNodeRef YGNodeNewWithConfig(const YGConfigRef config) {
|
||||||
const YGNodeRef node = gYGMalloc(sizeof(YGNode));
|
const YGNodeRef node = gYGMalloc(sizeof(YGNode));
|
||||||
|
@ -373,15 +374,21 @@ int32_t YGNodeGetInstanceCount(void) {
|
||||||
return gNodeInstanceCount;
|
return gNodeInstanceCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t YGConfigGetInstanceCount(void) {
|
||||||
|
return gConfigInstanceCount;
|
||||||
|
}
|
||||||
|
|
||||||
YGConfigRef YGConfigNew(void) {
|
YGConfigRef YGConfigNew(void) {
|
||||||
const YGConfigRef config = gYGMalloc(sizeof(YGConfig));
|
const YGConfigRef config = gYGMalloc(sizeof(YGConfig));
|
||||||
YG_ASSERT(config, "Could not allocate memory for config");
|
YG_ASSERT(config, "Could not allocate memory for config");
|
||||||
|
gConfigInstanceCount++;
|
||||||
memcpy(config, &gYGConfigDefaults, sizeof(YGConfig));
|
memcpy(config, &gYGConfigDefaults, sizeof(YGConfig));
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
void YGConfigFree(const YGConfigRef config) {
|
void YGConfigFree(const YGConfigRef config) {
|
||||||
gYGFree(config);
|
gYGFree(config);
|
||||||
|
gConfigInstanceCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void YGNodeMarkDirtyInternal(const YGNodeRef node) {
|
static void YGNodeMarkDirtyInternal(const YGNodeRef node) {
|
||||||
|
@ -3426,7 +3433,8 @@ bool YGConfigGetUseWebDefaults(const YGConfigRef config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void YGSetMemoryFuncs(YGMalloc ygmalloc, YGCalloc yccalloc, YGRealloc ygrealloc, YGFree ygfree) {
|
void YGSetMemoryFuncs(YGMalloc ygmalloc, YGCalloc yccalloc, YGRealloc ygrealloc, YGFree ygfree) {
|
||||||
YG_ASSERT(gNodeInstanceCount == 0, "Cannot set memory functions: all node must be freed first");
|
YG_ASSERT(gNodeInstanceCount == 0 && gConfigInstanceCount == 0,
|
||||||
|
"Cannot set memory functions: all node must be freed first");
|
||||||
YG_ASSERT((ygmalloc == NULL && yccalloc == NULL && ygrealloc == NULL && ygfree == NULL) ||
|
YG_ASSERT((ygmalloc == NULL && yccalloc == NULL && ygrealloc == NULL && ygfree == NULL) ||
|
||||||
(ygmalloc != NULL && yccalloc != NULL && ygrealloc != NULL && ygfree != NULL),
|
(ygmalloc != NULL && yccalloc != NULL && ygrealloc != NULL && ygfree != NULL),
|
||||||
"Cannot set memory functions: functions must be all NULL or Non-NULL");
|
"Cannot set memory functions: functions must be all NULL or Non-NULL");
|
||||||
|
|
|
@ -228,6 +228,7 @@ WIN_EXPORT void YGConfigSetPointScaleFactor(const YGConfigRef config, const floa
|
||||||
// YGConfig
|
// YGConfig
|
||||||
WIN_EXPORT YGConfigRef YGConfigNew(void);
|
WIN_EXPORT YGConfigRef YGConfigNew(void);
|
||||||
WIN_EXPORT void YGConfigFree(const YGConfigRef config);
|
WIN_EXPORT void YGConfigFree(const YGConfigRef config);
|
||||||
|
WIN_EXPORT int32_t YGConfigGetInstanceCount(void);
|
||||||
|
|
||||||
WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled(const YGConfigRef config,
|
WIN_EXPORT void YGConfigSetExperimentalFeatureEnabled(const YGConfigRef config,
|
||||||
const YGExperimentalFeature feature,
|
const YGExperimentalFeature feature,
|
||||||
|
|
Loading…
Reference in New Issue