# base64::Decoder

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

# Decoder

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

struct Decoder
```

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

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

Base64 decoder.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`_state`](#_state-1) | `variable` | Declared here |
| [`_buffersize`](#_buffersize) | `variable` | Declared here |
| [`Decoder`](#decoder-4) | `function` | Declared here |
| [`decode`](#decode-6) | `function` | Declared here |
| [`decode`](#decode-7) | `function` | Declared here |
| [`decode`](#decode-8) | `function` | Declared here |
| [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-6) | `function` | Inherited from [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-5) |
| [`~Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-7) | `function` | Inherited from [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-5) |
| [`decode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decode-9) | `function` | Inherited from [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-5) |
| [`finalize`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#finalize-5) | `function` | Inherited from [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-5) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-6)  | Defaulted constructor. |
| `function` | [`~Decoder`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decoder-7) `virtual` | Defaulted destructor. |
| `function` | [`decode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decode-9) `virtual` | Decodes nread bytes from inbuf and writes decoded output to outbuf. |
| `function` | [`finalize`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#finalize-5) `virtual` `inline` | Flushes any buffered state and writes final output to outbuf. |

## Public Attributes

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

---

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

### _state

```cpp
internal::decodestate _state
```

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

---

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

### _buffersize

```cpp
int _buffersize
```

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

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Decoder`](#decoder-4) `inline` |  |
| `ssize_t` | [`decode`](#decode-6) `inline` | Decodes a single Base64 character to its 6-bit value. |
| `ssize_t` | [`decode`](#decode-7) `virtual` `inline` `override` | Decodes a raw Base64 buffer into binary data. |
| `void` | [`decode`](#decode-8) `inline` | Decodes the entire input stream and writes binary output to `ostrm`. Resets the decoder state after completion. |

---

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

### Decoder

`inline`

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

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

#### Parameters

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

---

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

### decode

`inline`

```cpp
inline ssize_t decode(char value_in)
```

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

Decodes a single Base64 character to its 6-bit value. 
#### Returns
Decoded 6-bit value, or a negative sentinel on invalid input.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `value_in` | `char` | Base64 character. |

---

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

### decode

`virtual` `inline` `override`

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

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

Decodes a raw Base64 buffer into binary data. 
#### Returns
Number of binary bytes written.

#### Reimplements

- [`Decoder::decode`](https://auscaster.com/icey/docs/api-reference/icy-basic-Decoder.md#decode-9)

#### Parameters

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

---

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

### decode

`inline`

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

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

Decodes the entire input stream and writes binary output to `ostrm`. Resets the decoder state after completion.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `istrm` | `std::istream &` | Source stream of Base64 data. |
| `ostrm` | `std::ostream &` | Destination stream for decoded binary output. |
