bindings/ruby/src/rblm-message-node.c
author Mikael Hallendal <micke@imendio.com>
Thu, 10 Apr 2008 21:30:17 +0200
changeset 390 8623ce9ef39d
permissions -rw-r--r--
moved extension code to src
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
390
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     1
#include <rblm.h>
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     2
#include <rblm-private.h>
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     3
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     4
VALUE lm_cMessageNode;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     5
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     6
LmMessageNode *
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     7
rb_lm_message_node_from_ruby_object (VALUE obj)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     8
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     9
	LmMessageNode *node;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    10
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    11
	if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    12
		rb_raise (rb_eTypeError, "not a LmMessageNode");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    13
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    14
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    15
	Data_Get_Struct (obj, LmMessageNode, node);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    16
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    17
	return node;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    18
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    19
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    20
void
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    21
msg_node_free (LmMessageNode *node)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    22
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    23
	lm_message_node_unref (node);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    24
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    25
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    26
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    27
rb_lm_message_node_to_ruby_object (LmMessageNode *node)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    28
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    29
	if (node) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    30
		lm_message_node_ref (node);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    31
		return Data_Wrap_Struct (lm_cMessageNode, NULL, 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    32
					 msg_node_free, node);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    33
	} else {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    34
		return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    35
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    36
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    37
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    38
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    39
msg_node_allocate (VALUE klass)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    40
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    41
	return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    42
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    43
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    44
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    45
msg_node_get_name (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    46
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    47
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    48
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    49
	return rb_str_new2 (node->name);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    50
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    51
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    52
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    53
msg_node_get_value (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    54
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    55
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    56
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    57
	if (lm_message_node_get_value (node)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    58
		return rb_str_new2 (lm_message_node_get_value (node));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    59
	} 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    60
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    61
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    62
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    63
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    64
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    65
msg_node_set_value (VALUE self, VALUE value)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    66
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    67
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);	
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    68
	char          *value_str = NULL;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    69
	
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    70
	if (!rb_respond_to (value, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    71
		rb_raise (rb_eArgError, "value should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    72
	} else {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    73
		VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    74
		value_str = StringValuePtr (str_val);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    75
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    76
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    77
	lm_message_node_set_value (node, value_str);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    78
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    79
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    80
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    81
msg_node_add_child (int argc, VALUE *argv, VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    82
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    83
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    84
	LmMessageNode *child;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    85
	VALUE          name, value;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    86
	char          *value_str = NULL;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    87
	
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    88
	rb_scan_args (argc, argv, "11", &name, &value);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    89
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    90
	if (!NIL_P (value)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    91
		if (!rb_respond_to (value, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    92
			rb_raise (rb_eArgError, "value should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    93
		} else {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    94
			VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    95
			value_str = StringValuePtr (str_val);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    96
		}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    97
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    98
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    99
	child = lm_message_node_add_child (node, StringValuePtr (name),
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   100
					   value_str);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   101
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   102
	return LMMESSAGENODE2RVAL (child);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   103
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   104
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   105
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   106
msg_node_get_attribute (VALUE self, VALUE attr)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   107
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   108
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   109
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   110
	if (lm_message_node_get_attribute (node, StringValuePtr (attr))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   111
	    return rb_str_new2 (lm_message_node_get_attribute (node, 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   112
							       StringValuePtr (attr)));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   113
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   114
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   115
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   116
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   117
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   118
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   119
msg_node_set_attribute (VALUE self, VALUE attr, VALUE value)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   120
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   121
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   122
	char          *value_str = NULL;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   123
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   124
	if (!NIL_P (value)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   125
		value_str = StringValuePtr (value);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   126
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   127
	
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   128
	lm_message_node_set_attribute (node, StringValuePtr (attr), value_str);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   129
	 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   130
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   131
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   132
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   133
VALUE 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   134
msg_node_get_child (VALUE self, VALUE name)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   135
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   136
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   137
	LmMessageNode *child;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   138
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   139
	child = lm_message_node_get_child (node, StringValuePtr (name));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   140
	
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   141
	return LMMESSAGENODE2RVAL (child);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   142
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   143
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   144
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   145
msg_node_find_child (VALUE self, VALUE name)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   146
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   147
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   148
	LmMessageNode *child;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   149
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   150
	child = lm_message_node_find_child (node, StringValuePtr (name));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   151
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   152
	return LMMESSAGENODE2RVAL (child);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   153
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   154
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   155
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   156
msg_node_get_is_raw_mode (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   157
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   158
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   159
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   160
	return GBOOL2RVAL (lm_message_node_get_raw_mode (node));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   161
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   162
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   163
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   164
msg_node_set_is_raw_mode (VALUE self, VALUE raw_mode)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   165
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   166
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   167
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   168
	lm_message_node_set_raw_mode (node, RVAL2GBOOL (raw_mode));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   169
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   170
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   171
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   172
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   173
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   174
msg_node_to_string (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   175
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   176
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   177
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   178
	return rb_str_new2 (lm_message_node_to_string (node));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   179
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   180
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   181
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   182
msg_node_get_next (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   183
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   184
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   185
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   186
	return LMMESSAGENODE2RVAL (node->next);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   187
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   188
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   189
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   190
msg_node_get_prev (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   191
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   192
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   193
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   194
	return LMMESSAGENODE2RVAL (node->prev);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   195
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   196
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   197
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   198
msg_node_get_parent (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   199
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   200
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   201
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   202
	return LMMESSAGENODE2RVAL (node->parent);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   203
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   204
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   205
VALUE 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   206
msg_node_get_children (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   207
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   208
	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   209
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   210
	return LMMESSAGENODE2RVAL (node->children);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   211
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   212
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   213
extern void 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   214
Init_lm_message_node (VALUE lm_mLM)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   215
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   216
	lm_cMessageNode = rb_define_class_under (lm_mLM, "MessageNode", 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   217
						 rb_cObject);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   218
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   219
	rb_define_alloc_func (lm_cMessageNode, msg_node_allocate);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   220
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   221
	rb_define_method (lm_cMessageNode, "name", msg_node_get_name, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   222
	rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   223
	rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   224
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   225
	rb_define_method (lm_cMessageNode, "add_child", msg_node_add_child, -1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   226
	rb_define_method (lm_cMessageNode, "get_attribute", msg_node_get_attribute, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   227
	rb_define_method (lm_cMessageNode, "set_attribute", msg_node_set_attribute, 2);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   228
	rb_define_method (lm_cMessageNode, "get_child", msg_node_get_child, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   229
	rb_define_method (lm_cMessageNode, "find_child", msg_node_find_child, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   230
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   231
	rb_define_method (lm_cMessageNode, "raw_mode", msg_node_get_is_raw_mode, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   232
	rb_define_method (lm_cMessageNode, "raw_mode=", msg_node_set_is_raw_mode, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   233
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   234
	rb_define_method (lm_cMessageNode, "to_s", msg_node_to_string, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   235
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   236
	rb_define_method (lm_cMessageNode, "next", msg_node_get_next, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   237
	rb_define_method (lm_cMessageNode, "prev", msg_node_get_prev, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   238
	rb_define_method (lm_cMessageNode, "parent", msg_node_get_parent, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   239
	rb_define_method (lm_cMessageNode, "children", msg_node_get_children, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   240
}