/* */
/* */
/* */
-/* (C) 2003 Ullrich von Bassewitz */
-/* Römerstraße 52 */
-/* D-70794 Filderstadt */
-/* EMail: uz@cc65.org */
+/* (C) 2003-2009, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
/* common */
#include "addrsize.h"
+#include "strutil.h"
}
-
+
+unsigned char AddrSizeFromStr (const char* Str)
+/* Return the address size for a given string. Returns ADDR_SIZE_INVALID if
+ * the string cannot be mapped to an address size.
+ */
+{
+ static const struct {
+ const char* Name;
+ unsigned char AddrSize;
+ } AddrSizeTable[] = {
+ { "abs", ADDR_SIZE_ABS },
+ { "absolute", ADDR_SIZE_ABS },
+ { "default", ADDR_SIZE_DEFAULT },
+ { "direct", ADDR_SIZE_ZP },
+ { "dword", ADDR_SIZE_LONG },
+ { "far", ADDR_SIZE_FAR },
+ { "long", ADDR_SIZE_LONG },
+ { "near", ADDR_SIZE_ABS },
+ { "zeropage", ADDR_SIZE_ZP },
+ { "zp", ADDR_SIZE_ZP },
+ };
+ unsigned I;
+
+ for (I = 0; I < sizeof (AddrSizeTable) / sizeof (AddrSizeTable[0]); ++I) {
+ if (StrCaseCmp (Str, AddrSizeTable[I].Name) == 0) {
+ /* Found */
+ return AddrSizeTable[I].AddrSize;
+ }
+ }
+
+ /* Not found */
+ return ADDR_SIZE_INVALID;
+}
+
+
+
/* */
/* */
/* */
-/* (C) 2003 Ullrich von Bassewitz */
-/* Römerstraße 52 */
-/* D-70794 Filderstadt */
-/* EMail: uz@cc65.org */
+/* (C) 2003-2009, Ullrich von Bassewitz */
+/* Roemerstrasse 52 */
+/* D-70794 Filderstadt */
+/* EMail: uz@cc65.org */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
/*****************************************************************************/
-/* Data */
+/* Data */
/*****************************************************************************/
+#define ADDR_SIZE_INVALID 0xFF
#define ADDR_SIZE_DEFAULT 0x00
#define ADDR_SIZE_ZP 0x01
#define ADDR_SIZE_ABS 0x02
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
const char* AddrSizeToStr (unsigned char AddrSize);
/* Return the name for an address size specifier */
+unsigned char AddrSizeFromStr (const char* Str);
+/* Return the address size for a given string. Returns ADDR_SIZE_INVALID if
+ * the string cannot be mapped to an address size.
+ */
+
/* End of addrsize.h */