r1298 - trunk/varnish-cache/lib/libvcl

phk at projects.linpro.no phk at projects.linpro.no
Sun Apr 1 11:07:44 CEST 2007


Author: phk
Date: 2007-04-01 11:07:44 +0200 (Sun, 01 Apr 2007)
New Revision: 1298

Modified:
   trunk/varnish-cache/lib/libvcl/vcc_action.c
   trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
   trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl
   trunk/varnish-cache/lib/libvcl/vcc_token_defs.h
Log:
Implement the returns with the new ID based table and eliminate their
corresponding dedicated tokens.


Modified: trunk/varnish-cache/lib/libvcl/vcc_action.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_action.c	2007-04-01 08:48:08 UTC (rev 1297)
+++ trunk/varnish-cache/lib/libvcl/vcc_action.c	2007-04-01 09:07:44 UTC (rev 1298)
@@ -69,12 +69,67 @@
 
 /*--------------------------------------------------------------------*/
 
+#define VCL_RET_MAC(l,u,b,i) 				\
+static void						\
+parse_##l(struct tokenlist *tl)				\
+{							\
+							\
+	Fb(tl, 1, "VRT_done(sp, VCL_RET_%s);\n", #u); 	\
+	vcc_ProcAction(tl->curproc, i, tl->t); 		\
+	vcc_NextToken(tl);				\
+}
+
+#include "vcl_returns.h"
+#undef VCL_RET_MAC
+
+/*--------------------------------------------------------------------*/
+
 static void
+parse_call(struct tokenlist *tl)
+{
+
+	vcc_NextToken(tl);
+	ExpectErr(tl, ID);
+	vcc_AddCall(tl, tl->t);
+	vcc_AddRef(tl, tl->t, R_FUNC);
+	Fb(tl, 1, "if (VGC_function_%.*s(sp))\n", PF(tl->t));
+	Fb(tl, 1, "\treturn (1);\n");
+	vcc_NextToken(tl);
+	return;
+}
+
+/*--------------------------------------------------------------------*/
+
+static void
+parse_error(struct tokenlist *tl)
+{
+	unsigned a;
+
+	vcc_NextToken(tl);
+	if (tl->t->tok == CNUM)
+		a = vcc_UintVal(tl);
+	else
+		a = 0;
+	Fb(tl, 1, "VRT_error(sp, %u", a);
+	if (tl->t->tok == CSTR) {
+		Fb(tl, 0, ", %.*s", PF(tl->t));
+		vcc_NextToken(tl);
+	} else {
+		Fb(tl, 0, ", (const char *)0");
+	}
+	Fb(tl, 0, ");\n");
+	Fb(tl, 1, "VRT_done(sp, VCL_RET_ERROR);\n");
+}
+
+/*--------------------------------------------------------------------*/
+
+static void
 parse_set(struct tokenlist *tl)
 {
 	struct var *vp;
 	struct token *at, *vt;
 
+	vcc_NextToken(tl);
 	ExpectErr(tl, VAR);
 	vt = tl->t;
 	vp = FindVar(tl, tl->t, vcc_vars);
@@ -166,12 +221,18 @@
 
 /*--------------------------------------------------------------------*/
 
-typedef action_f(struct tokenlist *tl);
+typedef void action_f(struct tokenlist *tl);
 
 static struct action_table {
 	const char		*name;
 	action_f		*func;
 } action_table[] = {
+#define VCL_RET_MAC(l, u, b, i) { #l, parse_##l },
+#define VCL_RET_MAC_E(l, u, b, i) VCL_RET_MAC(l, u, b, i) 
+#include "vcl_returns.h"
+#undef VCL_RET_MAC
+#undef VCL_RET_MAC_E
+	{ "call", 	parse_call },
 	{ "set", 	parse_set },
 	{ NULL,		NULL }
 };
@@ -180,12 +241,10 @@
 void
 vcc_ParseAction(struct tokenlist *tl)
 {
-	unsigned a;
 	struct token *at;
 	struct action_table *atp;
 
 	at = tl->t;
-	vcc_NextToken(tl);
 	if (at->tok == ID) {
 		for(atp = action_table; atp->name != NULL; atp++) {
 			if (vcc_IdIs(at, atp->name)) {
@@ -194,6 +253,7 @@
 			}
 		}
 	}
+	vcc_NextToken(tl);
 	switch (at->tok) {
 	case T_NO_NEW_CACHE:
 		Fb(tl, 1, "VCL_no_new_cache(sp);\n");
@@ -201,40 +261,11 @@
 	case T_NO_CACHE:
 		Fb(tl, 1, "VCL_no_cache(sp);\n");
 		return;
-#define VCL_RET_MAC(a,b,c,d) case T_##b: \
-		Fb(tl, 1, "VRT_done(sp, VCL_RET_%s);\n", #b); \
-		vcc_ProcAction(tl->curproc, d, at); \
-		return;
-#include "vcl_returns.h"
-#undef VCL_RET_MAC
-	case T_ERROR:
-		if (tl->t->tok == CNUM)
-			a = vcc_UintVal(tl);
-		else
-			a = 0;
-		Fb(tl, 1, "VRT_error(sp, %u", a);
-		if (tl->t->tok == CSTR) {
-			Fb(tl, 0, ", %.*s", PF(tl->t));
-			vcc_NextToken(tl);
-		} else {
-			Fb(tl, 0, ", (const char *)0");
-		}
-		Fb(tl, 0, ");\n");
-		Fb(tl, 1, "VRT_done(sp, VCL_RET_ERROR);\n");
-		return;
 	case T_SWITCH_CONFIG:
 		ExpectErr(tl, ID);
 		Fb(tl, 1, "VCL_switch_config(\"%.*s\");\n", PF(tl->t));
 		vcc_NextToken(tl);
 		return;
-	case T_CALL:
-		ExpectErr(tl, ID);
-		vcc_AddCall(tl, tl->t);
-		vcc_AddRef(tl, tl->t, R_FUNC);
-		Fb(tl, 1, "if (VGC_function_%.*s(sp))\n", PF(tl->t));
-		Fb(tl, 1, "\treturn (1);\n");
-		vcc_NextToken(tl);
-		return;
 	case T_REWRITE:
 		ExpectErr(tl, CSTR);
 		Fb(tl, 1, "VCL_rewrite(%.*s", PF(tl->t));

Modified: trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c	2007-04-01 08:48:08 UTC (rev 1297)
+++ trunk/varnish-cache/lib/libvcl/vcc_fixed_token.c	2007-04-01 09:07:44 UTC (rev 1298)
@@ -173,33 +173,7 @@
 			return (T_BACKEND);
 		}
 		return (0);
-	case 'c':
-		if (p[0] == 'c' && p[1] == 'a' && p[2] == 'l' && 
-		    p[3] == 'l' && !isvar(p[4])) {
-			*q = p + 4;
-			return (T_CALL);
-		}
-		return (0);
-	case 'd':
-		if (p[0] == 'd' && p[1] == 'i' && p[2] == 's' && 
-		    p[3] == 'c' && p[4] == 'a' && p[5] == 'r' && 
-		    p[6] == 'd' && !isvar(p[7])) {
-			*q = p + 7;
-			return (T_DISCARD);
-		}
-		if (p[0] == 'd' && p[1] == 'e' && p[2] == 'l' && 
-		    p[3] == 'i' && p[4] == 'v' && p[5] == 'e' && 
-		    p[6] == 'r' && !isvar(p[7])) {
-			*q = p + 7;
-			return (T_DELIVER);
-		}
-		return (0);
 	case 'e':
-		if (p[0] == 'e' && p[1] == 'r' && p[2] == 'r' && 
-		    p[3] == 'o' && p[4] == 'r' && !isvar(p[5])) {
-			*q = p + 5;
-			return (T_ERROR);
-		}
 		if (p[0] == 'e' && p[1] == 'l' && p[2] == 's' && 
 		    p[3] == 'i' && p[4] == 'f' && !isvar(p[5])) {
 			*q = p + 5;
@@ -223,26 +197,8 @@
 			*q = p + 4;
 			return (T_FUNC);
 		}
-		if (p[0] == 'f' && p[1] == 'e' && p[2] == 't' && 
-		    p[3] == 'c' && p[4] == 'h' && !isvar(p[5])) {
-			*q = p + 5;
-			return (T_FETCH);
-		}
 		return (0);
-	case 'h':
-		if (p[0] == 'h' && p[1] == 'a' && p[2] == 's' && 
-		    p[3] == 'h' && !isvar(p[4])) {
-			*q = p + 4;
-			return (T_HASH);
-		}
-		return (0);
 	case 'i':
-		if (p[0] == 'i' && p[1] == 'n' && p[2] == 's' && 
-		    p[3] == 'e' && p[4] == 'r' && p[5] == 't'
-		     && !isvar(p[6])) {
-			*q = p + 6;
-			return (T_INSERT);
-		}
 		if (p[0] == 'i' && p[1] == 'n' && p[2] == 'c' && 
 		    p[3] == 'l' && p[4] == 'u' && p[5] == 'd' && 
 		    p[6] == 'e' && !isvar(p[7])) {
@@ -254,14 +210,6 @@
 			return (T_IF);
 		}
 		return (0);
-	case 'l':
-		if (p[0] == 'l' && p[1] == 'o' && p[2] == 'o' && 
-		    p[3] == 'k' && p[4] == 'u' && p[5] == 'p'
-		     && !isvar(p[6])) {
-			*q = p + 6;
-			return (T_LOOKUP);
-		}
-		return (0);
 	case 'n':
 		if (p[0] == 'n' && p[1] == 'o' && p[2] == '_' && 
 		    p[3] == 'n' && p[4] == 'e' && p[5] == 'w' && 
@@ -284,16 +232,6 @@
 			*q = p + 4;
 			return (T_PROC);
 		}
-		if (p[0] == 'p' && p[1] == 'i' && p[2] == 'p' && 
-		    p[3] == 'e' && !isvar(p[4])) {
-			*q = p + 4;
-			return (T_PIPE);
-		}
-		if (p[0] == 'p' && p[1] == 'a' && p[2] == 's' && 
-		    p[3] == 's' && !isvar(p[4])) {
-			*q = p + 4;
-			return (T_PASS);
-		}
 		return (0);
 	case 'r':
 		if (p[0] == 'r' && p[1] == 'e' && p[2] == 'w' && 
@@ -382,36 +320,26 @@
 	vcl_tnames[METHOD] = "METHOD";
 	vcl_tnames[T_ACL] = "acl";
 	vcl_tnames[T_BACKEND] = "backend";
-	vcl_tnames[T_CALL] = "call";
 	vcl_tnames[T_CAND] = "&&";
 	vcl_tnames[T_COR] = "||";
 	vcl_tnames[T_DEC] = "--";
 	vcl_tnames[T_DECR] = "-=";
-	vcl_tnames[T_DELIVER] = "deliver";
-	vcl_tnames[T_DISCARD] = "discard";
 	vcl_tnames[T_DIV] = "/=";
 	vcl_tnames[T_ELSE] = "else";
 	vcl_tnames[T_ELSEIF] = "elseif";
 	vcl_tnames[T_ELSIF] = "elsif";
 	vcl_tnames[T_EQ] = "==";
-	vcl_tnames[T_ERROR] = "error";
-	vcl_tnames[T_FETCH] = "fetch";
 	vcl_tnames[T_FUNC] = "func";
 	vcl_tnames[T_GEQ] = ">=";
-	vcl_tnames[T_HASH] = "hash";
 	vcl_tnames[T_IF] = "if";
 	vcl_tnames[T_INC] = "++";
 	vcl_tnames[T_INCLUDE] = "include";
 	vcl_tnames[T_INCR] = "+=";
-	vcl_tnames[T_INSERT] = "insert";
 	vcl_tnames[T_LEQ] = "<=";
-	vcl_tnames[T_LOOKUP] = "lookup";
 	vcl_tnames[T_MUL] = "*=";
 	vcl_tnames[T_NEQ] = "!=";
 	vcl_tnames[T_NO_CACHE] = "no_cache";
 	vcl_tnames[T_NO_NEW_CACHE] = "no_new_cache";
-	vcl_tnames[T_PASS] = "pass";
-	vcl_tnames[T_PIPE] = "pipe";
 	vcl_tnames[T_PROC] = "proc";
 	vcl_tnames[T_REWRITE] = "rewrite";
 	vcl_tnames[T_SHL] = "<<";

Modified: trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl	2007-04-01 08:48:08 UTC (rev 1297)
+++ trunk/varnish-cache/lib/libvcl/vcc_gen_fixed_token.tcl	2007-04-01 09:07:44 UTC (rev 1298)
@@ -71,7 +71,6 @@
 
 	backend
 
-	call
 	no_cache
 	no_new_cache
 	rewrite
@@ -234,7 +233,6 @@
 }
 
 foreach k $keywords { mk_token $k $k 1 }
-foreach k $returns { mk_token $k $k 1 }
 foreach k $magic { mk_token [lindex $k 1] [lindex $k 0] 0 }
 foreach k $extras {
 	set t [string toupper $k]

Modified: trunk/varnish-cache/lib/libvcl/vcc_token_defs.h
===================================================================
--- trunk/varnish-cache/lib/libvcl/vcc_token_defs.h	2007-04-01 08:48:08 UTC (rev 1297)
+++ trunk/varnish-cache/lib/libvcl/vcc_token_defs.h	2007-04-01 09:07:44 UTC (rev 1298)
@@ -17,37 +17,27 @@
 #define T_SUB 135
 #define T_ACL 136
 #define T_BACKEND 137
-#define T_CALL 138
-#define T_NO_CACHE 139
-#define T_NO_NEW_CACHE 140
-#define T_REWRITE 141
-#define T_SWITCH_CONFIG 142
-#define T_ERROR 143
-#define T_LOOKUP 144
-#define T_HASH 145
-#define T_PIPE 146
-#define T_PASS 147
-#define T_FETCH 148
-#define T_INSERT 149
-#define T_DELIVER 150
-#define T_DISCARD 151
-#define T_INC 152
-#define T_DEC 153
-#define T_CAND 154
-#define T_COR 155
-#define T_LEQ 156
-#define T_EQ 157
-#define T_NEQ 158
-#define T_GEQ 159
-#define T_SHR 160
-#define T_SHL 161
-#define T_INCR 162
-#define T_DECR 163
-#define T_MUL 164
-#define T_DIV 165
-#define ID 166
-#define VAR 167
-#define CNUM 168
-#define CSTR 169
-#define EOI 170
-#define METHOD 171
+#define T_NO_CACHE 138
+#define T_NO_NEW_CACHE 139
+#define T_REWRITE 140
+#define T_SWITCH_CONFIG 141
+#define T_INC 142
+#define T_DEC 143
+#define T_CAND 144
+#define T_COR 145
+#define T_LEQ 146
+#define T_EQ 147
+#define T_NEQ 148
+#define T_GEQ 149
+#define T_SHR 150
+#define T_SHL 151
+#define T_INCR 152
+#define T_DECR 153
+#define T_MUL 154
+#define T_DIV 155
+#define ID 156
+#define VAR 157
+#define CNUM 158
+#define CSTR 159
+#define EOI 160
+#define METHOD 161




More information about the varnish-commit mailing list