summaryrefslogtreecommitdiffstats
path: root/src/glsl/apps/process.c
diff options
context:
space:
mode:
authorMichal Krol <[email protected]>2009-06-17 13:49:06 +0200
committerMichal Krol <[email protected]>2009-09-07 10:11:43 +0200
commitf24322fbf6599b31f07ebc548e390c77b803d67c (patch)
treea550e9dd12bcceb9acc76bc677b645e4f1b21f17 /src/glsl/apps/process.c
parentf24ec185c531d2b2209df01901c90eca57ca711f (diff)
glsl: Introduce sl_pp_context and maintain a reuseable pool of strings.
Diffstat (limited to 'src/glsl/apps/process.c')
-rw-r--r--src/glsl/apps/process.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/glsl/apps/process.c b/src/glsl/apps/process.c
index 6e2828aa411..abcf1a92b83 100644
--- a/src/glsl/apps/process.c
+++ b/src/glsl/apps/process.c
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
+#include "../pp/sl_pp_context.h"
#include "../pp/sl_pp_purify.h"
#include "../pp/sl_pp_version.h"
#include "../pp/sl_pp_process.h"
@@ -42,6 +43,7 @@ main(int argc,
char *inbuf;
struct sl_pp_purify_options options;
char *outbuf;
+ struct sl_pp_context context;
struct sl_pp_token_info *tokens;
unsigned int version;
unsigned int tokens_eaten;
@@ -86,19 +88,24 @@ main(int argc,
free(inbuf);
- if (sl_pp_tokenise(outbuf, &tokens)) {
+ sl_pp_context_init(&context);
+
+ if (sl_pp_tokenise(&context, outbuf, &tokens)) {
+ sl_pp_context_destroy(&context);
free(outbuf);
return 1;
}
free(outbuf);
- if (sl_pp_version(tokens, &version, &tokens_eaten)) {
+ if (sl_pp_version(&context, tokens, &version, &tokens_eaten)) {
+ sl_pp_context_destroy(&context);
free(tokens);
return -1;
}
- if (sl_pp_process(&tokens[tokens_eaten], &outtokens)) {
+ if (sl_pp_process(&context, &tokens[tokens_eaten], &outtokens)) {
+ sl_pp_context_destroy(&context);
free(tokens);
return -1;
}
@@ -107,6 +114,7 @@ main(int argc,
out = fopen(argv[2], "wb");
if (!out) {
+ sl_pp_context_destroy(&context);
free(outtokens);
return 1;
}
@@ -298,13 +306,11 @@ main(int argc,
break;
case SL_PP_IDENTIFIER:
- fprintf(out, "%s ", outtokens[i].data.identifier);
- free(outtokens[i].data.identifier);
+ fprintf(out, "%s ", sl_pp_context_cstr(&context, outtokens[i].data.identifier));
break;
case SL_PP_NUMBER:
- fprintf(out, "(%s) ", outtokens[i].data.number);
- free(outtokens[i].data.number);
+ fprintf(out, "%s ", sl_pp_context_cstr(&context, outtokens[i].data.number));
break;
case SL_PP_OTHER:
@@ -316,6 +322,7 @@ main(int argc,
}
}
+ sl_pp_context_destroy(&context);
free(outtokens);
fclose(out);