# hex::Encoder

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

# Encoder

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

struct Encoder
```

[Defined in src/base/include/icy/hex.h:34](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L34)

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

Hex encoder.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`_linePos`](#_linepos) | `variable` | Declared here |
| [`_lineLength`](#_linelength) | `variable` | Declared here |
| [`_uppercase`](#_uppercase) | `variable` | Declared here |
| [`Encoder`](#encoder-2) | `function` | Declared here |
| [`encode`](#encode-15) | `function` | Declared here |
| [`finalize`](#finalize-2) | `function` | Declared here |
| [`setUppercase`](#setuppercase) | `function` | Declared here |
| [`setLineLength`](#setlinelength) | `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 |
|--------|------|-------------|
| `int` | [`_linePos`](#_linepos)  |  |
| `int` | [`_lineLength`](#_linelength)  |  |
| `int` | [`_uppercase`](#_uppercase)  |  |

---

<a id="_linepos"></a>

### _linePos

```cpp
int _linePos
```

[Defined in src/base/include/icy/hex.h:83](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L83)

---

<a id="_linelength"></a>

### _lineLength

```cpp
int _lineLength
```

[Defined in src/base/include/icy/hex.h:84](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L84)

---

<a id="_uppercase"></a>

### _uppercase

```cpp
int _uppercase
```

[Defined in src/base/include/icy/hex.h:85](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L85)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Encoder`](#encoder-2) `inline` |  |
| `ssize_t` | [`encode`](#encode-15) `virtual` `inline` `override` | Encodes binary input as lowercase hex characters, optionally inserting newlines every `_lineLength` output characters. |
| `ssize_t` | [`finalize`](#finalize-2) `virtual` `inline` `override` | No-op finalizer; hex encoding has no pending state. |
| `void` | [`setUppercase`](#setuppercase) `inline` | Controls whether encoded output uses uppercase hex digits (A-F) or lowercase (a-f). |
| `void` | [`setLineLength`](#setlinelength) `inline` | Sets the maximum number of output characters per line before a newline is inserted. Set to 0 to disable line wrapping. |

---

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

### Encoder

`inline`

```cpp
inline Encoder()
```

[Defined in src/base/include/icy/hex.h:36](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L36)

---

<a id="encode-15"></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/hex.h:49](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L49)

Encodes binary input as lowercase hex characters, optionally inserting newlines every `_lineLength` output characters. 
#### Returns
Number of bytes written to outbuf.

#### Reimplements

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

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `inbuf` | `const char *` | Input buffer to encode. |
| `nread` | `size_t` | Number of bytes to read from inbuf. |
| `outbuf` | `char *` | Destination buffer; must have capacity >= nread * 2 + nread/_lineLength + 1. |

---

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

### finalize

`virtual` `inline` `override`

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

[Defined in src/base/include/icy/hex.h:72](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L72)

No-op finalizer; hex encoding has no pending state. 
#### Returns
Always 0.

#### Reimplements

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

---

<a id="setuppercase"></a>

### setUppercase

`inline`

```cpp
inline void setUppercase(bool flag)
```

[Defined in src/base/include/icy/hex.h:76](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L76)

Controls whether encoded output uses uppercase hex digits (A-F) or lowercase (a-f).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `flag` | `bool` | true for uppercase, false for lowercase. |

---

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

### setLineLength

`inline`

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

[Defined in src/base/include/icy/hex.h:81](https://github.com/auscaster/icey/blob/main/src/base/include/icy/hex.h#L81)

Sets the maximum number of output characters per line before a newline is inserted. Set to 0 to disable line wrapping.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `lineLength` | `int` | Characters per line. |
