From ca73116a03a429b7010abdc86f611d44203a01f8 Mon Sep 17 00:00:00 2001 From: uz Date: Tue, 4 Aug 2009 19:12:34 +0000 Subject: [PATCH] New function IsLocalLabelName. git-svn-id: svn://svn.cc65.org/cc65/trunk@3992 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/asmlabel.c | 43 ++++++++++++++++++++++++++++++++++++++----- src/cc65/asmlabel.h | 11 +++++++---- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/cc65/asmlabel.c b/src/cc65/asmlabel.c index 3587fefbb..6ae60b1f4 100644 --- a/src/cc65/asmlabel.c +++ b/src/cc65/asmlabel.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000-2001 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2000-2009 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -34,9 +34,14 @@ #include +#include + +/* common */ +#include "chartype.h" /* cc65 */ #include "asmlabel.h" +#include "error.h" @@ -51,6 +56,13 @@ unsigned GetLocalLabel (void) { /* Number to generate unique labels */ static unsigned NextLabel = 0; + + /* Check for an overflow */ + if (NextLabel > 0xFFFF) { + Internal ("Local label overflow"); + } + + /* Return the next label */ return ++NextLabel; } @@ -61,7 +73,7 @@ const char* LocalLabelName (unsigned L) * created in static storage and overwritten when calling the function * again. */ -{ +{ static char Buf[64]; sprintf (Buf, "L%04X", L); return Buf; @@ -69,3 +81,24 @@ const char* LocalLabelName (unsigned L) +int IsLocalLabelName (const char* Name) +/* Return true if Name is the name of a local label */ +{ + unsigned I; + + if (Name[0] != 'L' || strlen (Name) != 5) { + return 0; + } + for (I = 1; I <= 5; ++I) { + if (!IsXDigit (Name[I])) { + return 0; + } + } + + /* Local label name */ + return 1; +} + + + + diff --git a/src/cc65/asmlabel.h b/src/cc65/asmlabel.h index 71002d017..316eb51af 100644 --- a/src/cc65/asmlabel.h +++ b/src/cc65/asmlabel.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2000-2009 Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -53,6 +53,9 @@ const char* LocalLabelName (unsigned L); * again. */ +int IsLocalLabelName (const char* Name); +/* Return true if Name is the name of a local label */ + /* End of asmlabel.h */