]> Shamusworld >> Repos - rmac/blobdiff - macro.c
Removed -w flag, added +o[n], ~o[n] switches to control individual optimisations...
[rmac] / macro.c
diff --git a/macro.c b/macro.c
index 6e9fd864af4eb370c0ba8f03b00ee4b774d7becf..0807e74b033f38080fd0ceb2ad4b21bcf3c00f4a 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -3,7 +3,7 @@
 // MACRO.C - Macro Definition and Invocation
 // Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
-// Source Utilised with the Kind Permission of Landon Dyer
+// Source utilised with the kind permission of Landon Dyer
 //
 
 #include "macro.h"
@@ -34,26 +34,26 @@ static int rptlevel;                                                // .rept nesting level
 
 
 //
-// Initialize Macro Processor
+// Initialize macro processor
 //
 void InitMacro(void)
 {
        macuniq = 0;
        macnum = 1;
-//     argp = NULL;
        argp = 0;
 }
 
 
 //
-// Exit from a Macro;
+// Exit from a macro;
 // -- pop any intervening include files and repeat blocks;
 // -- restore argument stack;
 // -- pop the macro.
 //
 int ExitMacro(void)
 {
-#warning !!! Bad macro exiting !!!
+WARNING(!!! Bad macro exiting !!!)
+
 /*
 This is a problem. Currently, the argument logic just keeps the current
 arguments and doesn't save anything if a new macro is called in the middle
@@ -80,13 +80,12 @@ of another (nested macros). Need to fix that somehow.
        argp -= imacro->im_nargs;
        DEBUG printf("%d (nargs = %d)\n", argp, imacro->im_nargs);
 
-       fpop();
-       return 0;
+       return fpop();
 }
 
 
 //
-// Add a Formal Argument to a Macro Definition
+// Add a formal argument to a macro definition
 //
 int defmac2(char * argname)
 {
@@ -110,8 +109,8 @@ int defmac2(char * argname)
 //
 int defmac1(char * ln, int notEndFlag)
 {
-       PTR p;
-       LONG len;
+//     PTR p;
+//     LONG len;
 
        if (list_flag)
        {
@@ -248,7 +247,7 @@ int defr1(char * ln, int kwno)
                rptlevel++;
        default:
 //MORE stupidity here...
-#warning "!!! Casting (char *) as LONG !!!"
+WARNING(!!! Casting (char *) as LONG !!!)
        addln:
                // Allocate length of line + 1('\0') + LONG
                len = strlen(ln) + 1 + sizeof(LONG);
@@ -448,7 +447,7 @@ int InvokeMacro(SYM * mac, WORD siz)
        TOKEN * dest;
        int stringNum = 0;
        int argumentNum = 0;
-       int i;
+//     int i;
 
        for(dry_run=1; ; dry_run--)
        {
@@ -552,12 +551,13 @@ int InvokeMacro(SYM * mac, WORD siz)
 Shamus:
 This construct is meant to deal with nested macros, so the simple minded way
 we deal with them now won't work. :-/ Have to think about how to fix.
-What we could do is simply move the argp with each call, and move it back by the
-number of arguments in the macro that's ending. That would solve the problem nicely.
+What we could do is simply move the argp with each call, and move it back by
+the number of arguments in the macro that's ending. That would solve the
+problem nicely.
 [Which we do now. But that uncovered another problem: the token strings are all
-stale by the time a nested macro gets to the end. But they're supposed to be symbols,
-which means if we put symbol references into the argument token streams, we can
-alleviate this problem.]
+stale by the time a nested macro gets to the end. But they're supposed to be
+symbols, which means if we put symbol references into the argument token
+streams, we can alleviate this problem.]
 */
 #if 0
                        argptr = (TOKEN **)malloc((nargs + 1) * sizeof(LONG));