# Library

<a id="library"></a>

# Library

```cpp
#include <icy/graft/graft.h>

class Library
```

Defined in src/graft/include/icy/graft/graft.h:100

Loads a native plugin library and resolves its typed entrypoint.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Library`](#library-1)  | Defaulted constructor. |
|  | [`~Library`](#library-2) `noexcept` |  |
|  | [`Library`](#library-3)  | Deleted constructor. |
| [`Library`](#library) & | [`operator=`](#operator-236)  | Deleted assignment operator. |
|  | [`Library`](#library-4)  | Deleted constructor. |
| [`Library`](#library) & | [`operator=`](#operator-237)  | Deleted assignment operator. |
| `void` | [`open`](#open-8)  |  |
| `void` | [`close`](#close-31) `noexcept` |  |
| `bool` | [`isOpen`](#isopen) `const` `noexcept` |  |
| `const std::string &` | [`path`](#path-4) `const` `noexcept` |  |
| const [`Manifest`](https://auscaster.com/icey/docs/api-reference/icy-graft-Manifest.md#manifest-5) & | [`manifest`](#manifest-4) `const` |  |
| `void *` | [`requireSymbolAddress`](#requiresymboladdress) `const` |  |
| `T` | [`requireSymbol`](#requiresymbol) `const` `inline` |  |
| `T` | [`entrypoint`](#entrypoint-1) `const` `inline` |  |

---

<a id="library-1"></a>

### Library

```cpp
Library() = default
```

Defined in src/graft/include/icy/graft/graft.h:103

Defaulted constructor.

---

<a id="library-2"></a>

### ~Library

`noexcept`

```cpp
~Library() noexcept
```

Defined in src/graft/include/icy/graft/graft.h:104

---

<a id="library-3"></a>

### Library

```cpp
Library(const Library &) = delete
```

Defined in src/graft/include/icy/graft/graft.h:106

Deleted constructor.

---

<a id="operator-236"></a>

### operator=

```cpp
Library & operator=(const Library &) = delete
```

Defined in src/graft/include/icy/graft/graft.h:107

Deleted assignment operator.

---

<a id="library-4"></a>

### Library

```cpp
Library(Library &&) = delete
```

Defined in src/graft/include/icy/graft/graft.h:108

Deleted constructor.

---

<a id="operator-237"></a>

### operator=

```cpp
Library & operator=(Library &&) = delete
```

Defined in src/graft/include/icy/graft/graft.h:109

Deleted assignment operator.

---

<a id="open-8"></a>

### open

```cpp
void open(const std::string & path)
```

Defined in src/graft/include/icy/graft/graft.h:111

---

<a id="close-31"></a>

### close

`noexcept`

```cpp
void close() noexcept
```

Defined in src/graft/include/icy/graft/graft.h:112

---

<a id="isopen"></a>

### isOpen

`const` `noexcept`

```cpp
bool isOpen() const noexcept
```

Defined in src/graft/include/icy/graft/graft.h:114

---

<a id="path-4"></a>

### path

`const` `noexcept`

```cpp
const std::string & path() const noexcept
```

Defined in src/graft/include/icy/graft/graft.h:115

---

<a id="manifest-4"></a>

### manifest

`const`

```cpp
const Manifest & manifest() const
```

Defined in src/graft/include/icy/graft/graft.h:116

---

<a id="requiresymboladdress"></a>

### requireSymbolAddress

`const`

```cpp
void * requireSymbolAddress(const char * name) const
```

Defined in src/graft/include/icy/graft/graft.h:118

---

<a id="requiresymbol"></a>

### requireSymbol

`const` `inline`

```cpp
template<typename T> inline T requireSymbol(const char * name) const
```

Defined in src/graft/include/icy/graft/graft.h:121

---

<a id="entrypoint-1"></a>

### entrypoint

`const` `inline`

```cpp
template<typename T> inline T entrypoint() const
```

Defined in src/graft/include/icy/graft/graft.h:127

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`SharedLibrary`](https://auscaster.com/icey/docs/api-reference/icy-SharedLibrary.md#sharedlibrary) | [`_library`](#_library)  |  |
| `std::string` | [`_path`](#_path-5)  |  |
| const [`Manifest`](https://auscaster.com/icey/docs/api-reference/icy-graft-Manifest.md#manifest-5) * | [`_manifest`](#_manifest)  |  |
| `bool` | [`_open`](#_open)  |  |

---

<a id="_library"></a>

### _library

```cpp
SharedLibrary _library
```

Type: [`SharedLibrary`](https://auscaster.com/icey/docs/api-reference/icy-SharedLibrary.md#sharedlibrary)

Defined in src/graft/include/icy/graft/graft.h:135

---

<a id="_path-5"></a>

### _path

```cpp
std::string _path
```

Defined in src/graft/include/icy/graft/graft.h:136

---

<a id="_manifest"></a>

### _manifest

```cpp
const Manifest * _manifest = nullptr
```

Type: const [`Manifest`](https://auscaster.com/icey/docs/api-reference/icy-graft-Manifest.md#manifest-5) *

Defined in src/graft/include/icy/graft/graft.h:137

---

<a id="_open"></a>

### _open

```cpp
bool _open = false
```

Defined in src/graft/include/icy/graft/graft.h:138

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`loadManifest`](#loadmanifest)  |  |

---

<a id="loadmanifest"></a>

### loadManifest

```cpp
void loadManifest()
```

Defined in src/graft/include/icy/graft/graft.h:133
