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-- |
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 |
} |