Hi Andrew Starks
Virtual function and non virtual function has important difference.
If a function is not a virtual and exist in upper and lower layer of inheritance hierarchy, user of the object can select which function to call. The user can call one in the upper layer or the user can call the other in the lower layer.
But when it comes to virtual function user cannot select which to call. The one at the bottom layer overrides the ones in the upper layers. So user can only call the bottom one.
I C++ changing the view of the object selects. This means type casting of the object.
Many lua OO libraries are all or nothing for virtual function. This means they treat methods always virtual or always non-virtual. But YACI is different. With YACI, I can set a certain function virtual or non-virtual. It gives me power to configure a class' method.
But it seems that YACI has some bugs here.
I filed a bug report.
For this bug, I am not sure whether YACI deserves to be trustworthy or not.