Added math library that was created by hoangtuansu

This commit is contained in:
Daniel Marjamäki 2009-04-06 18:27:14 +02:00
parent 51d97fa831
commit f0d870c52d
3 changed files with 116 additions and 1 deletions

View File

@ -20,6 +20,7 @@ OBJECTS = src/checkautovariables.o \
src/errorlogger.o \ src/errorlogger.o \
src/filelister.o \ src/filelister.o \
src/main.o \ src/main.o \
src/mathlib.o \
src/preprocessor.o \ src/preprocessor.o \
src/settings.o \ src/settings.o \
src/threadexecutor.o \ src/threadexecutor.o \
@ -65,6 +66,7 @@ TESTOBJ = test/testautovariables.o \
src/cppcheckexecutor.o \ src/cppcheckexecutor.o \
src/errorlogger.o \ src/errorlogger.o \
src/filelister.o \ src/filelister.o \
src/mathlib.o \
src/preprocessor.o \ src/preprocessor.o \
src/settings.o \ src/settings.o \
src/threadexecutor.o \ src/threadexecutor.o \
@ -148,7 +150,10 @@ src/filelister.o: src/filelister.cpp src/filelister.h
src/main.o: src/main.cpp src/cppcheckexecutor.h src/errorlogger.h src/settings.h src/main.o: src/main.cpp src/cppcheckexecutor.h src/errorlogger.h src/settings.h
$(CXX) $(CXXFLAGS) -c -o src/main.o src/main.cpp $(CXX) $(CXXFLAGS) -c -o src/main.o src/main.cpp
src/preprocessor.o: src/preprocessor.cpp src/preprocessor.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h src/mathlib.o: src/mathlib.cpp
$(CXX) $(CXXFLAGS) -c -o src/mathlib.o src/mathlib.cpp
src/preprocessor.o: src/preprocessor.cpp src/preprocessor.h src/errorlogger.h src/settings.h src/tokenize.h src/token.h
$(CXX) $(CXXFLAGS) -c -o src/preprocessor.o src/preprocessor.cpp $(CXX) $(CXXFLAGS) -c -o src/preprocessor.o src/preprocessor.cpp
src/settings.o: src/settings.cpp src/settings.h src/settings.o: src/settings.cpp src/settings.h

90
src/mathlib.cpp Normal file
View File

@ -0,0 +1,90 @@
#include "mathLib.h"
#include <fstream>
#include <string>
#include <cstring>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cmath>
double MathLib::ToNumber(const std::string &str)
{
return atof(str.c_str());
}
std::string MathLib::ToString(double d)
{
std::ostringstream result;
result<<d;
return result.str();
}
std::string MathLib::add(const std::string & first, const std::string & second)
{
return ToString(ToNumber(first) + ToNumber(second));
}
std::string MathLib::substract(const std::string &first, const std::string &second)
{
return ToString(ToNumber(first) - ToNumber(second));
}
std::string MathLib::divide(const std::string &first, const std::string &second)
{
return ToString(ToNumber(first) / ToNumber(second));
}
std::string MathLib::multiply(const std::string &first, const std::string &second)
{
return ToString(ToNumber(first) * ToNumber(second));
}
std::string MathLib::sin(const std::string &tok)
{
return ToString(::sin(ToNumber(tok)));
}
std::string MathLib::cos(const std::string &tok)
{
return ToString(::cos(ToNumber(tok)));
}
std::string MathLib::tan(const std::string &tok)
{
return ToString(::tan(ToNumber(tok)));
}
std::string MathLib::abs(const std::string &tok)
{
return ToString(::abs(ToNumber(tok)));
}
bool MathLib::IsGreater(const std::string &first, const std::string &second)
{
return ToNumber(first) > ToNumber(second);
}
bool MathLib::IsEqual(const std::string &first, const std::string &second)
{
return ToNumber(first) == ToNumber(second);
}
bool MathLib::IsLess(const std::string &first, const std::string &second)
{
return ToNumber(first) < ToNumber(second);
}
int MathLib::compare(const std::string &first, const std::string &second)
{
if(ToNumber(first) < ToNumber(second))
return -1;
if(ToNumber(first) == ToNumber(second))
return 0;
return 1;
}

20
src/mathlib.h Normal file
View File

@ -0,0 +1,20 @@
#include "token.h"
class MathLib
{
private:
static double ToNumber(const std::string & str);
static std::string ToString(double d);
public:
static std::string add(const std::string & first, const std::string & second);
static std::string substract(const std::string & first, const std::string & second);
static std::string multiply(const std::string & first, const std::string & second);
static std::string divide(const std::string & first, const std::string & second);
static std::string sin(const std::string & tok);
static std::string cos(const std::string & tok);
static std::string tan(const std::string & tok);
static std::string abs(const std::string & tok);
static bool IsGreater (const std::string & first, const std::string & second);
static bool IsEqual (const std::string & first, const std::string & second);
static bool IsLess (const std::string & first, const std::string & second);
static int compare(const std::string & first, const std::string & second);
};