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