# ndk::impl::ScopedAResource


`#include <binder_auto_utils.h>`

This baseclass owns a single object, used to make various classes RAII.

## Summary

| ### Constructors and Destructors ||
|---|---|
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a8e9a24c6cc5c67be6bce7952c4f61781(T t)` Takes ownership of t. ||
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1acf3698c65e7cdb85e5562870bfacccc4(const https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource &)` ||
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1ad96f0d4baec67890421e763ad00d6100(https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource && other)` ||
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a3ef0acb2cfb7719a349c70f9902410ac()` This deletes the underlying object if it exists. ||

| ### Public functions ||
|---|---|
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a16b348f82e9c5607a60bd3c390de11a9()` | `T` This returns the underlying object to be modified but does not affect ownership. |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a7aac6588d84a866dc9b30c0d8ebce6f2() const ` | `const T` This returns the const underlying object but does not affect ownership. |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a0f9bcddfa1f4babe476feddf78d85871()` | `T *` This allows the value in this class to be set from beneath it. |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a380885f868216184e8cbeec0653f8b58(const https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource &)=delete` | `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource &` |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a361d999f328d901e0d3500d0dba6cf4d(https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource && other) noexcept` | `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource &` |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a7b843cbd28682058b2212bd5b93e2ed2()` | `T` Release the underlying resource. |
| `https://developer.android.com/ndk/reference/classndk/1-1impl-1-1-scoped-a-resource#classndk_1_1impl_1_1_scoped_a_resource_1a805bd77886baf4580ae136e141a23424(T t)` | `void` Takes ownership of t. |

## Public functions

### ScopedAResource

```
 ScopedAResource(
  T t
)
```
Takes ownership of t.

### ScopedAResource

```
 ScopedAResource(
  const ScopedAResource &
)=delete
```

### ScopedAResource

```
 ScopedAResource(
  ScopedAResource && other
) noexcept
```

### get

```
T get()
```
This returns the underlying object to be modified but does not affect ownership.

### get

```
const T get() const 
```
This returns the const underlying object but does not affect ownership.

### getR

```
T * getR()
```
This allows the value in this class to be set from beneath it.

If you call this method and then change the value of T\*, you must take ownership of the value you are replacing and add ownership to the object that is put in here.

Recommended use is like this: ScopedAResource a; // will be nullptr SomeInitFunction(a.getR()); // value is initialized with refcount

Other usecases are discouraged.

### operator=

```
ScopedAResource & operator=(
  const ScopedAResource &
)=delete
```

### operator=

```
ScopedAResource & operator=(
  ScopedAResource && other
) noexcept
```

### release

```
T release()
```
Release the underlying resource.

### set

```
void set(
  T t
)
```
Takes ownership of t.

### \~ScopedAResource

```
 ~ScopedAResource()
```
This deletes the underlying object if it exists.

See set.