-
+\
extern HashList *Conditionals;
extern HashList *GlobalNS;
extern HashList *Iterators;
#define CTX_ROOMS 14
#define CTX_FLOORS 15
#define CTX_ITERATE 16
+#define CTX_ICAL 17
-#define CTX_UNKNOWN 17
+#define CTX_UNKNOWN 18
/**
/* make a template token a lookup key: */
#define TKEY(a) TP->Tokens->Params[a]->Start, TP->Tokens->Params[a]->len
-/* TODO: wcsubst should be private! */
-
-/*
- * \brief Dynamic content for variable substitution in templates
- */
-typedef struct _wcsubst {
- ContextFilter Filter;
- int wcs_type; /* which type of Substitution are we */
- char wcs_key[32]; /* copy of our hashkey for debugging */
- StrBuf *wcs_value; /* if we're a string, keep it here */
- long lvalue; /* type long? keep data here */
- WCHandlerFunc wcs_function; /* funcion hook ???*/
-} wcsubst;
-
-
/**
* this is the signature of a conditional function
* Note: Target is just passed in for error messages; don't write onto it in regular cases.
WCConditionalFunc CondF;
} ConditionalStruct;
-/** IterateStruct TODO: SHOULD BE PRIVATE */
-typedef struct _iteratestruct {
- int GroupChange;
- int oddeven;
- const char *Key;
- long KeyLen;
- int n;
- int LastN;
-}IterateStruct;
typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, WCTemplputParams *TP);
typedef HashList *(*RetrieveHashlistFunc)(StrBuf *Target, WCTemplputParams *TP);
extern WCTemplputParams NoCtx;
-
+#define HAVE_PARAM(a) (TP->Tokens->nParameters > a)
#define ERR_NAME 0
WCTemplputParams *TP,
const char *Format, ...)__attribute__((__format__(__printf__,5,6)));
+
+/**
+ * \Brief log an error while in global context; print it to Wildfire / Target
+ * \param Target your Target Buffer to print the error message next to the log
+ * \param Type What sort of thing are we talking about? Tokens? Conditionals?
+ * \param Format for the custom error message
+ */
+void LogError (StrBuf *Target, const char *Type, const char *Format, ...);
+
/**
* \Brief get the actual value of a token parameter
* in your tmplputs or conditionals use this function to access parameters that can also be
* \param Value reference to the string of the token; don't free me.
* \param len the length of Value
*/
-void GetTemplateTokenString(WCTemplputParams *TP,
+void GetTemplateTokenString(StrBuf *Target,
+ WCTemplputParams *TP,
int N,
const char **Value,
long *len);
+
+
+/**
+ * \Brief get the actual integer value of a token parameter
+ * in your tmplputs or conditionals use this function to access parameters that can also be
+ * retrieved from dynamic facilities:
+ * _ -> Gettext; retrieve this token from the i18n facilities
+ * : -> lookup a setting of that name
+ * B -> bstr; an URL-Parameter
+ * = -> subtemplate; parse a template by this name, and treat its content as this tokens value
+ *
+ * \param N which token do you want to lookup?
+ * \param dflt default value to be retrieved if not found in preferences
+ * \returns the long value
+ */
+long GetTemplateTokenNumber(StrBuf *Target,
+ WCTemplputParams *TP,
+ int N, long dflt);
+
/**
* \Brief put a token value into the template
* use this function to append your strings into a Template.
#define do_template(a, b) DoTemplate(a, sizeof(a) -1, NULL, &NoCtx);
-void DoTemplate(const char *templatename, long len, StrBuf *Target, WCTemplputParams *TP);
+const StrBuf *DoTemplate(const char *templatename, long len, StrBuf *Target, WCTemplputParams *TP);
void url_do_template(void);