/* 'find_public()' - Find a public function, type, etc.  */
static mxml_node_t * find_public(mxml_node_t *node, mxml_node_t *top, const char *name)
/* 'find_public()' - Find a public function, type, etc.  */
static mxml_node_t * find_public(mxml_node_t *node, mxml_node_t *top, const char *name)
{
  mxml_node_t	*description,
		*comment;
  for (node = mxmlFindElement(node, top, name, NULL, NULL,
                              node == top ? MXML_DESCEND_FIRST :
			                    MXML_NO_DESCEND);
       node;
       node = mxmlFindElement(node, top, name, NULL, NULL, MXML_NO_DESCEND))
  {
    description = mxmlFindElement(node, node, "description", NULL, NULL,
                                  MXML_DESCEND_FIRST);
    if (!description)
      continue;
    for (comment = description->child; comment; comment = comment->next)
      if ((comment->type == MXML_TEXT &&
           strstr(comment->value.text.string, "@private@")) ||
          (comment->type == MXML_OPAQUE &&
           strstr(comment->value.opaque, "@private@")))
        break;
    if (!comment)
    {
      return (node);
    }
  }
  return (NULL);
}