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.