Use c_str() only when we need a terminating zero byte and data() when
we don't (as we already did in most cases). The two methods in fact
do the same thing as of C++11 (and in practice did for all C++98
implementations I'm aware of) but it's useful to make clear when we need
a terminating zero byte and when we don't, for example for adding
string_view support (string_view supports data(), but can't support
c_str() (since it could be a slice from the middle of a std::string).
std::wstring parameters on SWIG directors were being truncated to a single character due to marshalling inconsistencies.
This patch applies the same MarshalAs(UnmanagedType.LPWStr) attribute to director delegate methods and allows std::wstrings to be successfully received in the C# code via director calls.
Initial contributions for Linux provided in issue #1233, modified to work
on both Windows and Linux. Dual support is possible by detecting
the sizeof wchar_t which is different on each of these systems.
std::string::assign(PTR, LEN) rather than assigning
std::string(PTR, LEN). Using assign generates more efficient code
(tested with GCC 4.1.2).
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9936 626c5289-ae23-0410-ae9c-e8d60b6d4f22