]> git.sur5r.net Git - cc65/commitdiff
Removed the flags and optimized the Attr structure.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 10 Mar 2012 22:10:45 +0000 (22:10 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 10 Mar 2012 22:10:45 +0000 (22:10 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@5596 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/sp65/attr.c
src/sp65/attr.h

index 8f9b11d74c76a715367066e546907b30c8dc7256..8f0ddeaeda17f5cb2e77056bdcfa309f6dbb6e91 100644 (file)
 
 
 
-static int IsNumber (const char* Value)
-/* Check if Value is an integer number */
-{
-    if (*Value == '-' || *Value == '+') {
-        ++Value;
-    }
-    while (IsDigit (*Value)) {
-        ++Value;
-    }
-    return (*Value == '\0');
-}
-
-
-
 Attr* NewAttr (const char* Name, const char* Value)
 /* Create a new attribute */
 {
-    /* Determine the length of Value */
-    unsigned Len = strlen (Value);
+    /* Determine the string lengths */
+    unsigned NameLen  = strlen (Name);
+    unsigned ValueLen = strlen (Value);
 
     /* Allocate memory */
-    Attr* A = xmalloc (sizeof (Attr) + Len);
+    Attr* A = xmalloc (sizeof (Attr) + ValueLen + NameLen + 1);
 
     /* Initialize the fields */
-    A->Flags = IsNumber (Value)? afInt : afNone;
-    A->Name  = xstrdup (Name);
-    memcpy (A->Value, Value, Len + 1);
+    A->Name = A->Value + ValueLen + 1;
+    memcpy (A->Value, Value, ValueLen + 1);
+    memcpy (A->Name, Name, NameLen + 1);
 
     /* Return the new struct */
     return A;
@@ -90,11 +77,7 @@ Attr* NewAttr (const char* Name, const char* Value)
 void FreeAttr (Attr* A)
 /* Free an attribute structure */
 {
-    /* Allow NULL pointers */
-    if (A) {
-        xfree (A->Name);
-        xfree (A);
-    }
+    xfree (A);
 }
 
 
@@ -309,7 +292,7 @@ Collection* ParseAttrList (const char* List, const char** NameList, unsigned Nam
 
 
 void FreeAttrList (Collection* C)
-/* Free a list of attributes */  
+/* Free a list of attributes */
 {
     unsigned I;
 
index d7df963d77ff0b9d2615f110445e663053de41b3..9a4f834fb161bd6e7c2518d560faf32ab034a19a 100644 (file)
 
 
 
-/* Attribute flags */
-enum AttrFlags {
-    afNone,
-    afInt,                              /* Integer number */
-};
-typedef enum AttrFlags AttrFlags;
-
-/* */
+/* Attribute structure */
 typedef struct Attr Attr;
 struct Attr {
-    AttrFlags   Flags;                  /* Attribute flags */
-    char*       Name;                   /* Attribute name */
-    char        Value[1];               /* Attribute value */
+    char*       Name;           /* Attribute name - points into Value */
+    char        Value[1];       /* Attribute value followed by Name */
 };