WIP: multi-pass
authorLukas Krickl <lukas@krickl.dev>
Tue, 28 Nov 2023 05:24:01 +0000 (06:24 +0100)
committerLukas Krickl <lukas@krickl.dev>
Tue, 28 Nov 2023 05:24:01 +0000 (06:24 +0100)
include/ulas.h
src/ulas.c

index ed38f4a99d60c685587528e91bf8ce87d9456399..dcf793f6f2809e7babcac17773cb072f6e510f34 100644 (file)
@@ -208,6 +208,10 @@ extern struct ulas ulas;
 
 int ulas_icntr(void);
 
+// init the next pass
+// by resetting some values
+void ulas_nextpass(void);
+
 /**
  * Preproc
  */
index b764ffc3e95e85c4e2896ba352727964cde4c84d..993a00a16cdb316768df6f6dfd2db5d1def41e92 100644 (file)
@@ -41,6 +41,10 @@ void ulas_init(struct ulas_config cfg) {
   ulas.syms = ulas_symbuf();
 }
 
+void ulas_nextpass(void) {
+  ulas.scope = 0;
+}
+
 void ulas_free(void) {
   ulas_strfree(&ulas.tok);
   ulas_tokbuffree(&ulas.toks);
@@ -906,6 +910,8 @@ int ulas_preproc(FILE *dst, FILE *src) {
   // init
   struct ulas_preproc pp = ulas_preprocinit();
 
+  ulas_nextpass();
+
   long prevseek = 0;
   // preproc
   while ((rc = ulas_preprocnext(&pp, dst, src, buf, ULAS_LINEMAX)) > 0) {