#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 struct pk_iter_t : public pk_iter { operator T*() { return reinterpret_cast(this->data); } T* operator->() { return reinterpret_cast(this->data); } }; #endif #endif /* PK_PKITER_H */