Copy fbjni library from react-native
This commit is contained in:
55
lib/fb/include/jni/WeakReference.h
Normal file
55
lib/fb/include/jni/WeakReference.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <jni.h>
|
||||
#include <fb/noncopyable.h>
|
||||
#include <fb/Countable.h>
|
||||
#include <fb/visibility.h>
|
||||
|
||||
|
||||
namespace facebook {
|
||||
namespace jni {
|
||||
|
||||
class FBEXPORT WeakReference : public Countable {
|
||||
public:
|
||||
typedef RefPtr<WeakReference> Ptr;
|
||||
WeakReference(jobject strongRef);
|
||||
~WeakReference();
|
||||
jweak weakRef() {
|
||||
return m_weakReference;
|
||||
}
|
||||
|
||||
private:
|
||||
jweak m_weakReference;
|
||||
};
|
||||
|
||||
// This class is intended to take a weak reference and turn it into a strong
|
||||
// local reference. Consequently, it should only be allocated on the stack.
|
||||
class FBEXPORT ResolvedWeakReference : public noncopyable {
|
||||
public:
|
||||
ResolvedWeakReference(jobject weakRef);
|
||||
ResolvedWeakReference(const RefPtr<WeakReference>& weakRef);
|
||||
~ResolvedWeakReference();
|
||||
|
||||
operator jobject () {
|
||||
return m_strongReference;
|
||||
}
|
||||
|
||||
explicit operator bool () {
|
||||
return m_strongReference != nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
jobject m_strongReference;
|
||||
};
|
||||
|
||||
} }
|
||||
|
Reference in New Issue
Block a user