+ # String Map Helpers.
+ for columnName, column in sorted(table.columns.iteritems()):
+ if not is_string_map(column):
+ continue
+
+ print """
+const char * %(s)s_get_%(c)s_value(const struct %(s)s *row, const char *search_key, const char *default_value)
+{
+ char **keys = row->key_%(c)s;
+ char **values = row->value_%(c)s;
+ size_t n_keys = row->n_%(c)s;
+ char ** result_key;
+
+ assert(inited);
+ result_key = bsearch(&search_key, keys, n_keys, sizeof *keys,
+ bsearch_strcmp);
+ return result_key ? values[result_key - keys] : default_value;
+}""" % {'s': structName, 'c': columnName}
+