summaryrefslogtreecommitdiff
path: root/pkiter.h
diff options
context:
space:
mode:
Diffstat (limited to 'pkiter.h')
-rw-r--r--pkiter.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/pkiter.h b/pkiter.h
new file mode 100644
index 0000000..db7f451
--- /dev/null
+++ b/pkiter.h
@@ -0,0 +1,28 @@
+#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);
+ }
+};
+#endif
+
+#endif /* PK_PKITER_H */