Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[xbt] Remove C++ std::is_trivial verification for xtd_new
authorGabriel Corona <gabriel.corona@loria.fr>
Mon, 7 Dec 2015 12:31:47 +0000 (13:31 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Mon, 7 Dec 2015 12:46:59 +0000 (13:46 +0100)
It doesn't work for some versions of compiler. Moreover, it does not
work very well with volatile fields which make the struct non-trivial
in C++.

include/xbt/sysdep.h

index 4e407ab..0d09d8a 100644 (file)
 #ifndef _XBT_SYSDEP_H
 #define _XBT_SYSDEP_H
 
-#ifdef __cplusplus
-#include <type_traits>
-#endif
-
 #include "xbt/log.h"
 #include "xbt/misc.h"
 #include "xbt/asserts.h"
@@ -148,42 +144,11 @@ XBT_PUBLIC(void) xbt_free_ref(void *d);
 
 SG_END_DECL()
 
-/** @brief like calloc, but xbt_die() on error and don't memset to 0
-    @hideinitializer */
-#ifndef __cplusplus
-
 #define xbt_new(type, count)  ((type*)xbt_malloc (sizeof (type) * (count)))
 /** @brief like calloc, but xbt_die() on error
     @hideinitializer */
 #define xbt_new0(type, count) ((type*)xbt_malloc0 (sizeof (type) * (count)))
 
-#else
-
-/** C++ wrapper for xtb_new
- *
- *  This ensures that we do not xbt_new things that need a constructor.
- */
-template<typename T> inline
-T* xbt_new_(size_t count)
-{
-  static_assert(std::is_trivial<T>(),
-    "Cannot xbt_new this type");
-  return (T*) xbt_malloc(sizeof(T) * count);
-}
-
-template<typename T> inline
-T* xbt_new0_(size_t count)
-{
-  static_assert(std::is_trivial<T>(),
-    "Cannot xbt_new0 this type");
-  return (T*) xbt_malloc0(sizeof(T) * count);
-}
-
-#define xbt_new(type, count)  ::xbt_new_<type>(count)
-#define xbt_new0(type, count) ::xbt_new0_<type>(count)
-
-#endif
-
 /** @} */
 
 #endif                          /* _XBT_SYSDEP_H */