Hippy项目源码分析Week6

2021SC@SDUSC

Hippy项目源码分析第六周

layout/android/jni

scoped_java_ref.h

// Generic base class for ScopedJavaLocalRef and ScopedJavaGlobalRef. Useful
// for allowing functions to accept a reference without having to mandate
// whether it is a local or global type.
// ScopedJavaLocalRef和ScopedJavaGlobalRef的通用基类
// 用于无论是本地类型还是全局类型,允许函数接受引用而无需授权
template <typename T>
class JavaRef : public JavaRef<jobject> {
   
 public:
  JavaRef() {
   }
  explicit JavaRef(std::nullptr_t) : JavaRef<jobject>(nullptr) {
   }
  ~JavaRef() {
   }

  T obj() const {
    return static_cast<T>(JavaRef<jobject>::obj()); }

 protected:
  JavaRef(JNIEnv* env, T obj) : JavaRef<jobject>(env, obj) {
   }

 private:
  // DISALLOW_COPY_AND_ASSIGN(JavaRef);
};

// Holds a local reference to a JNI method parameter.
// Method parameters should not be deleted, and so this class exists purely to
// wrap them as a JavaRef<T> in the JNI binding generator. Do not create
// instances manually.
// 保存对 JNI 方法参数的本地引用。
// 不应删除方法参数,
// 因此此类存在纯粹是为了将它们包装为 JNI 绑定生成器中的 JavaRef<T>。
// 不要手动创建实例。
template <typename T>
class JavaParamRef : public JavaRef<T> {
   
 public:
  // Assumes that |obj| is a parameter passed to a JNI method from Java.
  // Does not assume ownership as parameters should not be deleted.
  // 假设 |obj| 是从 Java 传递给 JNI 方法的参数。
  // 不承担所有权,因为参数不应被删除。
  JavaParamRef(JNIEnv* env, T obj) : JavaRef<T>(env, obj) {
   }

  // Allow nullptr to be converted to JavaParamRef. Some unit tests call JNI
  // methods directly from C++ and pass null for objects which are not actually
  // used by the implementation (e.g. the caller object); allow this to keep
  // working.
  // 允许将 nullptr 转换为 JavaParamRef。
  // 一些单元测试直接从 C++ 调用 JNI 方法,
  // 并为实现实际上没有使用的对象(例如调用者对象)传递 null;
  // 允许它继续工作。
  explicit JavaParamRef(std::nullptr_t) : JavaRef<T>(nullptr) {
   }

  ~JavaParamRef() {
   }

  // TODO(torne): remove this cast once we're using JavaRef consistently.
  // http://crbug.com/506850
  operator T()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值