Allow to specify an enumlist inside an enum.

It was not possible to use an enumlist inside an enum:
<enumlist>
   <enum name="aa">
      <enumlist>
         ...
      </enumlist>
   </enum>
</enumlist>
Now we will be able to insert as many levels as we want.

(closes issue #15112)
Reported by: lmadsen



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Eliel C. Sardanons
2009-05-15 13:23:37 +00:00
parent d1e0b11343
commit 77c41d700e
2 changed files with 10 additions and 1 deletions

View File

@@ -41,7 +41,7 @@
<!ATTLIST option hasparams CDATA ""> <!ATTLIST option hasparams CDATA "">
<!ELEMENT enumlist (enum+)> <!ELEMENT enumlist (enum+)>
<!ELEMENT enum (para|note|warning|parameter)*> <!ELEMENT enum (para|note|warning|parameter|enumlist)*>
<!ATTLIST enum name CDATA ""> <!ATTLIST enum name CDATA "">
<!ELEMENT argument (para|note|warning|variablelist|argument)*> <!ELEMENT argument (para|note|warning|variablelist|argument)*>

View File

@@ -60,6 +60,7 @@ struct documentation_tree {
}; };
static char *xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname); static char *xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname);
static int xmldoc_parse_enumlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer);
/*! /*!
* \brief Container of documentation trees * \brief Container of documentation trees
@@ -1400,6 +1401,9 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str
{ {
struct ast_xml_node *node = fixnode; struct ast_xml_node *node = fixnode;
int ret = 0; int ret = 0;
char *optiontabs;
ast_asprintf(&optiontabs, "%s ", tabs);
for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) { for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
if ((xmldoc_parse_para(node, (ret ? tabs : " - "), "\n", buffer))) { if ((xmldoc_parse_para(node, (ret ? tabs : " - "), "\n", buffer))) {
@@ -1407,7 +1411,12 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str
} else if ((xmldoc_parse_specialtags(node, (ret ? tabs : " - "), "\n", buffer))) { } else if ((xmldoc_parse_specialtags(node, (ret ? tabs : " - "), "\n", buffer))) {
ret = 1; ret = 1;
} }
xmldoc_parse_enumlist(node, optiontabs, buffer);
} }
ast_free(optiontabs);
return ret; return ret;
} }