wxASSERT_MSG( type == typ, _T("type mismatch in wxCmdLineOption") );
}
+ double GetDoubleVal() const
+ { Check(wxCMD_LINE_VAL_DOUBLE); return m_doubleVal; }
long GetLongVal() const
{ Check(wxCMD_LINE_VAL_NUMBER); return m_longVal; }
const wxString& GetStrVal() const
{ Check(wxCMD_LINE_VAL_DATE); return m_dateVal; }
#endif // wxUSE_DATETIME
+ void SetDoubleVal(double val)
+ { Check(wxCMD_LINE_VAL_DOUBLE); m_doubleVal = val; m_hasVal = true; }
void SetLongVal(long val)
{ Check(wxCMD_LINE_VAL_NUMBER); m_longVal = val; m_hasVal = true; }
void SetStrVal(const wxString& val)
private:
bool m_hasVal;
+ double m_doubleVal;
long m_longVal;
wxString m_strVal;
#if wxUSE_DATETIME
m_data->m_enableLongOptions = enable;
}
-bool wxCmdLineParser::AreLongOptionsEnabled()
+bool wxCmdLineParser::AreLongOptionsEnabled() const
{
return m_data->m_enableLongOptions;
}
return true;
}
+bool wxCmdLineParser::Found(const wxString& name, double *value) const
+{
+ int i = m_data->FindOption(name);
+ if ( i == wxNOT_FOUND )
+ i = m_data->FindOptionByLongName(name);
+
+ wxCHECK_MSG( i != wxNOT_FOUND, false, _T("unknown option") );
+
+ wxCmdLineOption& opt = m_data->m_options[(size_t)i];
+ if ( !opt.HasValue() )
+ return false;
+
+ wxCHECK_MSG( value, false, _T("NULL pointer in wxCmdLineOption::Found") );
+
+ *value = opt.GetDoubleVal();
+
+ return true;
+}
+
#if wxUSE_DATETIME
bool wxCmdLineParser::Found(const wxString& name, wxDateTime *value) const
{
}
break;
+ case wxCMD_LINE_VAL_DOUBLE:
+ {
+ double val;
+ if ( value.ToDouble(&val) )
+ {
+ opt.SetDoubleVal(val);
+ }
+ else
+ {
+ errorMsg << wxString::Format(_("'%s' is not a correct numeric value for option '%s'."),
+ value.c_str(), name.c_str())
+ << _T('\n');
+
+ ok = false;
+ }
+ }
+ break;
+
#if wxUSE_DATETIME
case wxCMD_LINE_VAL_DATE:
{
wxDateTime dt;
- // FIXME-UTF8: ParseDate API will need changes
- const wxChar *res = dt.ParseDate(value.c_str());
+ const char *res = dt.ParseDate(value);
if ( !res || *res )
{
errorMsg << wxString::Format(_("Option '%s': '%s' cannot be converted to a date."),
// give the usage message
// ----------------------------------------------------------------------------
-void wxCmdLineParser::Usage()
+void wxCmdLineParser::Usage() const
{
wxMessageOutput* msgOut = wxMessageOutput::Get();
if ( msgOut )
}
}
-wxString wxCmdLineParser::GetUsageString()
+wxString wxCmdLineParser::GetUsageString() const
{
wxString appname;
if ( m_data->m_arguments.empty() )
s = _("num");
break;
+ case wxCMD_LINE_VAL_DOUBLE:
+ s = _("double");
+ break;
+
case wxCMD_LINE_VAL_DATE:
s = _("date");
break;