112a9d9c8Sopenharmony_ci#include "Test.h" 212a9d9c8Sopenharmony_ci 312a9d9c8Sopenharmony_ciconst int Test::COUNTDOWN[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; 412a9d9c8Sopenharmony_ciconst int* Test::COUNTDOWN_PTR = Test::COUNTDOWN; 512a9d9c8Sopenharmony_ci 612a9d9c8Sopenharmony_ciunsigned VirtualDestructor::sDestructorCount = 0; 712a9d9c8Sopenharmony_ciVirtualDestructor::~VirtualDestructor() { 812a9d9c8Sopenharmony_ci sDestructorCount++; 912a9d9c8Sopenharmony_ci} 1012a9d9c8Sopenharmony_ci 1112a9d9c8Sopenharmony_ciunsigned InheritsFromVirtualDestructor::sDestructorCount = 0; 1212a9d9c8Sopenharmony_ciInheritsFromVirtualDestructor::InheritsFromVirtualDestructor() = default; 1312a9d9c8Sopenharmony_ci 1412a9d9c8Sopenharmony_ciInheritsFromVirtualDestructor::~InheritsFromVirtualDestructor() { 1512a9d9c8Sopenharmony_ci sDestructorCount++; 1612a9d9c8Sopenharmony_ci} 1712a9d9c8Sopenharmony_ci 1812a9d9c8Sopenharmony_ciconst int* Test::countdown() { 1912a9d9c8Sopenharmony_ci return COUNTDOWN; 2012a9d9c8Sopenharmony_ci} 2112a9d9c8Sopenharmony_ci 2212a9d9c8Sopenharmony_ciconst char* Test::name() { 2312a9d9c8Sopenharmony_ci return "Test"; 2412a9d9c8Sopenharmony_ci} 2512a9d9c8Sopenharmony_ci 2612a9d9c8Sopenharmony_ciTest::Test(int foo) 2712a9d9c8Sopenharmony_ci : m_int(foo) 2812a9d9c8Sopenharmony_ci , m_double(0.0) 2912a9d9c8Sopenharmony_ci{} 3012a9d9c8Sopenharmony_ci 3112a9d9c8Sopenharmony_ciTest::Test(double foo) 3212a9d9c8Sopenharmony_ci : m_int(0) 3312a9d9c8Sopenharmony_ci , m_double(foo) 3412a9d9c8Sopenharmony_ci{} 3512a9d9c8Sopenharmony_ci 3612a9d9c8Sopenharmony_ciAutoRestoreBool::AutoRestoreBool(bool* ptr) 3712a9d9c8Sopenharmony_ci : m_ptr(ptr) 3812a9d9c8Sopenharmony_ci , m_value(*ptr) 3912a9d9c8Sopenharmony_ci{} 4012a9d9c8Sopenharmony_ci 4112a9d9c8Sopenharmony_ciAutoRestoreBool::~AutoRestoreBool() { 4212a9d9c8Sopenharmony_ci *m_ptr = m_value; 4312a9d9c8Sopenharmony_ci} 4412a9d9c8Sopenharmony_ci 4512a9d9c8Sopenharmony_cinamespace bitfields { 4612a9d9c8Sopenharmony_ci 4712a9d9c8Sopenharmony_cibool 4812a9d9c8Sopenharmony_ciFirst::assert(unsigned char first, 4912a9d9c8Sopenharmony_ci unsigned char second, 5012a9d9c8Sopenharmony_ci unsigned char third) 5112a9d9c8Sopenharmony_ci{ 5212a9d9c8Sopenharmony_ci return three_bits_byte_one == first && 5312a9d9c8Sopenharmony_ci six_bits_byte_two == second && 5412a9d9c8Sopenharmony_ci two_bits_byte_two == third; 5512a9d9c8Sopenharmony_ci} 5612a9d9c8Sopenharmony_ci 5712a9d9c8Sopenharmony_cibool 5812a9d9c8Sopenharmony_ciSecond::assert(int first, bool second) 5912a9d9c8Sopenharmony_ci{ 6012a9d9c8Sopenharmony_ci return thirty_one_bits == first && one_bit == second; 6112a9d9c8Sopenharmony_ci} 6212a9d9c8Sopenharmony_ci 6312a9d9c8Sopenharmony_cibool 6412a9d9c8Sopenharmony_ciThird::assert(int first, bool second, ItemKind third) 6512a9d9c8Sopenharmony_ci{ 6612a9d9c8Sopenharmony_ci return flags == first && 6712a9d9c8Sopenharmony_ci is_whatever == second && 6812a9d9c8Sopenharmony_ci kind == third; 6912a9d9c8Sopenharmony_ci} 7012a9d9c8Sopenharmony_ci 7112a9d9c8Sopenharmony_cibool 7212a9d9c8Sopenharmony_ciFourth::assert(MyEnum tag, unsigned long ptr) 7312a9d9c8Sopenharmony_ci{ 7412a9d9c8Sopenharmony_ci return this->tag == tag && this->ptr == ptr; 7512a9d9c8Sopenharmony_ci} 7612a9d9c8Sopenharmony_ci 7712a9d9c8Sopenharmony_cibool 7812a9d9c8Sopenharmony_ciDate2::assert(unsigned short nWeekDay, 7912a9d9c8Sopenharmony_ci unsigned short nMonthDay, 8012a9d9c8Sopenharmony_ci unsigned short nMonth, 8112a9d9c8Sopenharmony_ci unsigned short nYear, 8212a9d9c8Sopenharmony_ci unsigned short byte) 8312a9d9c8Sopenharmony_ci{ 8412a9d9c8Sopenharmony_ci return this->nWeekDay == nWeekDay && 8512a9d9c8Sopenharmony_ci this->nMonthDay == nMonthDay && 8612a9d9c8Sopenharmony_ci this->nMonth == nMonth && 8712a9d9c8Sopenharmony_ci this->nYear == nYear && 8812a9d9c8Sopenharmony_ci this->byte == byte; 8912a9d9c8Sopenharmony_ci} 9012a9d9c8Sopenharmony_ci 9112a9d9c8Sopenharmony_cibool 9212a9d9c8Sopenharmony_ciFifth::assert(unsigned short nWeekDay, 9312a9d9c8Sopenharmony_ci unsigned short nMonthDay, 9412a9d9c8Sopenharmony_ci unsigned short nMonth, 9512a9d9c8Sopenharmony_ci unsigned short nYear, 9612a9d9c8Sopenharmony_ci unsigned char byte) 9712a9d9c8Sopenharmony_ci{ 9812a9d9c8Sopenharmony_ci return this->nWeekDay == nWeekDay && 9912a9d9c8Sopenharmony_ci this->nMonthDay == nMonthDay && 10012a9d9c8Sopenharmony_ci this->nMonth == nMonth && 10112a9d9c8Sopenharmony_ci this->nYear == nYear && 10212a9d9c8Sopenharmony_ci this->byte == byte; 10312a9d9c8Sopenharmony_ci} 10412a9d9c8Sopenharmony_ci 10512a9d9c8Sopenharmony_cibool 10612a9d9c8Sopenharmony_ciSixth::assert(unsigned char byte, 10712a9d9c8Sopenharmony_ci unsigned char nWeekDay, 10812a9d9c8Sopenharmony_ci unsigned char nMonth, 10912a9d9c8Sopenharmony_ci unsigned char nMonthDay) { 11012a9d9c8Sopenharmony_ci return this->nWeekDay == nWeekDay && 11112a9d9c8Sopenharmony_ci this->nMonthDay == nMonthDay && 11212a9d9c8Sopenharmony_ci this->nMonth == nMonth && 11312a9d9c8Sopenharmony_ci this->byte == byte; 11412a9d9c8Sopenharmony_ci}; 11512a9d9c8Sopenharmony_ci 11612a9d9c8Sopenharmony_cibool 11712a9d9c8Sopenharmony_ciSeventh::assert(bool first, 11812a9d9c8Sopenharmony_ci int second, 11912a9d9c8Sopenharmony_ci unsigned short third, 12012a9d9c8Sopenharmony_ci unsigned int fourth, 12112a9d9c8Sopenharmony_ci unsigned short fifth, 12212a9d9c8Sopenharmony_ci bool sixth, 12312a9d9c8Sopenharmony_ci int seventh) { 12412a9d9c8Sopenharmony_ci return this->first_one_bit == first && 12512a9d9c8Sopenharmony_ci this->second_thirty_bits == second && 12612a9d9c8Sopenharmony_ci this->third_two_bits == third && 12712a9d9c8Sopenharmony_ci this->fourth_thirty_bits == fourth && 12812a9d9c8Sopenharmony_ci this->fifth_two_bits == fifth && 12912a9d9c8Sopenharmony_ci this->sixth_one_bit == sixth && 13012a9d9c8Sopenharmony_ci this->seventh_thirty_bits == seventh; 13112a9d9c8Sopenharmony_ci}; 13212a9d9c8Sopenharmony_ci 13312a9d9c8Sopenharmony_ci} // namespace bitfields 13412a9d9c8Sopenharmony_ci 13512a9d9c8Sopenharmony_ciint my_prefixed_function_name() { 13612a9d9c8Sopenharmony_ci return 4; 13712a9d9c8Sopenharmony_ci} 13812a9d9c8Sopenharmony_ci 13912a9d9c8Sopenharmony_ciCoord coord(double x, double y, double z, double t) { 14012a9d9c8Sopenharmony_ci Coord res; 14112a9d9c8Sopenharmony_ci res.v[0] = x; 14212a9d9c8Sopenharmony_ci res.v[1] = y; 14312a9d9c8Sopenharmony_ci res.v[2] = z; 14412a9d9c8Sopenharmony_ci res.v[3] = t; 14512a9d9c8Sopenharmony_ci return res; 14612a9d9c8Sopenharmony_ci} 147