MCPcopy Create free account
hub / github.com/JACoders/OpenJK / Menu_Parse

Function Menu_Parse

code/ui/ui_shared.cpp:5755–5812  ·  view source on GitHub ↗

=============== Menu_Parse =============== */

Source from the content-addressed store, hash-verified

5753===============
5754*/
5755qboolean 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}

Callers 1

Menu_NewFunction · 0.70

Calls 5

PC_ParseExtFunction · 0.85
PC_ParseWarningFunction · 0.85
PC_EndParseSessionFunction · 0.85
KeywordHash_FindFunction · 0.70
vaFunction · 0.50

Tested by

no test coverage detected