File tree Expand file tree Collapse file tree 5 files changed +39
-1
lines changed
Expand file tree Collapse file tree 5 files changed +39
-1
lines changed Original file line number Diff line number Diff line change 705705 <error name =" INVALIDROWRANGE" code =" 680" description =" Invalid row range." />
706706 <error name =" CONFIGURATIONLISTNAMEMISSING" code =" 681" description =" Configuration list name missing" />
707707 <error name =" CONFIGURATIONLISTBUTTONNAMEMISSING" code =" 682" description =" Configuration list button name missing" />
708+ <error name =" NONLINEAROVERRIDEPARAMETERNOTINCREASING" code =" 683" description =" Nonlinear override parameter not increasing" />
709+ <error name =" NONLINEAROVERRIDEPARAMETEROUTOFRANGE" code =" 684" description =" Nonlinear override parameter out of range" />
710+ <error name =" NONLINEAROVERRIDEFACTOROUTOFRANGE" code =" 685" description =" Nonlinear override factor out of range" />
711+
712+
713+
708714
709715 </errors >
710716
Original file line number Diff line number Diff line change @@ -774,6 +774,9 @@ class ELibMCException : public std::exception {
774774 case LIBMC_ERROR_INVALIDROWRANGE: return " INVALIDROWRANGE" ;
775775 case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return " CONFIGURATIONLISTNAMEMISSING" ;
776776 case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return " CONFIGURATIONLISTBUTTONNAMEMISSING" ;
777+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return " NONLINEAROVERRIDEPARAMETERNOTINCREASING" ;
778+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return " NONLINEAROVERRIDEPARAMETEROUTOFRANGE" ;
779+ case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return " NONLINEAROVERRIDEFACTOROUTOFRANGE" ;
777780 }
778781 return " UNKNOWN" ;
779782 }
@@ -1382,6 +1385,9 @@ class ELibMCException : public std::exception {
13821385 case LIBMC_ERROR_INVALIDROWRANGE: return " Invalid row range." ;
13831386 case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return " Configuration list name missing" ;
13841387 case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return " Configuration list button name missing" ;
1388+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return " Nonlinear override parameter not increasing" ;
1389+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return " Nonlinear override parameter out of range" ;
1390+ case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return " Nonlinear override factor out of range" ;
13851391 }
13861392 return " unknown error" ;
13871393 }
Original file line number Diff line number Diff line change @@ -696,6 +696,9 @@ typedef void * LibMC_pvoid;
696696#define LIBMC_ERROR_INVALIDROWRANGE 680 /* * Invalid row range. */
697697#define LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING 681 /* * Configuration list name missing */
698698#define LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING 682 /* * Configuration list button name missing */
699+ #define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING 683 /* * Nonlinear override parameter not increasing */
700+ #define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE 684 /* * Nonlinear override parameter out of range */
701+ #define LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE 685 /* * Nonlinear override factor out of range */
699702
700703/* ************************************************************************************************************************
701704 Error strings for LibMC
@@ -1304,6 +1307,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) {
13041307 case LIBMC_ERROR_INVALIDROWRANGE: return " Invalid row range." ;
13051308 case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return " Configuration list name missing" ;
13061309 case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return " Configuration list button name missing" ;
1310+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return " Nonlinear override parameter not increasing" ;
1311+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return " Nonlinear override parameter out of range" ;
1312+ case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return " Nonlinear override factor out of range" ;
13071313 default : return " unknown error" ;
13081314 }
13091315}
Original file line number Diff line number Diff line change @@ -696,6 +696,9 @@ typedef void * LibMC_pvoid;
696696#define LIBMC_ERROR_INVALIDROWRANGE 680 /* * Invalid row range. */
697697#define LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING 681 /* * Configuration list name missing */
698698#define LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING 682 /* * Configuration list button name missing */
699+ #define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING 683 /* * Nonlinear override parameter not increasing */
700+ #define LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE 684 /* * Nonlinear override parameter out of range */
701+ #define LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE 685 /* * Nonlinear override factor out of range */
699702
700703/* ************************************************************************************************************************
701704 Error strings for LibMC
@@ -1304,6 +1307,9 @@ inline const char * LIBMC_GETERRORSTRING (LibMCResult nErrorCode) {
13041307 case LIBMC_ERROR_INVALIDROWRANGE: return " Invalid row range." ;
13051308 case LIBMC_ERROR_CONFIGURATIONLISTNAMEMISSING: return " Configuration list name missing" ;
13061309 case LIBMC_ERROR_CONFIGURATIONLISTBUTTONNAMEMISSING: return " Configuration list button name missing" ;
1310+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING: return " Nonlinear override parameter not increasing" ;
1311+ case LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE: return " Nonlinear override parameter out of range" ;
1312+ case LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE: return " Nonlinear override factor out of range" ;
13071313 default : return " unknown error" ;
13081314 }
13091315}
Original file line number Diff line number Diff line change @@ -464,8 +464,22 @@ namespace AMC {
464464
465465 size_t nInterpolationDataStartIndex = m_InterpolationData.size ();
466466 if (nonLinearValues.size () > 0 ) {
467- for (auto & interpolationData : nonLinearValues)
467+ double dPreviousParameter = 0.0 ;
468+ double dMinParameterIncrease = 1e-5 ;
469+ double dMaxParameter = 1.0 - dMinParameterIncrease;
470+
471+ for (auto & interpolationData : nonLinearValues) {
472+ if (interpolationData.m_Parameter < dPreviousParameter + dMinParameterIncrease)
473+ throw ELibMCCustomException (LIBMC_ERROR_NONLINEAROVERRIDEPARAMETERNOTINCREASING, std::to_string (interpolationData.m_Parameter ) + " in " + m_sDebugName);
474+
475+ if (interpolationData.m_Parameter > dMaxParameter)
476+ throw ELibMCCustomException (LIBMC_ERROR_NONLINEAROVERRIDEPARAMETEROUTOFRANGE, std::to_string (interpolationData.m_Parameter ) + " in " + m_sDebugName);
477+
478+ if (interpolationData.m_Factor < 0.0 || interpolationData.m_Factor > 1.0 )
479+ throw ELibMCCustomException (LIBMC_ERROR_NONLINEAROVERRIDEFACTOROUTOFRANGE, std::to_string (interpolationData.m_Factor ) + " in " + m_sDebugName);
480+
468481 m_InterpolationData.push_back (interpolationData);
482+ }
469483 }
470484
471485 if (hatchFactors.size () > 0 ) {
You can’t perform that action at this time.
0 commit comments