GCC Code Coverage Report


Directory: src/gate/
File: src/gate/cxx_versioning.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 39 39 100.0%
Functions: 13 13 100.0%
Branches: 4 10 40.0%

Line Branch Exec Source
1 /* GATE PROJECT LICENSE:
2 +----------------------------------------------------------------------------+
3 | Copyright(c) 2018-2025, Stefan Meislinger |
4 | All rights reserved. |
5 | |
6 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met:|
8 | |
9 | 1. Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. |
11 | 2. Redistributions in binary form must reproduce the above copyright |
12 | notice, this list of conditions and the following disclaimer in the |
13 | documentation and/or other materials provided with the distribution. |
14 | |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"|
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 | ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
19 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
25 | THE POSSIBILITY OF SUCH DAMAGE. |
26 +----------------------------------------------------------------------------+
27 */
28
29 #include "gate/versioning.hpp"
30 #include "gate/exceptions.hpp"
31
32 namespace gate
33 {
34
35 2 Version::Version(uint32_t major, uint32_t minor, uint32_t patch, uint32_t build)
36 {
37 2 this->major = major;
38 2 this->minor = minor;
39 2 this->patch = patch;
40 2 this->build = build;
41 2 }
42 1 Version::Version(gate_version_t const& src)
43 {
44 1 this->major = src.major;
45 1 this->minor = src.minor;
46 1 this->patch = src.patch;
47 1 this->build = src.build;
48 1 }
49
50 1 Version Version::parse(String const& text)
51 {
52 1 Version ver;
53
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 result_t result = gate_version_parse_string(text.c_impl(), &ver);
54
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 GATEXX_CHECK_EXCEPTION(result);
55 1 return ver;
56 }
57 1 String Version::toString() const
58 {
59 1 char buffer[128] = GATE_INIT_EMPTY;
60
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 size_t used = gate_version_print(this, buffer, sizeof(buffer));
61
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 return String(buffer, used);
62 }
63
64 1 gate_version_t const* Version::c_impl() const
65 {
66 1 return this;
67 }
68 1 gate_version_t* Version::c_impl()
69 {
70 1 return this;
71 }
72
73 10 intptr_t Version::compare(Version const& that) const
74 {
75 10 return gate_version_compare(static_cast<gate_version_t const*>(this), static_cast<gate_version_t const*>(&that));
76 }
77
78
79 1 bool_t Version::operator==(Version const& that) const
80 {
81 1 return this->compare(that) == 0;
82 }
83 1 bool_t Version::operator!=(Version const& that) const
84 {
85 1 return this->compare(that) != 0;
86 }
87 1 bool_t Version::operator< (Version const& that) const
88 {
89 1 return this->compare(that) < 0;
90 }
91 2 bool_t Version::operator<=(Version const& that) const
92 {
93 2 return this->compare(that) <= 0;
94 }
95 1 bool_t Version::operator> (Version const& that) const
96 {
97 1 return this->compare(that) > 0;
98 }
99 2 bool_t Version::operator>=(Version const& that) const
100 {
101 2 return this->compare(that) >= 0;
102 }
103
104 } // end of namespace gate
105