1*99451b44SJordan Rupprecht class MyClass 2*99451b44SJordan Rupprecht { 3*99451b44SJordan Rupprecht public: memberResult()4*99451b44SJordan Rupprecht int memberResult() 5*99451b44SJordan Rupprecht { 6*99451b44SJordan Rupprecht return 1; 7*99451b44SJordan Rupprecht } staticResult()8*99451b44SJordan Rupprecht static int staticResult() 9*99451b44SJordan Rupprecht { 10*99451b44SJordan Rupprecht return 1; 11*99451b44SJordan Rupprecht } 12*99451b44SJordan Rupprecht int externResult(); 13*99451b44SJordan Rupprecht }; 14*99451b44SJordan Rupprecht 15*99451b44SJordan Rupprecht // -- 16*99451b44SJordan Rupprecht externResult()17*99451b44SJordan Rupprechtint MyClass::externResult() 18*99451b44SJordan Rupprecht { 19*99451b44SJordan Rupprecht return 1; 20*99451b44SJordan Rupprecht } 21*99451b44SJordan Rupprecht 22*99451b44SJordan Rupprecht // -- 23*99451b44SJordan Rupprecht 24*99451b44SJordan Rupprecht MyClass m; 25*99451b44SJordan Rupprecht 26*99451b44SJordan Rupprecht // -- 27*99451b44SJordan Rupprecht 28*99451b44SJordan Rupprecht enum MyEnum { 29*99451b44SJordan Rupprecht myEnumOne = 1, 30*99451b44SJordan Rupprecht myEnumTwo, 31*99451b44SJordan Rupprecht myEnumThree 32*99451b44SJordan Rupprecht }; 33*99451b44SJordan Rupprecht 34*99451b44SJordan Rupprecht // -- 35*99451b44SJordan Rupprecht 36*99451b44SJordan Rupprecht class AnotherClass 37*99451b44SJordan Rupprecht { 38*99451b44SJordan Rupprecht public: complicatedFunction()39*99451b44SJordan Rupprecht __attribute__ ((always_inline)) int complicatedFunction() 40*99451b44SJordan Rupprecht { 41*99451b44SJordan Rupprecht struct { 42*99451b44SJordan Rupprecht int i; 43*99451b44SJordan Rupprecht } s = { 15 }; 44*99451b44SJordan Rupprecht 45*99451b44SJordan Rupprecht int numbers[4] = { 2, 3, 4, 5 }; 46*99451b44SJordan Rupprecht 47*99451b44SJordan Rupprecht for (signed char number: numbers) 48*99451b44SJordan Rupprecht { 49*99451b44SJordan Rupprecht s.i -= number; 50*99451b44SJordan Rupprecht } 51*99451b44SJordan Rupprecht 52*99451b44SJordan Rupprecht return s.i; 53*99451b44SJordan Rupprecht } 54*99451b44SJordan Rupprecht }; 55*99451b44SJordan Rupprecht 56*99451b44SJordan Rupprecht // -- 57*99451b44SJordan Rupprecht 58*99451b44SJordan Rupprecht class DiamondA 59*99451b44SJordan Rupprecht { 60*99451b44SJordan Rupprecht private: 61*99451b44SJordan Rupprecht struct { 62*99451b44SJordan Rupprecht int m_i; 63*99451b44SJordan Rupprecht }; 64*99451b44SJordan Rupprecht public: DiamondA(int i)65*99451b44SJordan Rupprecht DiamondA(int i) : m_i(i) { } accessor()66*99451b44SJordan Rupprecht int accessor() { return m_i; } 67*99451b44SJordan Rupprecht }; 68*99451b44SJordan Rupprecht 69*99451b44SJordan Rupprecht // -- 70*99451b44SJordan Rupprecht 71*99451b44SJordan Rupprecht class DiamondB : public virtual DiamondA 72*99451b44SJordan Rupprecht { 73*99451b44SJordan Rupprecht public: DiamondB(int i)74*99451b44SJordan Rupprecht DiamondB(int i) : DiamondA(i) { } 75*99451b44SJordan Rupprecht }; 76*99451b44SJordan Rupprecht 77*99451b44SJordan Rupprecht // -- 78*99451b44SJordan Rupprecht 79*99451b44SJordan Rupprecht class DiamondC : public virtual DiamondA 80*99451b44SJordan Rupprecht { 81*99451b44SJordan Rupprecht public: DiamondC(int i)82*99451b44SJordan Rupprecht DiamondC(int i) : DiamondA(i) { } 83*99451b44SJordan Rupprecht }; 84*99451b44SJordan Rupprecht 85*99451b44SJordan Rupprecht // -- 86*99451b44SJordan Rupprecht 87*99451b44SJordan Rupprecht class DiamondD : public DiamondB, public DiamondC 88*99451b44SJordan Rupprecht { 89*99451b44SJordan Rupprecht public: DiamondD(int i)90*99451b44SJordan Rupprecht DiamondD(int i) : DiamondA(i), DiamondB(i), DiamondC(i) { } 91*99451b44SJordan Rupprecht }; 92*99451b44SJordan Rupprecht 93*99451b44SJordan Rupprecht // -- 94*99451b44SJordan Rupprecht doTest()95*99451b44SJordan Rupprechtint doTest() 96*99451b44SJordan Rupprecht { 97*99451b44SJordan Rupprecht int accumulator = m.memberResult(); 98*99451b44SJordan Rupprecht accumulator += MyClass::staticResult(); 99*99451b44SJordan Rupprecht accumulator += m.externResult(); 100*99451b44SJordan Rupprecht accumulator += MyEnum::myEnumThree; 101*99451b44SJordan Rupprecht accumulator += myEnumOne; 102*99451b44SJordan Rupprecht accumulator += AnotherClass().complicatedFunction(); 103*99451b44SJordan Rupprecht accumulator += DiamondD(3).accessor(); 104*99451b44SJordan Rupprecht return accumulator; 105*99451b44SJordan Rupprecht } 106*99451b44SJordan Rupprecht 107*99451b44SJordan Rupprecht // -- 108