Add type checks in gd::String::From/To

(to avoid use with wxString, std::string and sf::String)
This commit is contained in:
Victor Levasseur
2015-07-22 17:20:43 +02:00
parent 0ff167cc06
commit 01190e0c11
2 changed files with 16 additions and 4 deletions

View File

@@ -246,6 +246,12 @@ public:
template<typename T>
static String From(T value)
{
static_assert(!std::is_same<T, std::string>::value, "Can't use gd::String::From with std::string.");
static_assert(!std::is_same<T, sf::String>::value, "Can't use gd::String::From with sf::String.");
#if defined(GD_IDE_ONLY) && !defined(GD_NO_WX_GUI)
static_assert(!std::is_same<T, wxString>::value, "Can't use gd::String::From with wxString.");
#endif
std::ostringstream oss;
oss << value;
return gd::String(oss.str().c_str());
@@ -258,6 +264,12 @@ public:
template<typename T>
T To() const
{
static_assert(!std::is_same<T, std::string>::value, "Can't use gd::String::To with std::string.");
static_assert(!std::is_same<T, sf::String>::value, "Can't use gd::String::To with sf::String.");
#if defined(GD_IDE_ONLY) && !defined(GD_NO_WX_GUI)
static_assert(!std::is_same<T, wxString>::value, "Can't use gd::String::To with wxString.");
#endif
T value;
std::istringstream oss(m_string);
oss >> value;

View File

@@ -198,10 +198,10 @@ void SoundObjectEditor::OnValidateButtonClick(wxCommandEvent& event)
else
object.SetSoundType("Music");
object.SetVolume(gd::String::From(VolumeSpinCtrl->GetValue()).To<float>());
object.SetAttenuation(gd::String::From(AttenuationSpinCtrl->GetValue()).To<float>());
object.SetPitch(gd::String::From(pitchTextCtrl->GetValue()).To<float>());
object.SetMinDistance(gd::String::From(MinDistanceSpinCtrl->GetValue()).To<float>());
object.SetVolume(VolumeSpinCtrl->GetValue());
object.SetAttenuation(gd::String(AttenuationSpinCtrl->GetValue()).To<float>());
object.SetPitch(gd::String(pitchTextCtrl->GetValue()).To<float>());
object.SetMinDistance(MinDistanceSpinCtrl->GetValue());
object.SetLooping(LoopCheckBox->IsChecked());
object.SetSoundFileName(FileNameTextCtrl->GetValue());