Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'mc' into mc++
[simgrid.git] / src / include / mc / datatypes.h
index 028a891..2c4f48d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008-2013. The SimGrid Team.
+/* Copyright (c) 2008-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -6,10 +6,14 @@
 
 #ifndef MC_DATATYPE_H
 #define MC_DATATYPE_H
+
+#define UNW_LOCAL_ONLY
+
 #include "xbt/misc.h"
 #include "xbt/swag.h"
 #include "xbt/fifo.h"
 
+#include <libunwind.h>
 #include <dwarf.h>
 
 SG_BEGIN_DECL()
@@ -39,23 +43,31 @@ typedef struct s_stack_region{
 void heap_ignore_region_free(mc_heap_ignore_region_t r);
 void heap_ignore_region_free_voidp(void *r);
 
+/************ Object info *************/
+
+typedef struct s_mc_object_info s_mc_object_info_t, *mc_object_info_t;
+
 /************ DWARF structures *************/
 
 typedef int e_dw_type_type;
 
-typedef struct s_dw_type{
+typedef struct s_dw_type s_dw_type_t, *dw_type_t;
+
+struct s_dw_type{
   e_dw_type_type type;
   void *id; /* Offset in the section (in hexadecimal form) */
   char *name; /* Name of the type */
   int byte_size; /* Size in bytes */
   int element_count; /* Number of elements for array type */
   char *dw_type_id; /* DW_AT_type */
-  xbt_dynar_t members; /* if DW_TAG_structure_type, DW_TAG_union_type*/
+  xbt_dynar_t members; /* if DW_TAG_structure_type, DW_TAG_class_type, DW_TAG_union_type*/
   int is_pointer_type;
   int offset;
-}s_dw_type_t, *dw_type_t;
+  dw_type_t subtype;
+  dw_type_t other_object_same_type; // The same (but more complete) type in the other object.
+};
 
-char* get_type_description(xbt_dict_t types, char *type_name);
+char* get_type_description(mc_object_info_t info, char *type_name);
 
 SG_END_DECL()
 #endif                          /* _MC_MC_H */