# basic::Encoder

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

# Encoder

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

class Encoder
```

[Defined in src/base/include/icy/interface.h:54](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L54)

> **Subclassed by:** [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-base64-Encoder.md#encoder-3), [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-hex-Encoder.md#encoder-1)

Abstract interface for stream encoders.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Encoder`](#encoder-6)  | Defaulted constructor. |
|  | [`~Encoder`](#encoder-7) `virtual` | Defaulted destructor. |
| `ssize_t` | [`encode`](#encode-20) `virtual` | Encodes nread bytes from inbuf and writes encoded output to outbuf. |
| `ssize_t` | [`finalize`](#finalize-6) `virtual` `inline` | Flushes any buffered state and writes final output to outbuf. |

---

<a id="encoder-6"></a>

### Encoder

```cpp
Encoder() = default
```

[Defined in src/base/include/icy/interface.h:57](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L57)

Defaulted constructor.

---

<a id="encoder-7"></a>

### ~Encoder

`virtual`

```cpp
virtual ~Encoder() = default
```

[Defined in src/base/include/icy/interface.h:58](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L58)

Defaulted destructor.

---

<a id="encode-20"></a>

### encode

`virtual`

```cpp
virtual ssize_t encode(const char * inbuf, size_t nread, char * outbuf)
```

[Defined in src/base/include/icy/interface.h:65](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L65)

Encodes nread bytes from inbuf and writes encoded output to outbuf. 
#### Returns
Number of bytes written to outbuf, or -1 on error.

#### Reimplemented by

- [`Encoder::encode`](https://auscaster.com/icey/docs/api-reference/icy-base64-Encoder.md#encode-19)
- [`Encoder::encode`](https://auscaster.com/icey/docs/api-reference/icy-hex-Encoder.md#encode-15)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `inbuf` | `const char *` | Raw input buffer to encode. |
| `nread` | `size_t` | Number of bytes to encode from inbuf. |
| `outbuf` | `char *` | Destination buffer for encoded output. |

---

<a id="finalize-6"></a>

### finalize

`virtual` `inline`

```cpp
virtual inline ssize_t finalize(char * outbuf)
```

[Defined in src/base/include/icy/interface.h:70](https://github.com/auscaster/icey/blob/main/src/base/include/icy/interface.h#L70)

Flushes any buffered state and writes final output to outbuf. 
#### Returns
Number of bytes written, or 0 if nothing to flush.

#### Reimplemented by

- [`Encoder::finalize`](https://auscaster.com/icey/docs/api-reference/icy-hex-Encoder.md#finalize-2)
- [`Encoder::finalize`](https://auscaster.com/icey/docs/api-reference/icy-base64-Encoder.md#finalize-4)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `outbuf` | `char *` | Destination buffer for any remaining output. |
