Add support for scietific notation flag for MessageBox

This commit is contained in:
James Carty 2018-08-12 22:45:03 +01:00
parent 52d4e25314
commit 579f35511a
5 changed files with 21 additions and 9 deletions

View File

@ -557,7 +557,7 @@ namespace Compiler
mExplicit.clear(); mExplicit.clear();
} }
void GetArgumentsFromMessageFormat::visitedPlaceholder(Placeholder placeholder, char /*padding*/, int /*width*/, int /*precision*/) void GetArgumentsFromMessageFormat::visitedPlaceholder(Placeholder placeholder, char /*padding*/, int /*width*/, int /*precision*/, Notation /*notation*/)
{ {
switch (placeholder) switch (placeholder)
{ {

View File

@ -83,7 +83,7 @@ namespace Compiler
std::string mArguments; std::string mArguments;
protected: protected:
virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision); virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision, Notation notation);
virtual void visitedCharacter(char c) {} virtual void visitedCharacter(char c) {}
public: public:

View File

@ -24,7 +24,7 @@ namespace Interpreter
Runtime& mRuntime; Runtime& mRuntime;
protected: protected:
virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision) virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision, Notation notation)
{ {
std::ostringstream out; std::ostringstream out;
out.fill(padding); out.fill(padding);
@ -58,7 +58,11 @@ namespace Interpreter
float value = mRuntime[0].mFloat; float value = mRuntime[0].mFloat;
mRuntime.pop(); mRuntime.pop();
if (notation == FixedNotation)
out << std::fixed << value; out << std::fixed << value;
else
out << std::scientific << value;
mFormattedMessage += out.str(); mFormattedMessage += out.str();
} }
break; break;

View File

@ -49,11 +49,13 @@ namespace Misc
width = (widthSet) ? width : -1; width = (widthSet) ? width : -1;
if (m[i] == 'S' || m[i] == 's') if (m[i] == 'S' || m[i] == 's')
visitedPlaceholder(StringPlaceholder, pad, width, precision); visitedPlaceholder(StringPlaceholder, pad, width, precision, FixedNotation);
else if (m[i] == 'g' || m[i] == 'G') else if (m[i] == 'd' || m[i] == 'i')
visitedPlaceholder(IntegerPlaceholder, pad, width, precision); visitedPlaceholder(IntegerPlaceholder, pad, width, precision, FixedNotation);
else if (m[i] == 'f' || m[i] == 'F') else if (m[i] == 'f' || m[i] == 'F')
visitedPlaceholder(FloatPlaceholder, pad, width, precision); visitedPlaceholder(FloatPlaceholder, pad, width, precision, FixedNotation);
else if (m[i] == 'e' || m[i] == 'E')
visitedPlaceholder(FloatPlaceholder, pad, width, precision, ScientificNotation);
} }
} }
} }

View File

@ -15,7 +15,13 @@ namespace Misc
FloatPlaceholder FloatPlaceholder
}; };
virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision) = 0; enum Notation
{
FixedNotation,
ScientificNotation
};
virtual void visitedPlaceholder(Placeholder placeholder, char padding, int width, int precision, Notation notation) = 0;
virtual void visitedCharacter(char c) = 0; virtual void visitedCharacter(char c) = 0;
public: public: