X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Floop.c;h=f2925e0cb0614debac98da719cb374b166f6e278;hb=9b7c16ec4cbb5282642c377272224e3fc825f860;hp=b8e8b61fe43dce45f0c8164c372f1941389c175b;hpb=aa8737733fe51d2941f434c10ca028ac5ab2986c;p=cc65 diff --git a/src/cc65/loop.c b/src/cc65/loop.c index b8e8b61fe..f2925e0cb 100644 --- a/src/cc65/loop.c +++ b/src/cc65/loop.c @@ -1,81 +1,102 @@ -/* - * 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. */ +/* */ +/*****************************************************************************/ -#include "../common/xmalloc.h" +/* common */ +#include "check.h" +#include "xmalloc.h" +/* cc65 */ #include "error.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); }