summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ruby/debug.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/include/ruby/debug.h b/include/ruby/debug.h
new file mode 100644
index 0000000000..ff259910f6
--- /dev/null
+++ b/include/ruby/debug.h
@@ -0,0 +1,75 @@
+/**********************************************************************
+
+ ruby/debug.h -
+
+ $Author: ko1 $
+ created at: Tue Nov 20 20:35:08 2012
+
+ Copyright (C) 2012 Yukihiro Matsumoto
+
+**********************************************************************/
+
+#ifndef RB_DEBUG_H
+#define RB_DEBUG_H 1
+
+#if defined(__cplusplus)
+extern "C" {
+#if 0
+} /* satisfy cc-mode */
+#endif
+#endif
+
+#if defined __GNUC__ && __GNUC__ >= 4
+#pragma GCC visibility push(default)
+#endif
+
+/* Note: This file contains experimental APIs. */
+/* APIs can be replaced at Ruby 2.0.1 or later */
+
+typedef enum {
+ RUBY_EVENT_HOOK_FLAG_SAFE = 0x01,
+ RUBY_EVENT_HOOK_FLAG_DELETED = 0x02,
+ RUBY_EVENT_HOOK_FLAG_RAW_ARG = 0x04
+} rb_event_hook_flag_t;
+
+/* Safe API. Callback will be called under PUSH_TAG() */
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
+int rb_remove_event_hook(rb_event_hook_func_t func);
+int rb_remove_event_hook_with_data(rb_event_hook_func_t func, VALUE data);
+void rb_thread_add_event_hook(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
+int rb_thread_remove_event_hook(VALUE thval, rb_event_hook_func_t func);
+int rb_thread_remove_event_hook_with_data(VALUE thval, rb_event_hook_func_t func, VALUE data);
+
+/* advanced version */
+void rb_add_event_hook2(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
+void rb_thread_add_event_hook2(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
+
+/* TracePoint APIs */
+
+VALUE rb_tracepoint_new(VALUE target_thread_not_supported_yet, rb_event_flag_t events, void (*func)(VALUE, void *), void *data);
+VALUE rb_tracepoint_enable(VALUE tpval);
+VALUE rb_tracepoint_disable(VALUE tpval);
+VALUE rb_tracepoint_enabled_p(VALUE tpval);
+
+VALUE rb_tracepoint_attr_event(VALUE tpval);
+VALUE rb_tracepoint_attr_line(VALUE tpval);
+VALUE rb_tracepoint_attr_file(VALUE tpval);
+VALUE rb_tracepoint_attr_id(VALUE tpval);
+VALUE rb_tracepoint_attr_klass(VALUE tpval);
+VALUE rb_tracepoint_attr_binding(VALUE tpval);
+VALUE rb_tracepoint_attr_self(VALUE tpval);
+VALUE rb_tracepoint_attr_return_value(VALUE tpval);
+VALUE rb_tracepoint_attr_raised_exception(VALUE tpval);
+
+#if defined __GNUC__ && __GNUC__ >= 4
+#pragma GCC visibility pop
+#endif
+
+#if defined(__cplusplus)
+#if 0
+{ /* satisfy cc-mode */
+#endif
+} /* extern "C" { */
+#endif
+
+#endif /* RUBY_DEBUG_H */