Kevin Gozali acc2ed2488 Moved TurboModule C++ core to github
Summary:
This is only the core C++ part of TurboModule - moving to github to make integration with existing NativeModules system slightly easier. Other bindings for iOS/Android are not yet ready to move.

Notes:
* TurboModules is not ready to use at the moment.
* Build configuration is not yet provided (cocoapods/.xcodeproj/gradle), just like Fabric.
* No effort was done to make this lib C++17 strictly compliant yet (there will be in the future).

Reviewed By: RSNara

Differential Revision: D13551211

fbshipit-source-id: cd3b458e6746ee9218451962ca65b1ad641a32db
2018-12-26 17:18:21 -08:00

50 lines
1.1 KiB
C++

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "LongLivedObject.h"
namespace facebook {
namespace react {
// LongLivedObjectCollection
LongLivedObjectCollection& LongLivedObjectCollection::get() {
static LongLivedObjectCollection instance;
return instance;
}
LongLivedObjectCollection::LongLivedObjectCollection() {}
void LongLivedObjectCollection::add(std::shared_ptr<LongLivedObject> so) {
collection_.insert(so);
}
void LongLivedObjectCollection::remove(const LongLivedObject *o) {
auto p = collection_.begin();
for (; p != collection_.end(); p++) {
if (p->get() == o) {
break;
}
}
if (p != collection_.end()) {
collection_.erase(p);
}
}
void LongLivedObjectCollection::clear() {
collection_.clear();
}
// LongLivedObject
LongLivedObject::LongLivedObject() {}
void LongLivedObject::allowRelease() {
LongLivedObjectCollection::get().remove(this);
}
} // namespace react
} // namespace facebook