HashList *Iterators;
HashList *Conditionals;
HashList *SortHash;
+HashList *Defines;
int DumpTemplateI18NStrings = 0;
int LoadTemplates = 0;
switch (TP->Tokens->Params[N]->Type) {
+ case TYPE_INTDEFINE:
case TYPE_STR:
*Value = TP->Tokens->Params[N]->Start;
*len = TP->Tokens->Params[N]->len;
}
if (get_PREF_LONG(TKEY(N), &Ret, dflt))
return Ret;
- return 0;
+ return 0;
+ case TYPE_INTDEFINE:
case TYPE_LONG:
return TP->Tokens->Params[N]->lvalue;
case TYPE_PREFINT:
Template->Tokens[(Template->nTokensUsed)++] = NewToken;
}
-TemplateParam *GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Tokens, WCTemplate *pTmpl)
+TemplateParam *GetNextParameter(StrBuf *Buf,
+ const char **pCh,
+ const char *pe,
+ WCTemplateToken *Tokens,
+ WCTemplate *pTmpl,
+ WCTemplputParams *TP)
{
const char *pch = *pCh;
const char *pchs, *pche;
ParamBrace = 1;
}
}
+ else if (*pch == '#') {
+ Parm->Type = TYPE_INTDEFINE;
+ pch ++;
+ }
else if (*pch == '_') {
Parm->Type = TYPE_GETTEXT;
pch ++;
if (DumpTemplateI18NStrings && (Parm->Type == TYPE_GETTEXT)) {
StrBufAppendPrintf(I18nDump, "_(\"%s\");\n", Parm->Start);
}
+ if (Parm->Type == TYPE_INTDEFINE)
+ {
+ void *vPVal;
+
+ if (GetHash(Defines, Parm->Start, Parm->len, &vPVal) &&
+ (vPVal != NULL))
+ {
+ long *PVal;
+ PVal = (long*) vPVal;
+
+ Parm->lvalue = *PVal;
+ }
+ else
+ {
+ LogTemplateError(NULL, "Define", ERR_PARM1, TP,
+ "%s isn't known!!",
+ Parm->Start);
+ }
+ }
*pCh = pch;
return Parm;
}
"Warning, Non welformed Token; missing right parenthesis");
}
while (pch < pTmplEnd - 1) {
- Param = GetNextParameter(Buf, &pch, pTmplEnd - 1, NewToken, pTmpl);
+ Param = GetNextParameter(Buf, &pch, pTmplEnd - 1, NewToken, pTmpl, &TP);
if (Param != NULL) {
NewToken->HaveParameters = 1;
if (NewToken->nParameters > MAXPARAM) {
Put(Conditionals, Name, len, Cond, NULL);
}
+void RegisterTokenParamDefine(const char *Name, long len,
+ long Value)
+{
+ long *PVal;
+
+ PVal = (long*)malloc(sizeof(long));
+ *PVal = Value;
+ Put(Defines, Name, len, PVal, NULL);
+}
+
+HashList *Defines;
+
/*-----------------------------------------------------------------------------
* Context Strings
*/
Iterators = NewHash(1, NULL);
Conditionals = NewHash(1, NULL);
SortHash = NewHash(1, NULL);
+ Defines = NewHash(1, NULL);
}
void
DeleteHash(&Iterators);
DeleteHash(&Conditionals);
DeleteHash(&SortHash);
-
+ DeleteHash(&Defines);
}