Modified by:
Created: Sat Nov 13 19:35:27 CET 2004
CVS-ID: $Id$
- Copyright: (c) 1999-2004 Universität Karlsruhe
+ Copyright: (c) 1999-2004 Universit�t Karlsruhe
Licence: This file is protected by the GPL - GNU GENERAL PUBLIC LICENSE.
*/
# include "pto_name.h"
# include "pto_util.h"
+#include <assert.h>
+
+#ifdef HAVE_STRING_H
# include <string.h> /* for memcpy */
+#endif
# include <obstack.h>
# include <errno.h>
# include "xmalloc.h"
# include "pto_debug.h"
+# include "gnu_ext.h"
/* Local Defines: */
# define obstack_chunk_alloc xmalloc
/* See whether the given entity is a field. */
static int is_field (entity *ent)
{
- type *tp = get_entity_type (ent);
+ ir_type *tp = get_entity_type (ent);
- if (is_primitive_type (tp) || is_pointer_type (tp)) {
+ if (is_Primitive_type (tp) || is_Pointer_type (tp)) {
/* actually, we don't get by by restricting ourselves to pointer types */
return (TRUE);
} else {
}
}
-/* Helper to collect_fields(type*): collect all fields of the given
+/* Helper to collect_fields(ir_type*): collect all fields of the given
clazz and its super classes into the given obstack. */
-static void _collect_fields (type *clazz, struct obstack *obst)
+static void _collect_fields (ir_type *clazz, struct obstack *obst)
{
int n_members = get_class_n_members (clazz);
int n_supers = get_class_n_supertypes (clazz);
}
for (i = 0; i < n_supers; i ++) {
- type *s_clazz = get_class_supertype (clazz, i);
+ ir_type *s_clazz = get_class_supertype (clazz, i);
_collect_fields (s_clazz, obst);
}
/* Collect the fields of the given class and its super classes into an array.
The last entry of the array is written NULL. */
-static entity **collect_fields (type *clazz)
+static entity **collect_fields (ir_type *clazz)
{
struct obstack obst;
int n_fields;
void *tmp;
if (NULL != get_type_link (clazz)) {
- DBGPRINT (3, (stdout, "collect_fields(): reusing field list for \"%s\"\n",
+ DBGPRINT (3, (stdout, "%s: reusing field list for \"%s\"\n",
+ __FUNCTION__,
get_type_name (clazz)));
return ((entity **) get_type_link (clazz));
} else {
- DBGPRINT (2, (stdout, "collect_fields(): new field list for \"%s\"\n",
+ DBGPRINT (2, (stdout, "%s: new field list for \"%s\"\n",
+ __FUNCTION__,
get_type_name (clazz)));
}
n_fields = obstack_object_size (&obst) / sizeof (void*);
- fields = NALLOC(n_fields * sizeof(*fields));
+ fields = NALLOC (n_fields * sizeof (entity*));
tmp = obstack_finish(&obst);
- memcpy (fields, tmp, n_fields * sizeof(*fields));
+ memcpy (fields, tmp, n_fields * sizeof (entity*));
obstack_free (&obst, NULL);
/* Write a node for the given descriptor into the given stream */
static void pto_name_dump_desc (desc_t *desc, FILE *stream)
{
- type *tp = desc->tp;
+ ir_type *tp = desc->tp;
const char *tp_name = get_type_name (tp);
ir_node *nd;
for (i = 0; i < obj_desc->n_fields; i ++) {
entity *field = obj_desc->fields [i];
- if (is_pointer_type (get_entity_type (field))) {
+ if (is_Pointer_type (get_entity_type (field))) {
const char *ent_name = get_entity_name (field);
fprintf (stream, "|<%i>%s", i, ent_name);
return (arr_desc->value);
} else {
assert (0 && "invalid descriptor");
- return NULL;
}
+ return NULL;
}
/* get a new descriptor for the given type at the given node */
-desc_t *new_name (type *tp, ir_node *node, int ctx)
+desc_t *new_name (ir_type *tp, ir_node *node, int ctx)
{
desc_t *desc = NULL;
- assert ((is_class_type (tp) || is_array_type (tp)) && "unsuitable type");
+ assert ((is_Class_type (tp) || is_Array_type (tp)) && "unsuitable type");
- DBGPRINT (2, (stdout, "new_name(): new name for type \"%s\"\n",
+ DBGPRINT (2, (stdout, "%s: new name for type \"%s\"\n",
+ __FUNCTION__,
get_type_name (tp)));
fflush (stdout);
- if (is_class_type (tp)) {
- obj_desc_t *obj_desc = NALLOC(sizeof(*obj_desc));
+ if (is_Class_type (tp)) {
+ obj_desc_t *obj_desc = NALLOC (sizeof (obj_desc_t));
int i;
int n_fields;
}
obj_desc->n_fields = n_fields;
- obj_desc->values = (qset_t**) NALLOC (n_fields * sizeof (qset_t));
+ obj_desc->values = (qset_t**) NALLOC (n_fields * sizeof (qset_t*));
for (i = 0; i < n_fields; i ++) {
obj_desc->values [i] = qset_new (N_INITIAL_OJBS, qset_obst);
}
desc = (desc_t*) obj_desc;
- } else if (is_array_type (tp)) {
+ } else if (is_Array_type (tp)) {
arr_desc_t *arr_desc = (arr_desc_t*) NALLOC (sizeof (arr_desc_t));
arr_desc->kind = array;
{
int i;
int missing = TRUE;
- type *tp = get_entity_type (ent);
+ ir_type *tp = get_entity_type (ent);
- assert (is_pointer_type (tp));
+ assert (is_Pointer_type (tp));
tp = get_pointer_points_to_type (tp);
- assert (is_class_type (tp));
+ assert (is_Class_type (tp));
- DBGPRINT (2, (stdout, "new_ent_name(): new name for entity \"%s\"\n",
+ DBGPRINT (2, (stdout, "%s: new name for entity \"%s\"\n",
+ __FUNCTION__,
get_entity_name (ent)));
DBGEXE (2, (fflush (stdout)));
errno = 0;
if (NULL == stream) {
- fprintf (stderr, "pto_dump_names(): unable to open %s (%s)\n",
- name, strerror (errno));
+ fprintf (stderr, "%s: unable to open %s (%s)\n",
+ __FUNCTION__, name, strerror (errno));
return;
}
/* Initialise the name module */
void pto_name_init (void)
{
- DBGPRINT (3, (stdout, "(%s:%i) pto_name_init()\n", __FILE__, __LINE__));
+ DBGPRINT (3, (stdout, "%s\n", __FUNCTION__));
assert (NULL == name_obst);
assert (NULL == qset_obst);
- name_obst = xmalloc (sizeof(*name_obst));
- qset_obst = xmalloc (sizeof(*qset_obst));
+ name_obst = xmalloc (sizeof (struct obstack));
+ qset_obst = xmalloc (sizeof (struct obstack));
obstack_init (name_obst);
obstack_init (qset_obst);
/* Cleanup the name module */
void pto_name_cleanup (void)
{
- DBGPRINT (3, (stdout, "(%s:%i) pto_name_cleanup()\n", __FILE__, __LINE__));
+ DBGPRINT (3, (stdout, "%s\n", __FUNCTION__));
obstack_free (name_obst, NULL);
obstack_free (qset_obst, NULL);
\f
/*
$Log$
+ Revision 1.18 2006/01/13 22:56:21 beck
+ renamed all types 'type' to 'ir_type'
+
+ Revision 1.17 2005/12/16 16:59:54 grund
+ *** empty log message ***
+
+ Revision 1.16 2005/12/05 12:19:54 beck
+ added missing include <assert.h> (not anymore included in libFirm)
+
+ Revision 1.15 2005/03/02 10:14:38 beck
+ placed a return on all execution pathes
+
+ Revision 1.14 2005/02/17 08:45:38 liekweg
+ Don't return a value for an invalid descriptor
+
+ Revision 1.13 2005/02/11 10:21:28 beck
+ get_entry now always returns a value
+
+ Revision 1.12 2005/01/14 14:13:56 liekweg
+ fix gnu extension, fix fprintf's, fix allocs
+
+ Revision 1.11 2005/01/05 14:25:54 beck
+ renames all is_x*_type() functions to is_X*_type() to prevent name clash with EDG fronten
+
Revision 1.10 2004/12/22 14:43:14 beck
made allocations C-like