X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ad0cb80ebff7603232ec1621d9b6cfa1ea3471f6..4667db33a753d88cbcd186f191fb1e65f49f4bd6:/include/xbt/string.hpp diff --git a/include/xbt/string.hpp b/include/xbt/string.hpp index 30d6737a70..633162a1f2 100644 --- a/include/xbt/string.hpp +++ b/include/xbt/string.hpp @@ -7,7 +7,8 @@ #ifndef SIMGRIC_XBT_STRING_HPP #define SIMGRIC_XBT_STRING_HPP -#ifdef HAVE_MC +#include "src/internal_config.h" +#if HAVE_MC #include #include @@ -30,10 +31,21 @@ struct string_data { /** A std::string with well-known representation * - * This is a (incomplete) drop-in replacement for std::string. + * This is a (incomplete) drop-in replacement for `std::string`. + * It has a fixed POD representation (`simgrid::xbt::string_data`) + * which can be used to easily read the string content from another + * process. * - * This is used for cross-process access to strings - * (when the MC is enabled). + * The internal representation of a `std::string` is private. + * We could add some code to read this for a given implementation. + * However, even if we focus on GNU libstdc++ with Itanium ABI + * GNU libstdc++ currently has two different ABIs + * + * * the pre-C++11 is a pointer to a ref-counted + * string-representation (with support for COW); + * + * * the [C++11-conforming implementation](https://gcc.gnu.org/gcc-5/changes.html) + * does not use refcouting/COW but has a small string optimization. */ XBT_PUBLIC_CLASS string : private string_data { static const char NUL; @@ -285,4 +297,4 @@ typedef std::string string; #endif -#endif \ No newline at end of file +#endif