Coverage Report

Created: 2026-07-14 06:59

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PROJ/src/conversions/set.cpp
Line
Count
Source
1
2
3
#include "proj_internal.h"
4
#include <errno.h>
5
6
PROJ_HEAD(set, "Set coordinate value");
7
8
/* Projection specific elements for the PJ object */
9
namespace { // anonymous namespace
10
struct Set {
11
    bool v1;
12
    bool v2;
13
    bool v3;
14
    bool v4;
15
    double v1_val;
16
    double v2_val;
17
    double v3_val;
18
    double v4_val;
19
};
20
} // anonymous namespace
21
22
313k
static void set_fwd_inv(PJ_COORD &point, PJ *P) {
23
24
313k
    struct Set *set = static_cast<struct Set *>(P->opaque);
25
26
313k
    if (set->v1)
27
0
        point.v[0] = set->v1_val;
28
313k
    if (set->v2)
29
0
        point.v[1] = set->v2_val;
30
313k
    if (set->v3)
31
0
        point.v[2] = set->v3_val;
32
313k
    if (set->v4)
33
8.06k
        point.v[3] = set->v4_val;
34
313k
}
35
36
7.88k
PJ *OPERATION(set, 0) {
37
7.88k
    P->inv4d = set_fwd_inv;
38
7.88k
    P->fwd4d = set_fwd_inv;
39
40
7.88k
    auto set = static_cast<struct Set *>(calloc(1, sizeof(struct Set)));
41
7.88k
    P->opaque = set;
42
7.88k
    if (nullptr == P->opaque)
43
0
        return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/);
44
45
7.88k
    if (pj_param_exists(P->params, "v_1")) {
46
103
        set->v1 = true;
47
103
        set->v1_val = pj_param(P->ctx, P->params, "dv_1").f;
48
103
    }
49
50
7.88k
    if (pj_param_exists(P->params, "v_2")) {
51
78
        set->v2 = true;
52
78
        set->v2_val = pj_param(P->ctx, P->params, "dv_2").f;
53
78
    }
54
55
7.88k
    if (pj_param_exists(P->params, "v_3")) {
56
55
        set->v3 = true;
57
55
        set->v3_val = pj_param(P->ctx, P->params, "dv_3").f;
58
55
    }
59
60
7.88k
    if (pj_param_exists(P->params, "v_4")) {
61
414
        set->v4 = true;
62
414
        set->v4_val = pj_param(P->ctx, P->params, "dv_4").f;
63
414
    }
64
65
7.88k
    P->left = PJ_IO_UNITS_WHATEVER;
66
7.88k
    P->right = PJ_IO_UNITS_WHATEVER;
67
68
7.88k
    return P;
69
7.88k
}