forked from fte/fteqw
1
0
Fork 0

Support for # and ##

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@379 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2004-10-27 23:51:52 +00:00
parent 8dffeea9ad
commit 02433b23aa
1 changed files with 38 additions and 3 deletions

View File

@ -1696,6 +1696,7 @@ char *monthnames[] =
int QCC_PR_CheakCompConst(void) int QCC_PR_CheakCompConst(void)
{ {
char *oldpr_file_p = pr_file_p; char *oldpr_file_p = pr_file_p;
int whitestart;
CompilerConstant_t *c; CompilerConstant_t *c;
@ -1780,9 +1781,9 @@ int QCC_PR_CheakCompConst(void)
oldpr_file_p = pr_file_p; oldpr_file_p = pr_file_p;
pr_file_p = c->value; pr_file_p = c->value;
do for(;;)
{ {
p = strlen(buffer); whitestart = p = strlen(buffer);
while(*pr_file_p <= ' ') //copy across whitespace while(*pr_file_p <= ' ') //copy across whitespace
{ {
if (!*pr_file_p) if (!*pr_file_p)
@ -1791,6 +1792,40 @@ int QCC_PR_CheakCompConst(void)
} }
buffer[p] = 0; buffer[p] = 0;
if (*pr_file_p == '#') //if you ask for #a##b you will be shot. use #a #b instead.
{
if (pr_file_p[1] == '#')
{ //concatinate (srip out whitespace)
buffer[whitestart] = '\0';
pr_file_p+=2;
}
else
{ //stringify
pr_file_p++;
pr_file_p = QCC_COM_Parse(pr_file_p);
if (!pr_file_p)
break;
for (p = 0; p < param; p++)
{
if (!STRCMP(qcc_token, c->params[p]))
{
strcat(buffer, "\"");
strcat(buffer, paramoffset[p]);
strcat(buffer, "\"");
break;
}
}
if (p == param)
{
strcat(buffer, "#");
strcat(buffer, qcc_token);
QCC_PR_ParseWarning(0, "Stingification ignored");
}
continue; //already did this one
}
}
pr_file_p = QCC_COM_Parse(pr_file_p); pr_file_p = QCC_COM_Parse(pr_file_p);
if (!pr_file_p) if (!pr_file_p)
break; break;
@ -1805,7 +1840,7 @@ int QCC_PR_CheakCompConst(void)
} }
if (p == param) if (p == param)
strcat(buffer, qcc_token); strcat(buffer, qcc_token);
} while(1); }
for (p = 0; p < param-1; p++) for (p = 0; p < param-1; p++)
paramoffset[p][strlen(paramoffset[p])] = ','; paramoffset[p][strlen(paramoffset[p])] = ',';