Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix xbt_fifo_foreach
[simgrid.git] / include / xbt / misc.h
index a3062a1..a0620ab 100644 (file)
@@ -1,6 +1,6 @@
 /* xbt.h - Public interface to the xbt (simgrid's toolbox)                     */
 
-/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2004-2014. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
  *     DLL space.
  */
 
-
 /* Build the DLL */
 #if defined(DLL_EXPORT)
-#  define XBT_PUBLIC(type)            __declspec(dllexport) type
+#  define XBT_PUBLIC(type)            extern __declspec(dllexport) type
 #  define XBT_EXPORT_NO_IMPORT(type)  __declspec(dllexport) type
 #  define XBT_IMPORT_NO_EXPORT(type)  type
-#  define XBT_PUBLIC_DATA(type)        __declspec(dllexport) type
+#  define XBT_PUBLIC_DATA(type)       extern __declspec(dllexport) type
+#  define XBT_PUBLIC_CLASS            class __declspec(dllexport)
+
 
 /* Pack everything up statically */
 #elif defined(DLL_STATIC)
-#  define XBT_PUBLIC(type)           extern type
+#  define XBT_PUBLIC(type)            extern type
 #  define XBT_EXPORT_NO_IMPORT(type)  type
 #  define XBT_IMPORT_NO_EXPORT(type)  type
 #  define XBT_PUBLIC_DATA(type)       extern type
+#  define XBT_PUBLIC_CLASS            class
+
 
 /* Link against the DLL */
 #elif (defined(_XBT_WIN32) && !defined(DLL_EXPORT) && !defined(DLL_STATIC))
-#  define XBT_PUBLIC(type)              __declspec(dllimport) type
-#  define XBT_EXPORT_NO_IMPORT(type)    type
-#  define XBT_IMPORT_NO_EXPORT(type)    __declspec(dllimport) type
-#  define XBT_PUBLIC_DATA(type)    __declspec(dllimport) type
+#  define XBT_PUBLIC(type)            extern __declspec(dllimport) type
+#  define XBT_EXPORT_NO_IMPORT(type)  type
+#  define XBT_IMPORT_NO_EXPORT(type)  __declspec(dllimport) type
+#  define XBT_PUBLIC_DATA(type)       extern __declspec(dllimport) type
+#  define XBT_PUBLIC_CLASS            class __declspec(dllimport)
+
 
 /* UNIX build */
 #else
 #  define XBT_EXPORT_NO_IMPORT(type)  type
 #  define XBT_IMPORT_NO_EXPORT(type)  type
 #  define XBT_PUBLIC_DATA(type)       extern type
+#  define XBT_PUBLIC_CLASS            class
+
 #endif
 
 #if !defined (max) && !defined(__cplusplus)
 
 SG_BEGIN_DECL()
 
+/** Cache the size of a memory page for the current system. */
+XBT_PUBLIC_DATA(int) xbt_pagesize;
+
+/** Cache the number of bits of addresses inside a given page, log2(xbt_pagesize). */
+ XBT_PUBLIC_DATA(int) xbt_pagebits;
+
 XBT_PUBLIC(const char *) xbt_procname(void);
 
 #define XBT_BACKTRACE_SIZE 10   /* FIXME: better place? Do document */