blob: d2694a3b6564b129db1016d09ccd3549cb688a10 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef PK_PKITER_H
#define PK_PKITER_H
union pk_iter_id {
struct pk_iter_bkt_handle {
unsigned int b : 24;
unsigned int i : 8;
} bkt;
struct pk_iter_arr_idx {
unsigned int i : 32;
} arr;
};
struct pk_iter {
void *data;
union pk_iter_id id;
};
#if defined (__cplusplus)
template <typename T>
struct pk_iter_t : public pk_iter {
operator T*() {
return reinterpret_cast<T*>(this->data);
}
T* operator->() {
return reinterpret_cast<T*>(this->data);
}
};
#endif
#endif /* PK_PKITER_H */
|