]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/src/Import/src/FMI1/fmi1_import_unit.c
Switch to full JavaSE-11+ compatibility
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / Import / src / FMI1 / fmi1_import_unit.c
1 /*
2     Copyright (C) 2012 Modelon AB
3
4     This program is free software: you can redistribute it and/or modify
5     it under the terms of the BSD style license.
6
7      This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10     FMILIB_License.txt file for more details.
11
12     You should have received a copy of the FMILIB_License.txt file
13     along with this program. If not, contact Modelon AB <http://www.modelon.com>.
14 */
15
16 #include "fmi1_import_impl.h"
17
18 fmi1_import_unit_t* fmi1_import_get_unit(fmi1_import_unit_definitions_t* ud, unsigned int  index) {
19         return fmi1_xml_get_unit(ud, index);
20 }
21
22 const char* fmi1_import_get_unit_name(fmi1_import_unit_t* u) {
23         return fmi1_xml_get_unit_name(u);
24 }
25
26 unsigned int fmi1_import_get_unit_display_unit_number(fmi1_import_unit_t* u) {
27         return fmi1_xml_get_unit_display_unit_number(u);
28 }
29
30 fmi1_import_display_unit_t* fmi1_import_get_unit_display_unit(fmi1_import_unit_t* u, size_t index) {
31         return fmi1_xml_get_unit_display_unit(u, index);
32 }
33
34 fmi1_import_unit_t* fmi1_import_get_base_unit(fmi1_import_display_unit_t* du) {
35         return fmi1_xml_get_base_unit(du);
36 }
37
38 const char* fmi1_import_get_display_unit_name(fmi1_import_display_unit_t* du) {
39         return fmi1_xml_get_display_unit_name(du);
40 }
41
42 fmi1_real_t fmi1_import_get_display_unit_gain(fmi1_import_display_unit_t* du) {
43         return fmi1_xml_get_display_unit_gain(du);
44 }
45
46 fmi1_real_t fmi1_import_get_display_unit_offset(fmi1_import_display_unit_t* du) {
47     return fmi1_xml_get_display_unit_offset(du);
48 }
49
50 fmi1_real_t fmi1_import_convert_to_display_unit(fmi1_real_t val , fmi1_import_display_unit_t* du, int isRelativeQuantity) {
51     double gain = fmi1_import_get_display_unit_gain(du);
52     double offset = fmi1_import_get_display_unit_offset(du);
53     if(isRelativeQuantity)
54         return val *gain;
55     else
56         return (val*gain + offset);
57 }
58
59 fmi1_real_t fmi1_import_convert_from_display_unit(fmi1_real_t val, fmi1_import_display_unit_t* du, int isRelativeQuantity) {
60     double gain = fmi1_import_get_display_unit_gain(du);
61     double offset = fmi1_import_get_display_unit_offset(du);
62     if(isRelativeQuantity)
63         return val/gain;
64     else
65         return (val - offset)/gain;
66 }