# base64::Encoder

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

# Encoder

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

struct Encoder
```

[Defined in src/base/include/icy/base64.h:102](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L102)

> **Inherits:** [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5)

Base64 encoder.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`_state`](#_state-2) | `variable` | Declared here |
| [`_buffersize`](#_buffersize-1) | `variable` | Declared here |
| [`Encoder`](#encoder-4) | `function` | Declared here |
| [`encode`](#encode-17) | `function` | Declared here |
| [`encode`](#encode-18) | `function` | Declared here |
| [`encode`](#encode-19) | `function` | Declared here |
| [`finalize`](#finalize-4) | `function` | Declared here |
| [`setLineLength`](#setlinelength-1) | `function` | Declared here |
| [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-6) | `function` | Inherited from [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5) |
| [`~Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-7) | `function` | Inherited from [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encode-20) | `function` | Inherited from [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5) |
| [`finalize`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#finalize-6) | `function` | Inherited from [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5) |

## Inherited from [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-5)

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-6)  | Defaulted constructor. |
| `function` | [`~Encoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encoder-7) `virtual` | Defaulted destructor. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encode-20) `virtual` | Encodes nread bytes from inbuf and writes encoded output to outbuf. |
| `function` | [`finalize`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#finalize-6) `virtual` `inline` | Flushes any buffered state and writes final output to outbuf. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `internal::encodestate` | [`_state`](#_state-2)  |  |
| `int` | [`_buffersize`](#_buffersize-1)  |  |

---

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

### _state

```cpp
internal::encodestate _state
```

[Defined in src/base/include/icy/base64.h:178](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L178)

---

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

### _buffersize

```cpp
int _buffersize
```

[Defined in src/base/include/icy/base64.h:179](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L179)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Encoder`](#encoder-4) `inline` |  |
| `void` | [`encode`](#encode-17) `inline` | Encodes the entire input stream and writes Base64 output to `ostrm`. Resets the encoder state after completion. |
| `void` | [`encode`](#encode-18) `inline` | Encodes a string to Base64 and appends the result to `out`. Resets the encoder state after completion. |
| `ssize_t` | [`encode`](#encode-19) `virtual` `inline` `override` | Encodes a raw buffer, writing Base64 characters to `outbuf`. May be called multiple times before calling [`finalize()`](#finalize-4). |
| `ssize_t` | [`finalize`](#finalize-4) `virtual` `inline` `override` | Writes any pending padding and resets the encoder state. Must be called once after all [`encode()`](#encode-17) calls to flush the final block. |
| `void` | [`setLineLength`](#setlinelength-1) `inline` | Sets the line wrap length for encoded output (0 disables line wrapping). |

---

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

### Encoder

`inline`

```cpp
inline Encoder(int buffersize = BUFFER_SIZE)
```

[Defined in src/base/include/icy/base64.h:105](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L105)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buffersize` | `int` | Internal read buffer size in bytes. |

---

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

### encode

`inline`

```cpp
inline void encode(std::istream & istrm, std::ostream & ostrm)
```

[Defined in src/base/include/icy/base64.h:115](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L115)

Encodes the entire input stream and writes Base64 output to `ostrm`. Resets the encoder state after completion.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `istrm` | `std::istream &` | Source stream to encode. |
| `ostrm` | `std::ostream &` | Destination stream for Base64 output. |

---

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

### encode

`inline`

```cpp
inline void encode(const std::string & in, std::string & out)
```

[Defined in src/base/include/icy/base64.h:141](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L141)

Encodes a string to Base64 and appends the result to `out`. Resets the encoder state after completion.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `in` | `const std::string &` | Input string. |
| `out` | `std::string &` | Output string to which Base64 characters are appended. |

---

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

### encode

`virtual` `inline` `override`

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

[Defined in src/base/include/icy/base64.h:160](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L160)

Encodes a raw buffer, writing Base64 characters to `outbuf`. May be called multiple times before calling [`finalize()`](#finalize-4). 
#### Returns
Number of Base64 characters written.

#### Reimplements

- [`Encoder::encode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#encode-20)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `inbuf` | `const char *` | Input binary data. |
| `nread` | `size_t` | Number of bytes to encode. |
| `outbuf` | `char *` | Output buffer; must be at least `nread * 4 / 3 + 4` bytes. |

---

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

### finalize

`virtual` `inline` `override`

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

[Defined in src/base/include/icy/base64.h:169](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L169)

Writes any pending padding and resets the encoder state. Must be called once after all [`encode()`](#encode-17) calls to flush the final block. 
#### Returns
Number of characters written.

#### Reimplements

- [`Encoder::finalize`](https://auscaster.com/icey/docs/api-reference/icy-basic-Encoder.md#finalize-6)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `outbuf` | `char *` | Output buffer; must be at least 5 bytes. |

---

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

### setLineLength

`inline`

```cpp
inline void setLineLength(int lineLength)
```

[Defined in src/base/include/icy/base64.h:176](https://github.com/auscaster/icey/blob/main/src/base/include/icy/base64.h#L176)

Sets the line wrap length for encoded output (0 disables line wrapping).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `lineLength` | `int` | Characters per line; use 0 to disable. |
