# Version

<a id="version"></a>

# Version

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

struct Version
```

[Defined in src/base/include/icy/util.h:491](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L491)

Semantic version number with major, minor, and patch fields.

## Friends

| Name | Description |
|------|-------------|
| [`operator<<`](#operator-196) `inline` | Writes the version to a stream in "major.minor.revision.build" format. |

---

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

### operator<<

`inline`

```cpp
friend inline std::ostream & operator<<(std::ostream & stream, const Version & ver)
```

[Defined in src/base/include/icy/util.h:547](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L547)

Writes the version to a stream in "major.minor.revision.build" format. 
#### Returns
Reference to stream.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `stream` | `std::ostream &` | Output stream. |
| `ver` | const [`Version`](#version) & | [Version](#version) to format. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `int` | [`major`](#major)  |  |
| `int` | [`minor`](#minor)  |  |
| `int` | [`revision`](#revision)  |  |
| `int` | [`build`](#build)  |  |

---

<a id="major"></a>

### major

```cpp
int major
```

[Defined in src/base/include/icy/util.h:559](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L559)

---

<a id="minor"></a>

### minor

```cpp
int minor
```

[Defined in src/base/include/icy/util.h:559](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L559)

---

<a id="revision"></a>

### revision

```cpp
int revision
```

[Defined in src/base/include/icy/util.h:559](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L559)

---

<a id="build"></a>

### build

```cpp
int build
```

[Defined in src/base/include/icy/util.h:559](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L559)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`Version`](#version-1) `inline` | Parses a dot-separated version string into up to four numeric fields. Unspecified fields default to 0. Examples: "1.2.3", "2.0", "3.7.8.0". |
| `bool` | [`operator<`](#operator-197) `inline` | Returns true if this version is strictly less than other. Compares fields in major, minor, revision, build order. |
| `bool` | [`operator==`](#operator-198) `const` `inline` | Returns true if all four version fields are equal. |

---

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

### Version

`inline`

```cpp
inline Version(std::string_view version)
```

[Defined in src/base/include/icy/util.h:496](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L496)

Parses a dot-separated version string into up to four numeric fields. Unspecified fields default to 0. Examples: "1.2.3", "2.0", "3.7.8.0".

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `version` | `std::string_view` | Dot-separated version string. |

---

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

### operator<

`inline`

```cpp
inline bool operator<(const Version & other)
```

[Defined in src/base/include/icy/util.h:521](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L521)

Returns true if this version is strictly less than other. Compares fields in major, minor, revision, build order. 
#### Returns
true if this < other.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `other` | const [`Version`](#version) & | [Version](#version) to compare against. |

---

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

### operator==

`const` `inline`

```cpp
inline bool operator==(const Version & other) const
```

[Defined in src/base/include/icy/util.h:537](https://github.com/auscaster/icey/blob/main/src/base/include/icy/util.h#L537)

Returns true if all four version fields are equal. 
#### Returns
true if this == other.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `other` | const [`Version`](#version) & | [Version](#version) to compare against. |
