2 // { dg-options "-fstrict-enums" }
4 extern "C" void abort (void);
5 class CCUTILS_KeyedScalarLevelPosition
19 { return(m_timestamp != UNINITED); }
21 bool is_at_begin() const
22 { return(m_timestamp == AT_BEGIN); }
24 position_t get_state() const
26 return((m_timestamp >= AT_KEY)
28 : ((position_t)m_timestamp));
32 { m_timestamp = AT_BEGIN; }
34 unsigned int get_index() const
37 void set_pos(unsigned int a_index, unsigned int a_timestmap)
40 m_timestamp = a_timestmap;
43 bool check_pos(unsigned int a_num_entries, unsigned int a_timestamp) const
45 if (get_state() != AT_KEY)
48 if (m_timestamp != a_timestamp)
51 return(m_index < a_num_entries);
59 unsigned int m_timestamp;
64 class CCUTILS_KeyedScalarPosition
68 CCUTILS_KeyedScalarLevelPosition m_L1;
69 CCUTILS_KeyedScalarLevelPosition m_L2;
76 unsigned int m_cur_array_len;
77 unsigned int m_timestamp;
79 unsigned int _get_timestamp() const
80 { return(m_timestamp); }
82 bool _check_L1_pos(const CCUTILS_KeyedScalarPosition &a_position) const
84 return(a_position.m_L1.check_pos(
85 m_cur_array_len, _get_timestamp()));
88 void *next (CCUTILS_KeyedScalarPosition &);
91 void * baz::next (CCUTILS_KeyedScalarPosition &a_position)
93 if (a_position.m_L1.is_at_begin() || (!a_position.m_L1.is_init()))
95 a_position.m_L1.set_pos(0, _get_timestamp());
96 a_position.m_L2.set_at_begin();
98 else if (!_check_L1_pos(a_position))
101 return n[a_position.m_L1.get_index ()];
104 int main (int, char **)
107 CCUTILS_KeyedScalarPosition a_pos;
112 obj.m_cur_array_len = 1;
113 obj.m_timestamp = 42;
115 a_pos.m_L1.set_pos (0, 42);
117 ret = obj.next (a_pos);