Class: Bromlife::NodeIter

Inherits:
Object
  • Object
show all
Defined in:
ext/bromlife/rb_bromlife.c

Instance Method Summary collapse

Instance Method Details

#nextString, ...

Returns:



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");
}