123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# File 'ext/bromlife/rb_bromlife.c', line 123
static VALUE
rb_oml_node_iter_m_next (VALUE self)
{
const OmlNode *node = oml_node_iter_next (RTYPEDDATA_DATA (self));
if (!node)
return RUBY_Qnil;
if (oml_node_is_element (node))
{
const OmlElement *element = oml_node_to_element (node);
if (!element)
rb_raise (rb_eError, "unreachable");
return TypedData_Wrap_Struct (rb_cElement, &rb_oml_element_type,
(void *)element);
}
else if (oml_node_is_text (node))
{
size_t len;
const uint8_t *bytes = oml_node_to_text (node, &len);
if (!bytes)
rb_raise (rb_eError, "unreachable");
return rb_str_new_static ((const char *)bytes, len);
}
else
rb_raise (rb_eError, "unreachable");
}
|