/trunk/Examples/test-suite/virtual_derivation.i
Swig | 67 lines | 39 code | 15 blank | 13 comment | 0 complexity | ee25d4e333e17a5f8c4dddf98a80bfc3 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %module virtual_derivation
- /*
- Try to add to your favorite language a runtime test like
- this:
-
- b = B(3)
- if (b.get_a() != b.get_b()):
- print "something is wrong"
- The test runs fine with python, but not with ruby.
-
- */
- %inline %{
- struct A
- {
- ~A()
- {
- }
-
- int m_a;
-
- A(int a) :m_a(a)
- {
- }
-
- int get_a()
- {
- return m_a;
- }
-
- };
-
- struct B : virtual A
- {
- B(int a): A(a)
- {
- }
-
- int get_b()
- {
- return get_a();
- }
- // in ruby, get_a() returns trash if called from b, unless is
- // wrapped with the previous get_b or using the 'using'
- // declaration:
- // using A::get_a;
- };
- class IndexReader{
- public:
- virtual void norms() = 0;
- };
- class MultiReader : public IndexReader {
- protected:
- MultiReader();
- };
- %}