bindings/ruby/rblm-message-node.c
author Mikael Hallendal <micke@imendio.com>
Thu, 10 Apr 2008 13:12:19 +0200
changeset 371 690e27904abd
parent 370 a7181af7497c
child 372 426746d92e77
permissions -rw-r--r--
Added LmMessageNode::value and value= to ruby bindings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
370
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     1
#include <rblm.h>
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     2
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     3
VALUE lm_cMessageNode;
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     4
371
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
     5
static LmMessageNode *
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
     6
rb_lm_message_node_from_ruby_object (VALUE obj)
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
     7
{
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
     8
	LmMessageNode *node;
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
     9
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    10
	if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) {
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    11
		rb_raise (rb_eTypeError, "not a LmMessageNode");
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    12
	}
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    13
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    14
	Data_Get_Struct (obj, LmMessageNode, node);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    15
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    16
	return node;
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    17
}
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    18
370
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    19
void
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    20
msg_node_free (LmMessageNode *node)
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    21
{
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    22
	lm_message_node_unref (node);
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    23
}
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    24
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    25
VALUE
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    26
msg_node_allocate (VALUE klass)
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    27
{
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    28
	return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL);
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    29
}
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    30
371
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    31
VALUE
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    32
msg_node_get_value (VALUE self)
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    33
{
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    34
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    35
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    36
	if (lm_message_node_get_value (node)) {
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    37
		return rb_str_new2 (lm_message_node_get_value (node));
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    38
	} 
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    39
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    40
	return Qnil;
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    41
}
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    42
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    43
VALUE
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    44
msg_node_set_value (VALUE self, VALUE value)
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    45
{
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    46
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);	
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    47
	char          *value_str = NULL;
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    48
	
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    49
	if (!rb_respond_to (value, rb_intern ("to_s"))) {
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    50
		rb_raise (rb_eArgError, "value should respond to to_s");
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    51
	} else {
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    52
		VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    53
		value_str = StringValuePtr (str_val);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    54
	}
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    55
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    56
	lm_message_node_set_value (node, value_str);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    57
}
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    58
370
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    59
extern void 
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    60
Init_lm_message_node (VALUE lm_mLM)
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    61
{
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    62
	lm_cMessageNode = rb_define_class_under (lm_mLM, "MessageNode", 
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    63
						 rb_cObject);
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    64
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    65
	rb_define_alloc_func (lm_cMessageNode, msg_node_allocate);
371
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    66
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    67
	rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    68
	rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1);
690e27904abd Added LmMessageNode::value and value= to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents: 370
diff changeset
    69
370
a7181af7497c Added message node initial checkin for bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    70
}