diff options
Diffstat (limited to 'wrapper/wrapper.cpp')
| -rw-r--r-- | wrapper/wrapper.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp index 7fd0a92..46e7e3a 100644 --- a/wrapper/wrapper.cpp +++ b/wrapper/wrapper.cpp @@ -197,16 +197,40 @@ error_list_t^ get_accel_errors(AccelMode mode, AccelArgs^ args) return error_list; } +error_list_t^ get_other_errors(DriverSettings^ settings) +{ + auto error_list = gcnew error_list_t(); + + if (settings->rangeXY.x <= 0 || settings->rangeXY.y <= 0) + { + error_list->Add("range values must be positive"); + } + + if (settings->domainArgs.domainXY.x <= 0 || settings->domainArgs.domainXY.y <= 0) + { + error_list->Add("domain values must be positive"); + } + + if (settings->domainArgs.lpNorm <= 0) + { + error_list->Add("lp norm must be positive"); + } + + return error_list; +} + public ref class SettingsErrors { public: error_list_t^ x; error_list_t^ y; + error_list_t^ other; bool Empty() { return (x == nullptr || x->Count == 0) && - (y == nullptr || y->Count == 0); + (y == nullptr || y->Count == 0) && + (other == nullptr || other->Count == 0); } virtual String^ ToString() override @@ -233,6 +257,11 @@ public: sb->AppendFormat("y: {0}\n", str); } } + + for each (String ^ str in other) + { + sb->AppendLine(str); + } return sb->ToString(); } @@ -286,9 +315,13 @@ public ref struct DriverInterop errors->y = get_accel_errors(args->modes.y, args->args.y); } + errors->other = get_other_errors(args); + return errors; } + + static error_list_t^ GetAccelErrors(AccelMode mode, AccelArgs^ args) { return get_accel_errors(mode, args); |