/*
 * call-seq:
 *  sub_elements
 *
 * A list of allowed sub elements for this element.
 */
static VALUE sub_elements(VALUE self)
{
  htmlElemDesc * description;
  Data_Get_Struct(self, htmlElemDesc, description);

  VALUE list = rb_ary_new();

  if(NULL == description->subelts) return list;

  int i = 0;
  while(description->subelts[i]) {
    rb_ary_push(list, NOKOGIRI_STR_NEW2(description->subelts[i]));
    i++;
  }

  return list;
}