]> git.sur5r.net Git - cc65/blobdiff - src/cc65/loop.c
Fixed _textcolor definition.
[cc65] / src / cc65 / loop.c
index ec51dc951050bef86aa2701214c0d1bf8a4abb5c..c15c37a7965bbbba81fcea0faf116fadc797eff1 100644 (file)
-/*
- * loop.c
- *
- * Ullrich von Bassewitz, 20.06.1998
- */
+/*****************************************************************************/
+/*                                                                           */
+/*                                  loop.c                                   */
+/*                                                                           */
+/*                              Loop management                              */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 1998-2004 Ullrich von Bassewitz                                       */
+/*               Römerstraße 52                                              */
+/*               D-70794 Filderstadt                                         */
+/* EMail:        uz@cc65.org                                                 */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
 
 
 
+/* common */
+#include "check.h"
+#include "xmalloc.h"
+
+/* cc65 */
 #include "error.h"
-#include "mem.h"
-#include "loop.h"
+#include "loop.h" 
+#include "stackptr.h"
 
 
 
 /*****************************************************************************/
-/*                                  data                                    */
+/*                                   Data                                    */
 /*****************************************************************************/
 
 
 
 /* The root */
-static struct loopdesc* loopstack = 0;
+static LoopDesc* LoopStack = 0;
 
 
 
 /*****************************************************************************/
-/*                                  code                                    */
+/*                                   Code                                    */
 /*****************************************************************************/
 
 
 
-struct loopdesc* addloop (unsigned sp, unsigned loop, unsigned label,
-                         unsigned linc, unsigned lstat)
-/* Create and add a new loop descriptor */
+LoopDesc* AddLoop (unsigned BreakLabel, unsigned ContinueLabel)
+/* Create and add a new loop descriptor. */
 {
-    struct loopdesc* l;
-
     /* Allocate a new struct */
-    l = xmalloc (sizeof (struct loopdesc));
+    LoopDesc* L = xmalloc (sizeof (LoopDesc));
 
     /* Fill in the data */
-    l->sp              = sp;
-    l->loop            = loop;
-    l->label           = label;
-    l->linc            = linc;
-    l->lstat           = lstat;
+    L->StackPtr         = StackPtr;
+    L->BreakLabel       = BreakLabel;
+    L->ContinueLabel    = ContinueLabel;
 
     /* Insert it into the list */
-    l->next = loopstack;
-    loopstack = l;
+    L->Next = LoopStack;
+    LoopStack = L;
 
     /* Return a pointer to the struct */
-    return l;
+    return L;
 }
 
 
 
-struct loopdesc* currentloop (void)
+LoopDesc* CurrentLoop (void)
 /* Return a pointer to the descriptor of the current loop */
 {
-    if (loopstack == 0) {
-       /* Stack is empty */
-       Error (ERR_NO_ACTIVE_LOOP);
-    }
-    return loopstack;
+    return LoopStack;
 }
 
 
 
-void delloop (void)
+void DelLoop (void)
 /* Remove the current loop */
 {
-    struct loopdesc* l;
-
-    l = loopstack;
-    loopstack = loopstack->next;
-    xfree (l);
+    LoopDesc* L = LoopStack;
+    CHECK (L != 0);
+    LoopStack = LoopStack->Next;
+    xfree (L);
 }
-
-
-