]> git.sur5r.net Git - cc65/commitdiff
New function IsLocalLabelName.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 4 Aug 2009 19:12:34 +0000 (19:12 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 4 Aug 2009 19:12:34 +0000 (19:12 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3992 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/asmlabel.c
src/cc65/asmlabel.h

index 3587fefbb2e9df6a70aaae2324f93c43a8fb949f..6ae60b1f42af8dcbcaad4c0c2228afd6f427ed5b 100644 (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       */
 
 
 #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;
+}
+
+
+
+
index 71002d017ce01d15f10d5904095e2f6c093f23b4..316eb51af3a81ce16398dfa9c80794d3abc3ce71 100644 (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 */