]> git.sur5r.net Git - cc65/commitdiff
Added SegDef struct and a few functions to the segdefs module
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 28 Nov 2002 17:34:16 +0000 (17:34 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 28 Nov 2002 17:34:16 +0000 (17:34 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1668 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/make/gcc.mak
src/common/make/watcom.mak
src/common/segdefs.c [new file with mode: 0644]
src/common/segdefs.h

index 24dec8946ac7476d9b5248cd35d7602bcea839cd..beec9ebd1e6332f69832a8249f134357f6f53258 100644 (file)
@@ -21,6 +21,7 @@ OBJS =        abend.o         \
        hashstr.o       \
         matchpat.o      \
        print.o         \
+        segdefs.o       \
        strbuf.o        \
        strutil.o       \
        target.o        \
index e72d7cec1cb82fd9ad8c4fb2ee01d40200b34eb7..ce59f72d55eb923ec4521cde839aa9a4290b832c 100644 (file)
@@ -77,6 +77,7 @@ OBJS =        abend.obj       \
        hashstr.obj     \
         matchpat.obj    \
        print.obj       \
+        segdefs.obj     \
        strbuf.obj      \
        strutil.obj     \
        target.obj      \
diff --git a/src/common/segdefs.c b/src/common/segdefs.c
new file mode 100644 (file)
index 0000000..907fccb
--- /dev/null
@@ -0,0 +1,106 @@
+/*****************************************************************************/
+/*                                                                           */
+/*                                segdefs.c                                 */
+/*                                                                           */
+/*             Segment definitions for the bin65 binary utils               */
+/*                                                                           */
+/*                                                                           */
+/*                                                                           */
+/* (C) 2002      Ullrich von Bassewitz                                       */
+/*               Wacholderweg 14                                             */
+/*               D-70597 Stuttgart                                           */
+/* EMail:        uz@musoftware.de                                            */
+/*                                                                           */
+/*                                                                           */
+/* This software is provided 'as-is', without any expressed or implied       */
+/* warranty.  In no event will the authors be held liable for any damages    */
+/* arising from the use of this software.                                    */
+/*                                                                           */
+/* Permission is granted to anyone to use this software for any purpose,     */
+/* including commercial applications, and to alter it and redistribute it    */
+/* freely, subject to the following restrictions:                            */
+/*                                                                           */
+/* 1. The origin of this software must not be misrepresented; you must not   */
+/*    claim that you wrote the original software. If you use this software   */
+/*    in a product, an acknowledgment in the product documentation would be  */
+/*    appreciated but is not required.                                       */
+/* 2. Altered source versions must be plainly marked as such, and must not   */
+/*    be misrepresented as being the original software.                      */
+/* 3. This notice may not be removed or altered from any source              */
+/*    distribution.                                                          */
+/*                                                                           */
+/*****************************************************************************/
+
+
+
+#include <string.h>
+
+/* common */
+#include "chartype.h"
+#include "xmalloc.h"
+#include "segdefs.h"
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+SegDef* NewSegDef (const char* Name, unsigned Type)
+/* Create a new segment definition and return it */
+{
+    /* Allocate memory */
+    SegDef* D = xmalloc (sizeof (SegDef));
+
+    /* Initialize it */
+    if (D) {
+        D->Name = xstrdup (Name);
+        D->Type = Type;
+    }
+
+    /* Return the result */
+    return D;
+}
+
+
+
+void FreeSegDef (SegDef* D)
+/* Free a segment definition */
+{
+    xfree (D->Name);
+    xfree (D);
+}
+
+
+
+SegDef* DupSegDef (const SegDef* Def)
+/* Duplicate a segment definition and return it */
+{
+    return NewSegDef (Def->Name, Def->Type);
+}
+
+
+
+int ValidSegName (const char* Name)
+/* Return true if the given segment name is valid, return false otherwise */
+{
+    /* Must start with '_' or a letter */
+    if ((*Name != '_' && !IsAlpha(*Name)) || strlen(Name) > 80) {
+               return 0;
+    }
+
+    /* Can have letters, digits or the underline */
+    while (*++Name) {
+               if (*Name != '_' && !IsAlNum(*Name)) {
+                   return 0;
+               }
+    }
+
+    /* Name is ok */
+    return 1;
+}
+
+
+
index 0a0b8c0655da077cb10398616a212109d65401a6..9fe2f0d2b3d59e5a254765f88d0fc7bebf477727 100644 (file)
@@ -6,7 +6,7 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2000 Ullrich von Bassewitz                                       */
+/* (C) 1998-2002 Ullrich von Bassewitz                                       */
 /*               Wacholderweg 14                                             */
 /*               D-70597 Stuttgart                                           */
 /* EMail:        uz@musoftware.de                                            */
 #define FRAG_FILL              0x20            /* Fill bytes */
 
 
+
+/* Segment definition */
+typedef struct SegDef SegDef;
+struct SegDef {
+    const char* Name;           /* Segment name */
+    unsigned    Type;           /* Segment type, see above */
+};
+
+/* Initializer for static SegDefs */
+#define STATIC_SEGDEF_INITIALIZER(name, type) { (name), (type) }
+
+
+
+/*****************************************************************************/
+/*                                          Code                                    */
+/*****************************************************************************/
+
+
+
+SegDef* NewSegDef (const char* Name, unsigned Type);
+/* Create a new segment definition and return it */
+
+void FreeSegDef (SegDef* D);
+/* Free a segment definition */
+
+SegDef* DupSegDef (const SegDef* D);
+/* Duplicate a segment definition and return it */
+
+int ValidSegName (const char* Name);
+/* Return true if the given segment name is valid, return false otherwise */
+
+
+
 /* End of segdefs.h */
 
 #endif