+const char *sam_tbl_get(void *h, const char *key)
+{
+ khash_t(str) *tbl = (khash_t(str)*)h;
+ khint_t k;
+ k = kh_get(str, tbl, key);
+ return k == kh_end(tbl)? 0 : kh_val(tbl, k);
+}
+
+int sam_tbl_size(void *h)
+{
+ khash_t(str) *tbl = (khash_t(str)*)h;
+ return h? kh_size(tbl) : 0;
+}
+
+int sam_tbl_pair(void *h, char **keys, char **vals)
+{
+ khash_t(str) *tbl = (khash_t(str)*)h;
+ int i = 0;
+ khint_t k;
+ if (h == 0) return -1;
+ for (k = kh_begin(tbl); k != kh_end(tbl); ++k) {
+ if (kh_exist(tbl, k)) {
+ keys[i] = (char*)kh_key(tbl, k);
+ vals[i++] = (char*)kh_val(tbl, k);
+ }
+ }
+ return kh_size(tbl);
+}
+
+void sam_tbl_destroy(void *h)
+{
+ khash_t(str) *tbl = (khash_t(str)*)h;
+ kh_destroy(str, tbl);
+}