1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-05 21:29:03 +00:00

New function IsLocalLabelName.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3992 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-08-04 19:12:34 +00:00
parent 3d95c9453f
commit ca73116a03
2 changed files with 45 additions and 9 deletions

View File

@ -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 <stdio.h>
#include <string.h>
/* 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;
}

View File

@ -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 */