7 #include "xDataTOM_private.h"
9 #if defined __cplusplus
14 #define dependentAxis 1
15 #define allowByRegion 2
18 char const *str,
int flag );
22 int xDataTOM_interpolation_set( statusMessageReporting *smr, xDataTOM_interpolation *interpolation,
enum xDataTOM_interpolationFlag independent,
23 enum xDataTOM_interpolationFlag dependent,
enum xDataTOM_interpolationQualifier qualifier ) {
25 if( ( independent < xDataTOM_interpolationFlag_linear ) || ( independent > xDataTOM_interpolationFlag_byRegion ) ) {
26 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"invalid independent interpolation = %d", independent );
29 if( ( dependent < xDataTOM_interpolationFlag_linear ) || ( dependent > xDataTOM_interpolationFlag_flat ) ) {
30 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"invalid dependent interpolation = %d", dependent );
33 if( ( qualifier <= xDataTOM_interpolationQualifier_invalid ) || ( qualifier > xDataTOM_interpolationQualifier_correspondingPoints ) ) {
34 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"invalid interpolation qualifier = %d", qualifier );
38 interpolation->independent = independent;
39 interpolation->dependent = dependent;
40 interpolation->qualifier = qualifier;
50 enum xDataTOM_interpolationQualifier qualifier = xDataTOM_interpolationQualifier_none;
51 enum xDataTOM_interpolationFlag independent, dependent;
53 if( ( c = strchr( str,
':' ) ) != NULL ) {
54 if( strncmp(
"unitBase:", str, 9 ) == 0 ) {
55 qualifier = xDataTOM_interpolationQualifier_unitBase; }
56 else if( strncmp(
"correspondingPoints:", str, 20 ) == 0 ) {
57 qualifier = xDataTOM_interpolationQualifier_correspondingPoints; }
59 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"invalid interpolation string qualifier '%s'", str );
68 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"missing ',' separator in interpolation string'%s'", str );
81 char const *str,
int flag ) {
83 if( strncmp(
"linear", s, 6 ) == 0 ) { *e = &(s[6]);
return( xDataTOM_interpolationFlag_linear ); }
84 if( strncmp(
"log", s, 3 ) == 0 ) { *e = &(s[3]);
return( xDataTOM_interpolationFlag_log ); }
86 if( strncmp(
"byRegion", s, 8 ) == 0 ) { *e = &(s[8]);
return( xDataTOM_interpolationFlag_byRegion ); }
89 if( strncmp(
"flat", s, 4 ) == 0 ) { *e = &(s[4]);
return( xDataTOM_interpolationFlag_flat ); }
91 smr_setReportError2( smr,
xDataTOM_smrLibraryID, -1,
"invalid interpolation component '%s' in string '%s'", s, str );
92 return( xDataTOM_interpolationFlag_invalid );
107 #if defined __cplusplus
int xDataTOM_interpolation_setFromString(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, char const *str)
int xDataTOM_interpolation_copy(statusMessageReporting *smr, xDataTOM_interpolation *desc, xDataTOM_interpolation *src)
static constexpr double s
int xDataTOM_smrLibraryID
static enum xDataTOM_interpolationFlag xDataTOM_interpolation_getFromString(statusMessageReporting *smr, char const *s, char const **e, char const *str, int flag)
int xDataTOM_interpolation_set(statusMessageReporting *smr, xDataTOM_interpolation *interpolation, enum xDataTOM_interpolationFlag independent, enum xDataTOM_interpolationFlag dependent, enum xDataTOM_interpolationQualifier qualifier)