3 #ifndef JEC_Utilities_hpp 4 #define JEC_Utilities_hpp 20 __attribute__((noreturn)) void
handleError(const
std::
string& fClass, const
std::
string& fMessage)
22 std::stringstream sserr;
23 sserr<<fClass<<
" ERROR: "<<fMessage;
24 throw std::runtime_error(sserr.str());
27 inline float getFloat(
const std::string& token)
30 float result = strtod (token.c_str(), &endptr);
31 if (endptr == token.c_str())
33 std::stringstream sserr;
34 sserr<<
"can't convert token "<<token<<
" to float value";
43 unsigned result = strtoul (token.c_str(), &endptr, 0);
44 if (endptr == token.c_str())
46 std::stringstream sserr;
47 sserr<<
"can't convert token "<<token<<
" to unsigned value";
55 size_t iFirst = token.find (
'[');
56 size_t iLast = token.find (
']');
57 if (iFirst != std::string::npos && iLast != std::string::npos && iFirst < iLast)
58 return std::string (token, iFirst+1, iLast-iFirst-1);
62 inline std::vector<std::string>
getTokens(
const std::string& fLine)
64 std::vector<std::string> tokens;
65 std::string currentToken;
66 for (
unsigned ipos = 0; ipos < fLine.length (); ++ipos)
72 if (!currentToken.empty())
74 tokens.push_back(currentToken);
81 if (!currentToken.empty()) tokens.push_back(currentToken);
87 size_t iFirst = token.find (
'{');
88 size_t iLast = token.find (
'}');
89 if (iFirst != std::string::npos && iLast != std::string::npos && iFirst < iLast)
90 return std::string (token, iFirst+1, iLast-iFirst-1);
99 D[0] = fX[0]*fX[1]*(fX[0]-fX[1])+fX[1]*fX[2]*(fX[1]-fX[2])+fX[2]*fX[0]*(fX[2]-fX[0]);
100 D[3] = fY[0]*(fX[1]-fX[2])+fY[1]*(fX[2]-fX[0])+fY[2]*(fX[0]-fX[1]);
101 D[2] = fY[0]*(pow(fX[2],2)-pow(fX[1],2))+fY[1]*(pow(fX[0],2)-pow(fX[2],2))+fY[2]*(pow(fX[1],2)-pow(fX[0],2));
102 D[1] = fY[0]*fX[1]*fX[2]*(fX[1]-fX[2])+fY[1]*fX[0]*fX[2]*(fX[2]-fX[0])+fY[2]*fX[0]*fX[1]*(fX[0]-fX[1]);
115 float r = a[0]+fZ*(a[1]+fZ*a[2]);
void handleError(const std::string &fClass, const std::string &fMessage)
unsigned getUnsigned(const std::string &token)
std::string getSection(const std::string &token)
float getFloat(const std::string &token)
std::vector< std::string > getTokens(const std::string &fLine)
std::string getDefinitions(const std::string &token)
float quadraticInterpolation(float fZ, const float fX[3], const float fY[3])