コード例 #1
0
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;
}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: com-input.c プロジェクト: ErnWong/NothingButNet
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
}
コード例 #4
0
ファイル: cli.c プロジェクト: jihlein/FF32mini
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);
}
コード例 #5
0
ファイル: XBeeReader.cpp プロジェクト: johncarl81/thermoduino
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);
}
コード例 #6
0
ファイル: ArgList.cpp プロジェクト: pararthshah/libavg-vaapi
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);
    }   
}
コード例 #7
0
/**
 * @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() );
}
コード例 #8
0
ファイル: 8.8.c プロジェクト: dforce2055/progra1
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;
}
コード例 #9
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));
}
コード例 #10
0
ファイル: window_utils.cpp プロジェクト: Submitty/Submitty
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;
}
コード例 #11
0
ファイル: TipPodNode.cpp プロジェクト: scottmsinger/pod
// *****************************************************************************
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);
}
コード例 #12
0
ファイル: jswrap_date.c プロジェクト: Janesak1977/Espruino
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;
}
コード例 #13
0
ファイル: jswrap_json.c プロジェクト: CWBudde/Espruino
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
  }
  }
}
コード例 #14
0
ファイル: jswrap_json.c プロジェクト: Janesak1977/Espruino
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
  }
}
コード例 #15
0
ファイル: init.c プロジェクト: MLton/mlton
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;
}
コード例 #16
0
ファイル: gps.c プロジェクト: CamBl98/afrodevices
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);
}
コード例 #17
0
ファイル: SMFFEConfig.cpp プロジェクト: Sirithang/SMFFE
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"]);
}
コード例 #18
0
template<> float stringTo(const std::string& s) { return stringToFloat(s); }
コード例 #19
0
String ShipData::ktsToMs(String kts) {
	float fKts = stringToFloat(kts);
	return floatToString1d(fKts*0.514);
}
コード例 #20
0
ファイル: jswrap_functions.c プロジェクト: jbkim/Espruino
/*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);
}
コード例 #21
0
ファイル: TrackerConfig.cpp プロジェクト: JohnChu/libavg
float TrackerConfig::getFloatParam(const std::string& sXPathExpr) const
{
    return stringToFloat(getParam(sXPathExpr));
}