summaryrefslogtreecommitdiff
path: root/ext/psych/psych.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/psych/psych.c')
-rw-r--r--ext/psych/psych.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/ext/psych/psych.c b/ext/psych/psych.c
new file mode 100644
index 0000000000..afbd7a3571
--- /dev/null
+++ b/ext/psych/psych.c
@@ -0,0 +1,36 @@
+#include <psych.h>
+
+/* call-seq: Psych.libyaml_version
+ *
+ * Returns the version of libyaml being used
+ */
+static VALUE libyaml_version(VALUE module)
+{
+ int major, minor, patch;
+ VALUE list[3];
+
+ yaml_get_version(&major, &minor, &patch);
+
+ list[0] = INT2NUM(major);
+ list[1] = INT2NUM(minor);
+ list[2] = INT2NUM(patch);
+
+ return rb_ary_new4((long)3, list);
+}
+
+VALUE mPsych;
+
+void Init_psych(void)
+{
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
+ RB_EXT_RACTOR_SAFE(true);
+ #endif
+ mPsych = rb_define_module("Psych");
+
+ rb_define_singleton_method(mPsych, "libyaml_version", libyaml_version, 0);
+
+ Init_psych_parser();
+ Init_psych_emitter();
+ Init_psych_to_ruby();
+ Init_psych_yaml_tree();
+}