Coverage Report

Created: 2025-06-13 06:18

/src/proj/src/conversions/set.cpp
Line
Count
Source (jump to first uncovered line)
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
0
static void set_fwd_inv(PJ_COORD &point, PJ *P) {
23
24
0
    struct Set *set = static_cast<struct Set *>(P->opaque);
25
26
0
    if (set->v1)
27
0
        point.v[0] = set->v1_val;
28
0
    if (set->v2)
29
0
        point.v[1] = set->v2_val;
30
0
    if (set->v3)
31
0
        point.v[2] = set->v3_val;
32
0
    if (set->v4)
33
0
        point.v[3] = set->v4_val;
34
0
}
35
36
0
PJ *OPERATION(set, 0) {
37
0
    P->inv4d = set_fwd_inv;
38
0
    P->fwd4d = set_fwd_inv;
39
40
0
    auto set = static_cast<struct Set *>(calloc(1, sizeof(struct Set)));
41
0
    P->opaque = set;
42
0
    if (nullptr == P->opaque)
43
0
        return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/);
44
45
0
    if (pj_param_exists(P->params, "v_1")) {
46
0
        set->v1 = true;
47
0
        set->v1_val = pj_param(P->ctx, P->params, "dv_1").f;
48
0
    }
49
50
0
    if (pj_param_exists(P->params, "v_2")) {
51
0
        set->v2 = true;
52
0
        set->v2_val = pj_param(P->ctx, P->params, "dv_2").f;
53
0
    }
54
55
0
    if (pj_param_exists(P->params, "v_3")) {
56
0
        set->v3 = true;
57
0
        set->v3_val = pj_param(P->ctx, P->params, "dv_3").f;
58
0
    }
59
60
0
    if (pj_param_exists(P->params, "v_4")) {
61
0
        set->v4 = true;
62
0
        set->v4_val = pj_param(P->ctx, P->params, "dv_4").f;
63
0
    }
64
65
0
    P->left = PJ_IO_UNITS_WHATEVER;
66
0
    P->right = PJ_IO_UNITS_WHATEVER;
67
68
0
    return P;
69
0
}