bool BoutonGrade::init() { typeBouttons=BOUTTONS_APTITUDE_PERSONNAGE; string boutonGradePosX=configuration->getValeurParametre("BoutonGrade.posX"); string boutonGradePosY=configuration->getValeurParametre("BoutonGrade.posY"); posX = static_cast<int>(ceil(stringToFloat(boutonGradePosX)*application->resolution.first)); posY = static_cast<int>(ceil(stringToFloat(boutonGradePosY)*application->resolution.second)); return true; }
bool BoutonSupprimeArme1::init() { typeBouttons=BOUTTONS_MODIFICATIONS_ARME; string boutonSupprimeArme1PosX=configuration->getValeurParametre("BoutonSupprimeArme1.posX"); string boutonSupprimeArme1PosY=configuration->getValeurParametre("BoutonSupprimeArme1.posY"); posX = static_cast<int>(ceil(stringToFloat(boutonSupprimeArme1PosX)*application->resolution.first)); posY = static_cast<int>(ceil(stringToFloat(boutonSupprimeArme1PosY)*application->resolution.second)); return true; }
void handleSetFlywheelFloat(char const *request, FlywheelFloatAcceptor accept) { float value = stringToFloat(request); //printf("Debug String to float:\n"); //printf("Debug %s --> %f\n", request, value); accept(flywheel, value);//TODO check request }
float readFloatCLI(void) { uint8_t index = 0; uint8_t timeout = 0; char data[13] = ""; do { if (cliPortAvailable() == false) { delay(10); timeout++; } else { data[index] = cliPortRead(); timeout = 0; index++; } } while ((index == 0 || data[index-1] != ';') && (timeout < 5) && (index < sizeof(data)-1)); data[index] = '\0'; return stringToFloat(data); }
void XBeeReader::parseRun(String content, ThermoduinoListener* listener){ int firstComma = content.indexOf(","); int secondComma = content.indexOf(",", firstComma+1); int thirdComma = content.indexOf(",", secondComma+1); int forthComma = content.indexOf(",", thirdComma+1); int fifthComma = content.indexOf(",", forthComma+1); int id = content.substring(1,firstComma).toInt(); String type = content.substring(firstComma+1, secondComma); float temperature = stringToFloat(content.substring(secondComma+1, thirdComma)); float humidity = stringToFloat(content.substring(thirdComma+1, forthComma)); String name = content.substring(forthComma+1, fifthComma); listener->listen(id, temperature, humidity, name); }
void ArgList::setArgValue(const std::string & sName, const std::string & sValue) { ArgBasePtr pArg = getArg(sName); Arg<string>* pStringArg = dynamic_cast<Arg<string>* >(&*pArg); Arg<UTF8String>* pUTF8StringArg = dynamic_cast<Arg<UTF8String>* >(&*pArg); Arg<int>* pIntArg = dynamic_cast<Arg<int>* >(&*pArg); Arg<float>* pFloatArg = dynamic_cast<Arg<float>* >(&*pArg); Arg<bool>* pBoolArg = dynamic_cast<Arg<bool>* >(&*pArg); Arg<glm::vec2>* pVec2Arg = dynamic_cast<Arg<glm::vec2>* >(&*pArg); Arg<glm::vec3>* pVec3Arg = dynamic_cast<Arg<glm::vec3>* >(&*pArg); Arg<glm::ivec3>* pIVec3Arg = dynamic_cast<Arg<glm::ivec3>* >(&*pArg); Arg<vector<float> >* pFVectorArg = dynamic_cast<Arg<vector<float> >* >(&*pArg); Arg<vector<int> >* pIVectorArg = dynamic_cast<Arg<vector<int> >* >(&*pArg); Arg<vector<glm::vec2> >* pVec2VectorArg = dynamic_cast<Arg<vector<glm::vec2> >* >(&*pArg); Arg<vector<glm::ivec3> >* pIVec3VectorArg = dynamic_cast<Arg<vector<glm::ivec3> >* >(&*pArg); Arg<CollVec2Vector>* pCollVec2VectorArg = dynamic_cast<Arg<CollVec2Vector>* >(&*pArg); if (pStringArg) { pStringArg->setValue(sValue); } else if (pUTF8StringArg) { pUTF8StringArg->setValue(sValue); } else if (pIntArg) { pIntArg->setValue(stringToInt(sValue)); } else if (pFloatArg) { pFloatArg->setValue(stringToFloat(sValue)); } else if (pBoolArg) { pBoolArg->setValue(stringToBool(sValue)); } else if (pVec2Arg) { pVec2Arg->setValue(stringToVec2(sValue)); } else if (pVec3Arg) { pVec3Arg->setValue(stringToVec3(sValue)); } else if (pIVec3Arg) { pIVec3Arg->setValue(stringToIVec3(sValue)); } else if (pFVectorArg) { vector<float> v; fromString(sValue, v); pFVectorArg->setValue(v); } else if (pIVectorArg) { vector<int> v; fromString(sValue, v); pIVectorArg->setValue(v); } else if (pVec2VectorArg) { vector<glm::vec2> v; fromString(sValue, v); pVec2VectorArg->setValue(v); } else if (pIVec3VectorArg) { vector<glm::ivec3> v; fromString(sValue, v); pIVec3VectorArg->setValue(v); } else if (pCollVec2VectorArg) { CollVec2Vector v; fromString(sValue, v); pCollVec2VectorArg->setValue(v); } else { AVG_ASSERT(false); } }
/** * @brief Returns the float contents of an an xml tag given its name or path within the xml * @note It can handle nested tags using the character '/'. For example, "Parent/Child" will return an element called Child * that is nested into an element called Parent. * This would be in the xml: * <Parent> * <Child>5.0<Child/> * <Parent/> * @param name Name or path (in the xml) of the xml tag to find * @param defValue Value returned in case the tag is not found. En error log will be output */ float XMLSettings::get( const std::string& name, float defValue ) { Cing::XMLElement elem = get( name ); if ( !elem.isValid() ) { LOG_ERROR( "XMLSettings: %s not found [float], default value %f", name.c_str(), defValue ); return defValue; } return stringToFloat( elem.getContent() ); }
int main(){ char palabras[FIL][COL]; float numeros[FIL], suma; cargar(palabras); stringToFloat(numeros, palabras); suma = sumar(numeros); printf("La suma total de los valores ingresados es %.2f", suma); return 0; }
void ShipData::calculate() { float sog = stringToFloat(value[SOG]); float rws = stringToFloat(value[RWS]); float rwa = stringToFloat(value[RWA]) * 0.0174532925; /* Convert to rad */ /* source http://en.wikipedia.org/wiki/Apparent_wind */ float tws = sqrt(rws*rws + sog*sog - 2 * rws*sog*cos(rwa)); float twa = 0; if (tws > 0.2) { twa = acos((rws*cos(rwa) - sog) / tws) * 57.2957795; /* Convert to deg */ } else { tws = 0; } tws = ktsToMs(tws); value[TWS] = floatToString1d(tws); timeStamp[TWS] = millis(); value[TWA] = floatToString1d(twa); timeStamp[TWA] = millis(); if ( tws > lastTWS ) { float tmp = tws; tws = lastTWS; lastTWS = tmp; } else { lastTWS = tws; } approxMaxTimeFilter10m->putValue(tws); value[MWS10] = floatToString1d(approxMaxTimeFilter10m->getMax()); timeStamp[MWS10] = millis(); approxMaxTimeFilter60m->putValue(tws); value[MWS60] = floatToString1d(approxMaxTimeFilter60m->getMax()); timeStamp[MWS60] = millis(); float hh = stringToFloat(value[UTC].substring(0, 2)); hh = hh + 2; if (hh > 24) hh = hh - 24; if (hh < 0) hh = hh + 24; value[LTZ] = floatToString0d(hh) + value[UTC].substring(2, 5); float tcp45 = stringToFloat(value[TC]) + 45; if (tcp45 > 359) tcp45 = tcp45 - 360; value[TCP45] = floatToString0d(tcp45); float tcm45 = stringToFloat(value[TC]) - 45; if (tcm45 < 0) tcm45 = tcm45 + 360; value[TCM45] = floatToString0d(tcm45); value[VMGW] = floatToString1d(sog * cos(twa * 0.0174532925)); }
std::vector<float> extractFloatsFromString(std::string input){ std::vector<float> floats; //Anything (lazy) followed by either a number of the form #.##### or .##### std::string myReg = ".*?(-?[0-9]+(\\.[0-9]+)?|-?0*\\.[0-9]+)(.*)"; std::regex regex(myReg); std::smatch match; int i = 0; //while we can still match (find new numbers) continue to do so while (std::regex_match(input, match, regex)){ //if we have matched, match 1 (group 1) is a float floats.push_back(stringToFloat(match[1].str(), 10)); input = match[3]; i++; } return floats; }
// ***************************************************************************** float PodNode::asFloat() const { if (const FloatPodValue* v = dynamic_cast<const FloatPodValue*>(m_value)) { return v->value(); } else if (const IntPodValue* v = dynamic_cast<const IntPodValue*>(m_value)) { return static_cast<float>(v->value()); } else if (const StringPodValue* v = dynamic_cast<const StringPodValue*>(m_value)) { float result; if (stringToFloat(v->value(), result)) { return result; } } throw ValueTypeError(__FUNCTION__, this); }
static bool _parse_time(JsLex *lex, TimeInDay *time, int initialChars) { time->hour = (int)stringToIntWithRadix(&jslGetTokenValueAsString(lex)[initialChars], 10, 0); jslGetNextToken(lex); if (lex->tk==':') { jslGetNextToken(lex); if (lex->tk == LEX_INT) { time->min = _parse_int(lex); jslGetNextToken(lex); if (lex->tk==':') { jslGetNextToken(lex); if (lex->tk == LEX_INT || lex->tk == LEX_FLOAT) { JsVarFloat f = stringToFloat(jslGetTokenValueAsString(lex)); time->sec = (int)f; time->ms = (int)(f*1000) % 1000; jslGetNextToken(lex); if (lex->tk == LEX_ID && strcmp(jslGetTokenValueAsString(lex),"GMT")==0) { jslGetNextToken(lex); } if (lex->tk == '+' || lex->tk == '-') { int sign = lex->tk == '+' ? 1 : -1; jslGetNextToken(lex); if (lex->tk == LEX_INT) { int i = _parse_int(lex); // correct the fact that it's HHMM and turn it into just minutes i = (i%100) + ((i/100)*60); time->zone = i*sign; jslGetNextToken(lex); } } return true; } } } } return false; }
JsVar *jswrap_json_parse_internal() { switch (lex->tk) { case LEX_R_TRUE: jslGetNextToken(lex); return jsvNewFromBool(true); case LEX_R_FALSE: jslGetNextToken(lex); return jsvNewFromBool(false); case LEX_R_NULL: jslGetNextToken(lex); return jsvNewWithFlags(JSV_NULL); case '-': { jslGetNextToken(lex); if (lex->tk!=LEX_INT && lex->tk!=LEX_FLOAT) return 0; JsVar *v = jswrap_json_parse_internal(lex); JsVar *zero = jsvNewFromInteger(0); JsVar *r = jsvMathsOp(zero, v, '-'); jsvUnLock2(v, zero); return r; } case LEX_INT: { long long v = stringToInt(jslGetTokenValueAsString(lex)); jslGetNextToken(lex); return jsvNewFromLongInteger(v); } case LEX_FLOAT: { JsVarFloat v = stringToFloat(jslGetTokenValueAsString(lex)); jslGetNextToken(lex); return jsvNewFromFloat(v); } case LEX_STR: { JsVar *a = jslGetTokenValueAsVar(lex); jslGetNextToken(lex); return a; } case '[': { JsVar *arr = jsvNewEmptyArray(); if (!arr) return 0; jslGetNextToken(lex); // [ while (lex->tk != ']' && !jspHasError()) { JsVar *value = jswrap_json_parse_internal(lex); if (!value || (lex->tk!=']' && !jslMatch(','))) { jsvUnLock2(value, arr); return 0; } jsvArrayPush(arr, value); jsvUnLock(value); } if (!jslMatch(']')) { jsvUnLock(arr); return 0; } return arr; } case '{': { JsVar *obj = jsvNewObject(); if (!obj) return 0; jslGetNextToken(lex); // { while (lex->tk == LEX_STR && !jspHasError()) { JsVar *key = jsvAsArrayIndexAndUnLock(jslGetTokenValueAsVar(lex)); jslGetNextToken(lex); JsVar *value = 0; if (!jslMatch(':') || !(value=jswrap_json_parse_internal(lex)) || (lex->tk!='}' && !jslMatch(','))) { jsvUnLock3(key, value, obj); return 0; } jsvAddName(obj, jsvMakeIntoVariableName(key, value)); jsvUnLock2(value, key); } if (!jslMatch('}')) { jsvUnLock(obj); return 0; } return obj; } default: { char buf[32]; jslTokenAsString(lex->tk, buf, 32); jsExceptionHere(JSET_SYNTAXERROR, "Expecting a valid value, got %s", buf); return 0; // undefined = error } } }
JsVar *jswrap_json_parse_internal(JsLex *lex) { switch (lex->tk) { case LEX_R_TRUE: jslGetNextToken(lex); return jsvNewFromBool(true); case LEX_R_FALSE: jslGetNextToken(lex); return jsvNewFromBool(false); case LEX_R_NULL: jslGetNextToken(lex); return jsvNewWithFlags(JSV_NULL); case '-': { jslGetNextToken(lex); if (lex->tk!=LEX_INT && lex->tk!=LEX_FLOAT) return 0; JsVar *v = jswrap_json_parse_internal(lex); JsVar *zero = jsvNewFromInteger(0); JsVar *r = jsvMathsOp(zero, v, '-'); jsvUnLock(v); jsvUnLock(zero); return r; } case LEX_INT: { long long v = stringToInt(jslGetTokenValueAsString(lex)); jslGetNextToken(lex); return jsvNewFromLongInteger(v); } case LEX_FLOAT: { JsVarFloat v = stringToFloat(jslGetTokenValueAsString(lex)); jslGetNextToken(lex); return jsvNewFromFloat(v); } case LEX_STR: { JsVar *a = jslGetTokenValueAsVar(lex); jslGetNextToken(lex); return a; } case '[': { JsVar *arr = jsvNewWithFlags(JSV_ARRAY); if (!arr) return 0; jslGetNextToken(lex); // [ while (lex->tk != ']') { JsVar *value = jswrap_json_parse_internal(lex); if (!value || (lex->tk!=']' && !jslMatch(lex, ','))) { jsvUnLock(value); jsvUnLock(arr); return 0; } jsvArrayPush(arr, value); jsvUnLock(value); } if (!jslMatch(lex, ']')) { jsvUnLock(arr); return 0; } return arr; } case '{': { JsVar *obj = jsvNewWithFlags(JSV_OBJECT); if (!obj) return 0; jslGetNextToken(lex); // { while (lex->tk == LEX_STR) { JsVar *key = jsvAsArrayIndexAndUnLock(jslGetTokenValueAsVar(lex)); jslGetNextToken(lex); JsVar *value = 0; if (!jslMatch(lex, ':') || !(value=jswrap_json_parse_internal(lex)) || (lex->tk!='}' && !jslMatch(lex, ','))) { jsvUnLock(key); jsvUnLock(value); jsvUnLock(obj); return 0; } jsvAddName(obj, jsvMakeIntoVariableName(key, value)); jsvUnLock(value); jsvUnLock(key); } if (!jslMatch(lex, '}')) { jsvUnLock(obj); return 0; } return obj; } default: return 0; // undefined = error } }
int processAtMLton (GC_state s, int start, int argc, char **argv, char **worldFile) { int i; i = start; while (s->controls.mayProcessAtMLton and i < argc and (0 == strcmp (argv [i], "@MLton"))) { bool done; i++; done = FALSE; while (!done) { if (i == argc) die ("Missing -- at end of @MLton args."); else { char *arg; arg = argv[i]; if (0 == strcmp (arg, "copy-generational-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton copy-generational-ratio missing argument."); s->controls.ratios.copyGenerational = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.copyGenerational) die ("@MLton copy-generational-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "copy-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton copy-ratio missing argument."); s->controls.ratios.copy = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.copy) die ("@MLton copy-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "fixed-heap")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton fixed-heap missing argument."); s->controls.fixedHeap = align (stringToBytes (argv[i++]), 2 * s->sysvals.pageSize); } else if (0 == strcmp (arg, "gc-messages")) { i++; s->controls.messages = TRUE; } else if (0 == strcmp (arg, "gc-summary")) { i++; s->controls.summary = TRUE; } else if (0 == strcmp (arg, "gc-summary-file")) { i++; if (i == argc || (0 == strcmp (argv[i], "--"))) die ("@MLton gc-summary-file missing argument."); s->controls.summary = TRUE; s->controls.summaryFile = fopen(argv[i++], "w"); if (s->controls.summaryFile == NULL) { die ("Invalid @MLton gc-summary-file %s (%s).", argv[i-1], strerror(errno)); } } else if (0 == strcmp (arg, "grow-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton grow-ratio missing argument."); s->controls.ratios.grow = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.grow) die ("@MLton grow-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "hash-cons")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton hash-cons missing argument."); s->controls.ratios.hashCons = stringToFloat (argv[i++]); unless (0.0 <= s->controls.ratios.hashCons and s->controls.ratios.hashCons <= 1.0) die ("@MLton hash-cons argument must be between 0.0 and 1.0."); } else if (0 == strcmp (arg, "live-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton live-ratio missing argument."); s->controls.ratios.live = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.live) die ("@MLton live-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "load-world")) { unless (s->controls.mayLoadWorld) die ("May not load world."); i++; s->amOriginal = FALSE; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton load-world missing argument."); *worldFile = argv[i++]; } else if (0 == strcmp (arg, "mark-compact-generational-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton mark-compact-generational-ratio missing argument."); s->controls.ratios.markCompactGenerational = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.markCompactGenerational) die ("@MLton mark-compact-generational-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "mark-compact-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton mark-compact-ratio missing argument."); s->controls.ratios.markCompact = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.markCompact) die ("@MLton mark-compact-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "max-heap")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton max-heap missing argument."); s->controls.maxHeap = align (stringToBytes (argv[i++]), 2 * s->sysvals.pageSize); } else if (0 == strcmp (arg, "may-page-heap")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton may-page-heap missing argument."); s->controls.mayPageHeap = stringToBool (argv[i++]); } else if (0 == strcmp (arg, "no-load-world")) { i++; s->controls.mayLoadWorld = FALSE; } else if (0 == strcmp (arg, "nursery-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton nursery-ratio missing argument."); s->controls.ratios.nursery = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.nursery) die ("@MLton nursery-ratio argument must be greater than 1.0."); } else if (0 == strcmp (arg, "ram-slop")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton ram-slop missing argument."); s->controls.ratios.ramSlop = stringToFloat (argv[i++]); } else if (0 == strcmp (arg, "show-sources")) { showSources (s); exit (0); } else if (0 == strcmp (arg, "stop")) { i++; s->controls.mayProcessAtMLton = FALSE; } else if (0 == strcmp (arg, "stack-current-grow-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-current-grow-ratio missing argument."); s->controls.ratios.stackCurrentGrow = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.stackCurrentGrow) die ("@MLton stack-current-grow-ratio argument must greater than 1.0."); } else if (0 == strcmp (arg, "stack-current-max-reserved-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-current-max-reserved-ratio missing argument."); s->controls.ratios.stackCurrentMaxReserved = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.stackCurrentMaxReserved) die ("@MLton stack-current-max-reserved-ratio argument must greater than 1.0."); } else if (0 == strcmp (arg, "stack-current-permit-reserved-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-current-permit-reserved-ratio missing argument."); s->controls.ratios.stackCurrentPermitReserved = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.stackCurrentPermitReserved) die ("@MLton stack-current-permit-reserved-ratio argument must greater than 1.0."); } else if (0 == strcmp (arg, "stack-current-shrink-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-current-shrink-ratio missing argument."); s->controls.ratios.stackCurrentShrink = stringToFloat (argv[i++]); unless (0.0 <= s->controls.ratios.stackCurrentShrink and s->controls.ratios.stackCurrentShrink <= 1.0) die ("@MLton stack-current-shrink-ratio argument must be between 0.0 and 1.0."); } else if (0 == strcmp (arg, "stack-max-reserved-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-max-reserved-ratio missing argument."); s->controls.ratios.stackMaxReserved = stringToFloat (argv[i++]); unless (1.0 < s->controls.ratios.stackMaxReserved) die ("@MLton stack-max-reserved-ratio argument must greater than 1.0."); } else if (0 == strcmp (arg, "stack-shrink-ratio")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton stack-shrink-ratio missing argument."); s->controls.ratios.stackShrink = stringToFloat (argv[i++]); unless (0.0 <= s->controls.ratios.stackShrink and s->controls.ratios.stackShrink <= 1.0) die ("@MLton stack-shrink-ratio argument must be between 0.0 and 1.0."); } else if (0 == strcmp (arg, "use-mmap")) { i++; if (i == argc || 0 == strcmp (argv[i], "--")) die ("@MLton use-mmap missing argument."); GC_setCygwinUseMmap (stringToBool (argv[i++])); } else if (0 == strcmp (arg, "--")) { i++; done = TRUE; } else if (i > 1) die ("Strange @MLton arg: %s", argv[i]); else done = TRUE; } } } return i; }
static int gpsNewFrameNMEA(char c) { uint8_t frameOK = 0; static uint8_t param = 0, offset = 0, parity = 0; static char string[15]; static uint8_t checksum_param, frame = 0; if (c == '$') { param = 0; offset = 0; parity = 0; } else if (c == ',' || c == '*') { string[offset] = 0; if (param == 0) { // frame identification frame = 0; if (string[0] == 'G' && string[1] == 'P' && string[2] == 'G' && string[3] == 'G' && string[4] == 'A') frame = FRAME_GGA; if (string[0] == 'G' && string[1] == 'P' && string[2] == 'R' && string[3] == 'M' && string[4] == 'C') frame = FRAME_RMC; } else if (frame == FRAME_GGA) { if (param == 2) { gpsData.lat = GPS_coord_to_degrees(string); } else if (param == 3 && string[0] == 'S') gpsData.lat = -gpsData.lat; else if (param == 4) { gpsData.lon = GPS_coord_to_degrees(string); } else if (param == 5 && string[0] == 'W') gpsData.lon = -gpsData.lon; else if (param == 6) { gpsData.fix = string[0] > '0'; } else if (param == 7) { gpsData.numSatellites = grab_fields(string, 0); } else if (param == 9) { gpsData.height = stringToFloat(string); } } else if (frame == FRAME_RMC) { if (param == 7) { gpsData.speed = stringToFloat(string) * 51.44444f; // speed in cm/s } } param++; offset = 0; if (c == '*') checksum_param = 1; else parity ^= c; } else if (c == '\r' || c == '\n') { if (checksum_param) { // parity checksum uint8_t checksum = hex_c(string[0]); checksum <<= 4; checksum += hex_c(string[1]); if (checksum == parity) frameOK = 1; } checksum_param = 0; } else { if (offset < 15) string[offset++] = c; if (!checksum_param) parity ^= c; } if (frame) gpsData.present = 1; return frameOK && (frame == FRAME_GGA); }
SMFFEConfig::SMFFEConfig(void) :mFilename("data/config.ini") { mViewWidth = 1024; mViewHeight = 728; // ******* INI READING **** if(!fexists(mFilename.c_str())) { CIniFile::Create(mFilename); } //----width std::string lValue = CIniFile::GetValue("width", "graphics", mFilename); if(lValue == "") { mWinWidth = 1024; } else { mWinWidth = atoi(lValue.c_str()); } //-----height lValue = CIniFile::GetValue("height", "graphics", mFilename); if(lValue == "") { mWinHeight = 768; } else { mWinHeight = atoi(lValue.c_str()); } //-----fullscreen lValue = CIniFile::GetValue("fullscreen", "graphics", mFilename); if(lValue == "") { mFullScreen = false; } else { mFullScreen = lValue == "true"?true:false; } //-----sounds lValue = CIniFile::GetValue("music", "sounds", mFilename); if(lValue == "") { mMusicOn = true; } else { mMusicOn = lValue == "on"?true:false; } lValue = CIniFile::GetValue("effect", "sounds", mFilename); if(lValue == "") { mEffectRatio = 1.0f; } else { mEffectRatio = lValue == "on"?1.0f:0.0f; } //----------------------READ KEYBOARD/joypad MAPPING readKeyboardMapping(); readJoypadMapping(); //----------------------READ GLOBAL VARIABLES mDatas = parseDataFile("data/variables.conf"); mPurcentageDamageTakenUltra = stringToFloat(mDatas["ultraReceivePurcentage"]); mPurcentageDamageGivenUltra = stringToFloat(mDatas["ultraDegatPurcentage"]); mPurcentageDamageTakenUltraFromUltra = stringToFloat(mDatas["ultraReceiveByUltraPurcentage"]); }
template<> float stringTo(const std::string& s) { return stringToFloat(s); }
String ShipData::ktsToMs(String kts) { float fKts = stringToFloat(kts); return floatToString1d(fKts*0.514); }
/*JSON{ "type":"function", "name" : "parseFloat", "description" : "Convert a string representing a number into an float", "generate" : "jswrap_parseFloat", "params" : [ [ "string", "JsVar", ""] ], "return" : ["float", "The value of the string"] }*/ JsVarFloat jswrap_parseFloat(JsVar *v) { char buffer[JS_NUMBER_BUFFER_SIZE]; jsvGetString(v, buffer, JS_NUMBER_BUFFER_SIZE); return stringToFloat(buffer); }
float TrackerConfig::getFloatParam(const std::string& sXPathExpr) const { return stringToFloat(getParam(sXPathExpr)); }