--- a/bindings/ruby/rblm-message-node.c Thu Apr 10 10:35:20 2008 +0200
+++ b/bindings/ruby/rblm-message-node.c Thu Apr 10 13:12:19 2008 +0200
@@ -2,6 +2,20 @@
VALUE lm_cMessageNode;
+static LmMessageNode *
+rb_lm_message_node_from_ruby_object (VALUE obj)
+{
+ LmMessageNode *node;
+
+ if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) {
+ rb_raise (rb_eTypeError, "not a LmMessageNode");
+ }
+
+ Data_Get_Struct (obj, LmMessageNode, node);
+
+ return node;
+}
+
void
msg_node_free (LmMessageNode *node)
{
@@ -14,6 +28,34 @@
return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL);
}
+VALUE
+msg_node_get_value (VALUE self)
+{
+ LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
+
+ if (lm_message_node_get_value (node)) {
+ return rb_str_new2 (lm_message_node_get_value (node));
+ }
+
+ return Qnil;
+}
+
+VALUE
+msg_node_set_value (VALUE self, VALUE value)
+{
+ LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
+ char *value_str = NULL;
+
+ if (!rb_respond_to (value, rb_intern ("to_s"))) {
+ rb_raise (rb_eArgError, "value should respond to to_s");
+ } else {
+ VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
+ value_str = StringValuePtr (str_val);
+ }
+
+ lm_message_node_set_value (node, value_str);
+}
+
extern void
Init_lm_message_node (VALUE lm_mLM)
{
@@ -21,4 +63,8 @@
rb_cObject);
rb_define_alloc_func (lm_cMessageNode, msg_node_allocate);
+
+ rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0);
+ rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1);
+
}
--- a/bindings/ruby/rblm.c Thu Apr 10 10:35:20 2008 +0200
+++ b/bindings/ruby/rblm.c Thu Apr 10 13:12:19 2008 +0200
@@ -9,6 +9,7 @@
Init_lm_connection (lm_mLM);
Init_lm_message (lm_mLM);
+ Init_lm_message_node (lm_mLM);
Init_lm_constants (lm_mLM);
}
--- a/bindings/ruby/rblm.h Thu Apr 10 10:35:20 2008 +0200
+++ b/bindings/ruby/rblm.h Thu Apr 10 13:12:19 2008 +0200
@@ -8,6 +8,7 @@
extern void Init_loudmouth (void);
extern void Init_lm_connection (VALUE lm_mLM);
extern void Init_lm_message (VALUE lm_mLM);
+extern void Init_lm_message_node (VALUE lm_mLM);
extern void Init_lm_constants (VALUE lm_mLM);
#endif /* __RLM_H__ */