]> git.sur5r.net Git - cc65/blobdiff - src/cc65/asmlabel.c
Fixed _textcolor definition.
[cc65] / src / cc65 / asmlabel.c
index a18cf1c76f53831436eead1520a013966d814c10..09aee3b927c4a5ee50eb93f24c69879066f83c95 100644 (file)
@@ -1,15 +1,15 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                               asmlabel.c                                 */
+/*                                asmlabel.c                                 */
 /*                                                                           */
-/*                     Generate assembler code labels                       */
+/*                      Generate assembler code labels                       */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (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;
+}