From an answer to a Modelica-related question on SO I learned about the possibility to overload operators in Modelica by using spezialized class operator record. Looking into the Modelica specs for Version 3.2.2 (Chapter 14) I take it that operator records are available in the language (at least) since 2013.
Unfortunately, trying the suggested example for time conversions in WSM Version 4.3 results in an error when validating the class:
Error: Only classes of type 'operator record' may contain elements of type 'operator function'; '==' was found in a class that has restriction 'operator record'.
Is it possible to define custom operator records in the System Modeler and how can this be done? (What about the WL - where I have not tried it yet?)
For completeness I include the example code posted on SO here:
operator record Time
Integer s "Second";
encapsulated operator 'constructor'
import Time;
function from_s
input Integer s "Seconds";
output Time t(s=s);
algorithm
end from_s;
function from_d
input Integer d "Days";
output Time t(s=d*24*3600);
algorithm
end from_d;
end 'constructor';
encapsulated operator 'String' "Convert Time to string"
import Time;
function formated
input Time t;
input String format = "s" annotation(choices(choice="s" "seconds", choice="d" "days"));
output String str;
algorithm
if format == "d" then
str :=String(t.s/24/3600);
else
str :=String(t.s);
end if;
end formated;
end 'String';
encapsulated operator function '==' "Compare time records"
import Time;
input Time t1;
input Time t2;
output Boolean result "= t1 == t2";
algorithm
result := t1.s == t2.s;
end '==';
end Time;
Note: I have posted a similar question on Wolfram Community.