You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					112 lines
				
				2.9 KiB
			
		
		
			
		
	
	
					112 lines
				
				2.9 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								# Reference (template)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Holds a counted reference to a [`Napi::Value`](value.md) object; initially a weak reference unless otherwise specified, may be changed to/from a strong reference by adjusting the refcount.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The referenced `Napi::Value` is not immediately destroyed when the reference count is zero; it is merely then eligible for garbage-collection if there are no other references to the `Napi::Value`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`Napi::Reference` objects allocated in static space, such as a global static instance, must call the `SuppressDestruct` method to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The following classes inherit, either directly or indirectly, from `Napi::Reference`:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* [`Napi::ObjectWrap`](object_wrap.md)
							 | 
						||
| 
								 | 
							
								* [`Napi::ObjectReference`](object_reference.md)
							 | 
						||
| 
								 | 
							
								* [`Napi::FunctionReference`](function_reference.md)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Methods
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Factory Method
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								static Napi::Reference<T> Napi::Reference::New(const T& value, uint32_t initialRefcount = 0);
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] value`: The value which is to be referenced.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] initialRefcount`: The initial reference count.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Empty Constructor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								Napi::Reference::Reference();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Creates a new _empty_ `Napi::Reference` instance.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Constructor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								Napi::Reference::Reference(napi_env env, napi_value value);
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] env`: The `napi_env` environment in which to construct the `Napi::Reference` object.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] value`: The N-API primitive value to be held by the `Napi::Reference`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Env
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								Napi::Env Napi::Reference::Env() const;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Returns the `Napi::Env` value in which the `Napi::Reference` was instantiated.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### IsEmpty
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								bool Napi::Reference::IsEmpty() const;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Determines whether the value held by the `Napi::Reference` is empty.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Value
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								T Napi::Reference::Value() const;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Returns the value held by the `Napi::Reference`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Ref
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								uint32_t Napi::Reference::Ref();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Increments the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the increment fails.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Unref
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								uint32_t Napi::Reference::Unref();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Decrements the reference count for the `Napi::Reference` and returns the resulting reference count. Throws an error if the decrement fails.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Reset (Empty)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								void Napi::Reference::Reset();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Sets the value held by the `Napi::Reference` to be empty.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Reset
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								void Napi::Reference::Reset(const T& value, uint32_t refcount = 0);
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] value`: The value which is to be referenced.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `[in] initialRefcount`: The initial reference count.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Sets the value held by the `Napi::Reference`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### SuppressDestruct
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```cpp
							 | 
						||
| 
								 | 
							
								void Napi::Reference::SuppressDestruct();
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Call this method on a `Napi::Reference` that is declared as static data to prevent its destructor, running at program shutdown time, from attempting to reset the reference when the environment is no longer valid.
							 |