// Test rtti hint flags // Copyright (C) 2000 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 3 Apr 2000 #include #if defined (__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 #include struct A {int m;}; struct A1vA : virtual A {int m;}; struct A2vA : virtual A {int m;}; struct A1A : A {int m;}; struct A2A : A {int m;}; struct B {int m;}; struct C1 : B, virtual A {int m;}; struct D1 : A1vA, A2vA {int m;}; struct E1 : A1A, A2A {int m;}; struct E2 : A1A, A2vA {int m;}; struct F1 : A1A, A1vA, A2vA {int m;}; struct P1 : protected A {int m;}; struct P2 : B, P1 {int m;}; using namespace abi; int expect (int flags, std::type_info const &info) { abi::__vmi_class_type_info const *ptr = dynamic_cast (&info); if (!ptr) return 0; if (ptr->__flags != flags) return 0; return 1; } int main () { if (! expect (0 | 8, typeid (C1))) return 1; if (! expect (2 | 8, typeid (D1))) return 2; if (! expect (1 | 8, typeid (E1))) return 3; if (! expect (1 | 8, typeid (E2))) return 4; if (! expect (3 | 8, typeid (F1))) return 5; if (!expect (4, typeid (P1))) return 6; if (!expect (12, typeid (P2))) return 7; return 0; } #else int main () { return 0; } #endif