+static int
+merge_cb (VALUE key, VALUE value, VALUE self)
+{
+ c_aset (self, key, value);
+
+ return ST_CONTINUE;
+}
+
+/*
+ * call-seq:
+ * object.merge!(hash) -> object
+ *
+ * Adds the key-value pairs from *hash* to *object*, overwriting existing
+ * values if a key already existed in *object*.
+ */
+static VALUE
+c_merge (VALUE self, VALUE hash)
+{
+ Check_Type (hash, T_HASH);
+
+ rb_hash_foreach (hash, merge_cb, self);
+
+ return self;
+}
+