Navigation Menu

Skip to content

Commit

Permalink
Moved conversion from wxString to std::string to function to catch al…
Browse files Browse the repository at this point in the history
…l these conversion in one location
  • Loading branch information
SaltyPaws committed Aug 12, 2014
1 parent 0b9cf6a commit f4e1dd5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
16 changes: 11 additions & 5 deletions src/calculatorgui_impl.cpp
Expand Up @@ -537,15 +537,15 @@ wxString Dlg::OnCalculate( void )
printf("Input: %s\n",(const char*) Text.mb_str() );
#endif // DEBUG

MuParser.SetExpr(static_cast<const char*>(Text.mb_str())); //Typecast to mu::stringtype
MuParser.SetExpr(WxString2StdString(Text)); //Typecast to mu::stringtype
double Muparser_result=0;
try
{
Muparser_result = MuParser.Eval();//Get the result
mystring=wxT("ans=")+double2wxT(Muparser_result);//set ans string (borrow the mystring);
mystring.Replace(wxT(","),wxT("."),TRUE);
// mystring.Replace(wxT(","),wxT("."),TRUE);//dont think this is required when not using locale --->test
// MuParser.SetExpr((mu::string_type) mystring.mb_str()); //This works in linux, but causes compiler error in windows
MuParser.SetExpr(static_cast<const char*>(mystring.mb_str())); //Store the answer in ans
MuParser.SetExpr(WxString2StdString(mystring));//Store the answer in ans
mystring=Report_Value(Muparser_result,m_iCalc_Reporting);//Format result as per setting.
Muparser_result = MuParser.Eval();//Evaluate for ans

Expand Down Expand Up @@ -704,11 +704,13 @@ wxString Dlg::Report_Value(double in_Value, int in_mode){
//printf("Humanise\n");
try{
Temp_String=wxT("log10(abs(")+double2wxT(in_Value)+wxT("))/3");
MuParser.SetExpr(static_cast<const char*>(Temp_String.mb_str()));
MuParser.SetExpr(WxString2StdString(Temp_String));
human_magnitude=(int) MuParser.Eval();
if (in_Value<1) {human_magnitude--;}
Temp_String=double2wxT(in_Value)+wxT("*10^(-3*")+double2wxT((double)human_magnitude)+wxT(")");
MuParser.SetExpr(static_cast<const char*>(Temp_String.mb_str()));

// MuParser.SetExpr(static_cast<const char*>(Temp_String.mb_str()));
MuParser.SetExpr(WxString2StdString(Temp_String));
result=MuParser.Eval();
if (in_Value==0) {human_magnitude=0;}
switch(human_magnitude){
Expand Down Expand Up @@ -777,3 +779,7 @@ void Dlg::OnHistoryPulldown ( wxCommandEvent& event ){
//ItemText=ItemText.BeforeFirst(' ');
this->m_result->AppendText(Selected_Result);
}

std::string Dlg::WxString2StdString(wxString wxString_in){
return std::string(wxString_in.mb_str());
}
1 change: 1 addition & 0 deletions src/calculatorgui_impl.h
Expand Up @@ -115,6 +115,7 @@ class Dlg : public DlgDef
void OnHistoryPulldown ( wxCommandEvent& event );
void down(void);
void up (void);
std::string WxString2StdString(wxString wxString_in);

calculator_pi *plugin;

Expand Down

1 comment on commit f4e1dd5

@rgleason
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compiling with MSVC++ for Windows fails miserably
See the Opencpn forum threads please.

http://www.cruisersforum.com/forums/f134/calculator_pi-new-finished-plugin-for-opencpn-86028-6.html#post1593948

http://willkamp.com/opencpn/flyspray/index.php?do=details&task_id=1459&project=23

Reason: cannot convert from 'std::string' to 'const mu::string_type'
No user-defined-conversion operator available that can perform this co
nversion, or the operator cannot be called
Done Building Project "C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\bu
ild\calculator_pi.vcxproj" (default targets) -- FAILED.
Done Building Project "C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\bu
ild\ALL_BUILD.vcxproj" (default targets) -- FAILED.

Build FAILED.

"C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\ALL_BUILD.vcxproj"
(default target) (1) ->
"C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxp
roj" (default target) (3) ->
(ClCompile target) ->
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\tchar.h(2388):
warning C4005: '_T' : macro redefinition [C:\Data-Dart\Up-Soft\Navigation\o-plug
in\calculator_pi\build\calculator_pi.vcxproj]
..\src\calculatorgui_impl.cpp(469): warning C4800: 'wxChoice *' : forcing valu
e to bool 'true' or 'false' (performance warning) [C:\Data-Dart\Up-Soft\Navigati
on\o-plugin\calculator_pi\build\calculator_pi.vcxproj]

"C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\ALL_BUILD.vcxproj"
(default target) (1) ->
"C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxp
roj" (default target) (3) ->
(ClCompile target) ->
..\src\calculatorgui_impl.cpp(338): error C2664: 'mu::ParserBase::DefineConst'
: cannot convert parameter 1 from 'const char [3]' to 'const mu::string_type &'
[C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcx
proj]
..\src\calculatorgui_impl.cpp(339): error C2664: 'mu::ParserBase::DefineConst'
: cannot convert parameter 1 from 'const char [2]' to 'const mu::string_type &'
[C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcx
proj]
..\src\calculatorgui_impl.cpp(340): error C2664: 'mu::ParserBase::DefineConst'
: cannot convert parameter 1 from 'const char [4]' to 'const mu::string_type &'
[C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcx
proj]
..\src\calculatorgui_impl.cpp(341): error C2664: 'mu::ParserBase::SetVarFactor
y' : cannot convert parameter 1 from 'mu::value_type *(__cdecl *)(const char *,v
oid *)' to 'mu::facfun_type' [C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculato
r_pi\build\calculator_pi.vcxproj]
..\src\calculatorgui_impl.cpp(549): error C2664: 'mu::ParserBase::SetExpr' : c
annot convert parameter 1 from 'std::string' to 'const mu::string_type &' [C:\Da
ta-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxproj]
..\src\calculatorgui_impl.cpp(557): error C2664: 'mu::ParserBase::SetExpr' : c
annot convert parameter 1 from 'std::string' to 'const mu::string_type &' [C:\Da
ta-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxproj]
..\src\calculatorgui_impl.cpp(716): error C2664: 'mu::ParserBase::SetExpr' : c
annot convert parameter 1 from 'std::string' to 'const mu::string_type &' [C:\Da
ta-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxproj]
..\src\calculatorgui_impl.cpp(722): error C2664: 'mu::ParserBase::SetExpr' : c
annot convert parameter 1 from 'std::string' to 'const mu::string_type &' [C:\Da
ta-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build\calculator_pi.vcxproj]

2 Warning(s)
8 Error(s)

Time Elapsed 00:00:03.57

C:\Data-Dart\Up-Soft\Navigation\o-plugin\calculator_pi\build>

Please sign in to comment.