=============== Menu_Parse =============== */
| 5753 | =============== |
| 5754 | */ |
| 5755 | qboolean Menu_Parse(char *inbuffer, menuDef_t *menu) |
| 5756 | { |
| 5757 | // pc_token_t token; |
| 5758 | keywordHash_t *key; |
| 5759 | char *token2; |
| 5760 | char * buffer; |
| 5761 | bool nest= false; |
| 5762 | buffer = inbuffer; |
| 5763 | |
| 5764 | token2 = PC_ParseExt(); |
| 5765 | |
| 5766 | if (!token2) |
| 5767 | { |
| 5768 | return qfalse; |
| 5769 | } |
| 5770 | |
| 5771 | if (*token2 != '{') |
| 5772 | { |
| 5773 | PC_ParseWarning("Misplaced {"); |
| 5774 | return qfalse; |
| 5775 | } |
| 5776 | while ( 1 ) |
| 5777 | { |
| 5778 | |
| 5779 | token2 = PC_ParseExt(); |
| 5780 | if (!token2) |
| 5781 | { |
| 5782 | PC_ParseWarning("End of file inside menu."); |
| 5783 | return qfalse; |
| 5784 | } |
| 5785 | |
| 5786 | if (*token2 == '}') |
| 5787 | { |
| 5788 | return qtrue; |
| 5789 | } |
| 5790 | |
| 5791 | if (nest && (*token2 == 0)) |
| 5792 | { |
| 5793 | PC_EndParseSession(buffer); |
| 5794 | |
| 5795 | nest = false; |
| 5796 | continue; |
| 5797 | } |
| 5798 | key = KeywordHash_Find(menuParseKeywordHash, token2); |
| 5799 | |
| 5800 | if (!key) |
| 5801 | { |
| 5802 | PC_ParseWarning(va("Unknown menu keyword %s",token2)); |
| 5803 | continue; |
| 5804 | } |
| 5805 | |
| 5806 | if ( !key->func((itemDef_t*)menu) ) |
| 5807 | { |
| 5808 | PC_ParseWarning(va("Couldn't parse menu keyword %s as %s",token2, key->keyword)); |
| 5809 | return qfalse; |
| 5810 | } |
| 5811 | } |
| 5812 | } |
no test coverage detected