I guess the set_xval2/set_x combination gives you the most flexibility.
I certainly use the Functions when I'm calling into Max from C/C++ and passing in the Object reference.
For most use, the set_x() method is probably enough, unless you need that extra layer of abstraction?
I wouldn't use set_xval1(), since set_x() is doing the same thing essentially, and you are in effect duplicating code - which is always not a great idea.
Of course, if you are desperate for speed, you might not want the extra "call" that set_xval2() introduces...
I certainly use the Functions when I'm calling into Max from C/C++ and passing in the Object reference.
For most use, the set_x() method is probably enough, unless you need that extra layer of abstraction?
I wouldn't use set_xval1(), since set_x() is doing the same thing essentially, and you are in effect duplicating code - which is always not a great idea.
Of course, if you are desperate for speed, you might not want the extra "call" that set_xval2() introduces...