removed entity_visited flag - use type_visited instead
[libfirm] / ir / ident / ident.c
index 623a208..2ca2933 100644 (file)
@@ -2,6 +2,8 @@
    Copyright (C) 1995, 1996 Markus Armbruster
    All rights reserved. */
 
+/* $Id$ */
+
 #ifdef HAVE_CONFIG_H
 # include <config.h>
 #endif
 #include <string.h>
 #include "array.h"
 #include "tune.h"
-#include "ident.h"
+#include "ident_t.h"
 #include "xprintf.h"
 
 #define XX_USER(name) ident *id_##name;
 #define XX_INTERNAL(name, str) XX_USER(name)
-#include "xx_ident.h"
 #undef XX_USER
 #undef XX_INTERNAL
 
@@ -91,7 +92,53 @@ id_init (void)
 
 #define XX_USER(name) id_##name = ID_FROM_STR(#name, sizeof(#name)- 1);
 #define XX_INTERNAL(name, str) id_##name = ID_FROM_STR((str), sizeof((str))-1);
-#include "xx_ident.h"
 #undef XX_USER
 #undef XX_INTERNAL
 }
+
+
+#if 1
+INLINE ident *id_from_str (const char *str, int len) {
+  assert (len > 0);
+  return  (const set_entry *) set_hinsert (id_set,
+                                          (str),
+                                          (len),
+                                          ID_HASH ((str), (len)));
+}
+
+INLINE const char *id_to_str   (ident *id) {
+  return ((const char *)&(id)->dptr[0]);
+}
+
+INLINE int id_to_strlen(ident *id) {
+  return ((id)->size);
+}
+#endif
+
+int id_is_prefix (ident *prefix, ident *id) {
+  if (id_to_strlen(prefix) > id_to_strlen(id)) return 0;
+  if (0 == memcmp(&(prefix->dptr[0]), &(id->dptr[0]), id_to_strlen(prefix)))
+    return 1;
+  return 0;
+}
+
+int id_is_suffix (ident *suffix, ident *id) {
+  int suflen = id_to_strlen(suffix);
+  int idlen = id_to_strlen(id);
+  char *part;
+  if (suflen > idlen) return 0;
+
+  part = (char *) &id->dptr[0];
+  part = part + (idlen - suflen);
+  if (0 == memcmp(&(suffix->dptr[0]), part, suflen))
+    return 1;
+  return 0;
+}
+
+int print_id (ident *id) {
+  xprintf("%I", id);
+}
+
+int fprint_id (FILE *F, ident *id) {
+  xfprintf(F, "%I", id);
+}