]> git.sur5r.net Git - cc65/blobdiff - src/cc65/asmlabel.c
Fixed two compiler warnings.
[cc65] / src / cc65 / asmlabel.c
index a18cf1c76f53831436eead1520a013966d814c10..fe76f2b855b4d47952b4e99516bfb893d515eed9 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       */
 
 
 
+#include <stdio.h>
+#include <string.h>
+
+/* common */
+#include "chartype.h"
+
+/* cc65 */
 #include "asmlabel.h"
+#include "error.h"
 
 
 
 /*****************************************************************************/
-/*                                  Code                                    */
+/*                                  Code                                    */
 /*****************************************************************************/
 
 
 
-unsigned GetLabel (void)
+unsigned GetLocalLabel (void)
 /* Get an unused label. Will never return zero. */
 {
     /* 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;
 }
 
 
 
+const char* LocalLabelName (unsigned L)
+/* Make a label name from the given label number. The label name will be
+ * created in static storage and overwritten when calling the function
+ * again.
+ */
+{
+    static char Buf[64];
+    sprintf (Buf, "L%04X", L);
+    return Buf;
+}
+
+
+
+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 <= 4; ++I) {
+        if (!IsXDigit (Name[I])) {
+            return 0;
+        }
+    }
+
+    /* Local label name */
+    return 1;
+}
+
+
+
+