ffi-clang

FORK: Ruby FFI bindings for my custom patched clang 8.0.
git clone https://git.neptards.moe/neptards/ffi-clang.git
Log | Files | Refs | README

test.cxx (1292B)


      1 struct A {
      2   virtual int func_a() = 0;
      3   int int_member_a;
      4 };
      5 
      6 struct B : public virtual A {
      7   int func_a() { return 0; }
      8 
      9   static int func_b() { return 11; }
     10 };
     11 
     12 struct C : public virtual A {
     13   int func_a() { return 1; }
     14 
     15   enum { EnumC = 100 };
     16 };
     17 
     18 struct D : public B, public C {
     19  private:
     20   int func_a() { return B::func_a(); }
     21   void func_d();
     22 
     23   int private_member_int;
     24  public:
     25   int public_member_int;
     26  protected:
     27   int protected_member_int;
     28 };
     29 
     30 void D::func_d() {};
     31 f_dynamic_call(A *a) { a->func_a(); };
     32 
     33 void f_variadic(int a, ...);
     34 void f_non_variadic(int a, char b, long c);
     35 
     36 typedef int const* const_int_ptr;
     37 int int_array[8];
     38 
     39 struct RefQualifier {
     40     void func_lvalue_ref() &;
     41     void func_rvalue_ref() &&;
     42     void func_none();
     43 };
     44 
     45 int A::*member_pointer = &A::int_member_a;
     46 
     47 struct BitField {
     48   int bit_field_a : 2;
     49   int bit_field_b : 6;
     50   int non_bit_field_c;
     51 };
     52 
     53 enum normal_enum {
     54   normal_enum_a
     55 };
     56 
     57 template <typename T> T func_overloaded(T a) { return a;};
     58 template <typename T> T func_overloaded() { return 100;};
     59 template <typename T> T use_func_overloaded() { return func_overloaded<T>(); };
     60 int use_overloaded_int_a = func_overloaded<int>();
     61 
     62 void availability_func(void) __attribute__((availability(macosx,introduced=10.4.1,deprecated=10.6,obsoleted=10.7)));