| director_detect |
| |
| global MyBar=@(val=2) subclass(director_detect.Bar(),'val',val,@get_value,@get_class,@just_do_it,@clone); |
| |
| function val=get_value(self) |
| self.val = self.val + 1; |
| val = self.val; |
| end |
| function ptr=get_class(self) |
| global director_detect; |
| self.val = self.val + 1; |
| ptr=director_detect.A(); |
| end |
| function just_do_it(self) |
| self.val = self.val + 1; |
| end |
| function ptr=clone(self) |
| global MyBar; |
| ptr=MyBar(self.val); |
| end |
| |
| b = MyBar(); |
| |
| f = b.baseclass(); |
| |
| v = f.get_value(); |
| a = f.get_class(); |
| f.just_do_it(); |
| |
| c = b.clone(); |
| vc = c.get_value(); |
| |
| if ((v != 3) || (b.val != 5) || (vc != 6)) |
| error("Bad virtual detection") |
| endif |
| |