Beispiel #1
0
ButtonConfigPtr createButtonConfig(const std::string& path, SystemManagerPtr systemManager) {
	std::ifstream file;
	file.open(path);
	std::string builder;
	std::string line;
	while (std::getline(file, line)) {
		builder.append(line);
	}
	file.close();

	rapidjson::Document doc;
	doc.Parse(builder.c_str());

	const rapidjson::Value& parsedButton = doc["button"];
	std::string image = parsedButton["image"].GetString();
	GraphicsSystemPtr graphicsSystem = static_pointer_cast<GraphicsSystem>(systemManager->systems.at(SystemType::GRAPHICS));
	graphicsSystem->addTexture(image, image);

	ButtonConfig* buttonConfig = new ButtonConfig();
	buttonConfig->sectionWidth = parsedButton["section_width"].GetInt();
	buttonConfig->sectionHeight = parsedButton["section_height"].GetInt();

	parseState(image, parsedButton["button_up"], buttonConfig->buttonUp);
	parseState(image, parsedButton["button_over"], buttonConfig->buttonOver);
	parseState(image, parsedButton["button_down"], buttonConfig->buttonDown);
	
	return ButtonConfigPtr(buttonConfig);
}
Beispiel #2
0
PanelConfigPtr createPanelConfig(const std::string& path, SystemManagerPtr systemManager) {
	std::ifstream file;
	file.open(path);
	std::string builder;
	std::string line;
	while (std::getline(file, line)) {
		builder.append(line);
	}
	file.close();

	rapidjson::Document doc;
	doc.Parse(builder.c_str());

	const rapidjson::Value& parsedPanel = doc["panel"];
	std::string image = parsedPanel["image"].GetString();
	GraphicsSystemPtr graphicsSystem = static_pointer_cast<GraphicsSystem>(systemManager->systems.at(SystemType::GRAPHICS));
	graphicsSystem->addTexture(image, image);

	PanelConfig* panelConfig = new PanelConfig();
	panelConfig->sectionWidth = parsedPanel["section_width"].GetInt();
	panelConfig->sectionHeight = parsedPanel["section_height"].GetInt();

	parseState(image, parsedPanel["sections"], panelConfig->panelSections);

	return PanelConfigPtr(panelConfig);
}
Beispiel #3
0
void
pktgen_process_enable_disable(port_info_t * info, char * str)
{
	if ( parseState(str) == ENABLE_STATE )
		pktgen_set_port_flags(info, PROCESS_INPUT_PKTS);
	else
		pktgen_clr_port_flags(info, PROCESS_INPUT_PKTS);
}
void
pktgen_theme_state(const char * state)
{
	if ( parseState(state) == DISABLE_STATE )
		scrn->theme = THEME_OFF;
	else
		scrn->theme = THEME_ON;
	cmdline_set_prompt(pktgen.cl, pktgen_get_prompt());
}
Beispiel #5
0
void
pktgen_blink_enable_disable(port_info_t * info, char * str)
{
	if ( parseState(str) == ENABLE_STATE ) {
		pktgen.blinklist |= (1 << info->pid);
	} else {
		pktgen.blinklist &= ~(1 << info->pid);
		rte_eth_led_on(info->pid);
	}
}
int  HeadSetDetect::detect()
{
    char buffer[1024];
    int state =-1;
    int count = socketNextEvent(buffer,sizeof(buffer));
    if(count != 0)
    {   
        state = parseState(buffer,count);
    }
    return state;
}
Beispiel #7
0
void
pktgen_range_enable_disable(port_info_t * info, char * str)
{
	if ( parseState(str) == ENABLE_STATE ) {
		pktgen_clr_port_flags(info, SEND_SEQ_PKTS);
		pktgen_clr_port_flags(info, SEND_PCAP_PKTS);
		pktgen_set_port_flags(info, SEND_RANGE_PKTS);
	} else
		pktgen_clr_port_flags(info, SEND_RANGE_PKTS);
	pktgen_packet_rate(info);
}
prvreader::PrvEvent* prvreader::PrvParser::parseLine()
{
    string line;
    PrvEvent* prvEvent;
    if (prvStream){
        if(getline(*prvStream,line)){
            lineNumber++;
            if (lineNumber%10000==0){
                Message::Debug(to_string(lineNumber)+ " lines processed");
            }
            replace(line.begin(), line.end(), '\t', ' ');
            std::size_t found = line.find_first_of("(");
            if ((found!=std::string::npos)&&(found+1<line.length())){
                found = line.find_first_of("a", found+1);
            }
            if ((found!=std::string::npos)&&(line[found+1]=='t')&&(found+5<line.length())&&(line[found+5]==PRV_HEADER_SEP_MAIN_CHAR)){
                line[found+5]='*';
            }
            replace(line.begin(), line.end(), PRV_HEADER_QUOTE_IN_CHAR, GENERIC_SEP_CHAR);
            replace(line.begin(), line.end(), PRV_HEADER_QUOTE_OUT_CHAR, GENERIC_SEP_CHAR);
            trim_all(line);
            if (!line.empty()){
                escaped_list_separator<char> sep(GENERIC_ESCAPE_CHAR, PRV_HEADER_SEP_MAIN_CHAR, GENERIC_QUOTE_CHAR);
                tokenizer<escaped_list_separator<char> > *tokens = new tokenizer<escaped_list_separator<char> >(line, sep);
                tokenizer<escaped_list_separator<char> >::iterator tokensIterator=tokens->begin();
                if (mode==Header){
                    prvEvent=parseHeader(tokens);
                    mode=Body;
                }else{
                    string eventType=*tokensIterator;
                    tokensIterator++;
                    //communicator
                    if (eventType.compare(PRV_BODY_COMMUNICATOR)==0){
                        prvEvent= new PrvOther(lineNumber, prveventtype::Skip);
                    //communications
                    }else if (eventType.compare(PRV_BODY_COMMUNICATION)==0){
                        prvEvent=parseCommunications(tokens, lineNumber);
                    }else if (eventType.compare(PRV_BODY_EVENTS)==0){
                        prvEvent=parseEvents(tokens, lineNumber);
                    }else if (eventType.compare(PRV_BODY_STATE)==0){
                        prvEvent=parseState(tokens, lineNumber);
                    }else{
                        prvEvent= new PrvOther(lineNumber, prveventtype::Skip);
                    }
                }
                delete tokens;
            } 
        }else{
            prvEvent=new PrvOther(lineNumber, prveventtype::End);
        }
    }
    return prvEvent;
}
Beispiel #9
0
void
pktgen_pcap_enable_disable(port_info_t * info, char * str)
{
	if ( (info->pcap != NULL) && (info->pcap->pkt_count != 0) ) {
		if ( parseState(str) == ENABLE_STATE ) {
			pktgen_clr_port_flags(info, SEND_RANGE_PKTS);
			pktgen_clr_port_flags(info, SEND_SEQ_PKTS);
			pktgen_set_port_flags(info, SEND_PCAP_PKTS);
		} else
			pktgen_clr_port_flags(info, SEND_PCAP_PKTS);
		pktgen_packet_rate(info);
	}
}
	bool NavigationDataReceiver::parse(MemoryLibrary::Buffer& buffer)
	{
		int offset = 0;
		int header = buffer.MakeValueFromOffset<int32_t>(offset);
		if(header != 0x55667788)
		{
			std::cout << "NavigationDataReceiver::Parse FAIL, header != 0x55667788\n";
			return false;
		}
		offset += 4;
		
		int state = buffer.MakeValueFromOffset<int32_t>(offset);
		parseState(state);	
		offset += 4;
		
		myNavData.sequence = buffer.MakeValueFromOffset<int32_t>(offset);
		offset += 4;
		
		myNavData.visionFlag = buffer.MakeValueFromOffset<int32_t>(offset);
		offset += 4;
		
		while(offset < buffer.Size())
		{
			int option_tag = (int)buffer.MakeValueFromOffset<unsigned short>(offset);
			offset += 2;
			int option_len = (int)buffer.MakeValueFromOffset<unsigned short>(offset);
			offset += 2;
			
			if(option_len == 0)
			{
				std::cout << "NavigationDataReceiver::Parse FAIL, option_len == 0\n";
				return false;
			}
			
			switch(option_tag)
			{
				case NAVDATA_DEMO_TAG: 
					parseNavigation(buffer, offset); 
					break;
				case NAVDATA_CKS_TAG:  break;
				case NAVDATA_VISION_DETECT_TAG: 
					parseVision(buffer, offset); 
					break;
			}
			
			offset = offset + option_len - 4;
		} //while
		
		return true;
	}
U_CAPI void U_EXPORT2
ucm_addState(UCMStates *states, const char *s) {
    const char *error;

    if(states->countStates==MBCS_MAX_STATE_COUNT) {
        fprintf(stderr, "ucm error: too many states (maximum %u)\n", MBCS_MAX_STATE_COUNT);
        exit(U_INVALID_TABLE_FORMAT);
    }

    error=parseState(s, states->stateTable[states->countStates],
                       &states->stateFlags[states->countStates]);
    if(error!=NULL) {
        fprintf(stderr, "ucm error: parse error in state definition at '%s'\n", error);
        exit(U_INVALID_TABLE_FORMAT);
    }

    ++states->countStates;
}
Beispiel #12
0
void
pktgen_screen(const char * onOff)
{
	if ( parseState(onOff) == DISABLE_STATE ) {
		if ( !scrn_is_paused() ) {
			scrn_pause();
			scrn_cls();
			scrn_setw(1);
			scrn_pos(scrn->nrows, 1);
		}
	} else {
		scrn_cls();
		scrn_pos(scrn->nrows,1);
		scrn_setw(pktgen.last_row+1);
		scrn_resume();
		pktgen_redisplay(1);
	}
}
Beispiel #13
0
bool XMLEngine::parseStates(QXmlStreamReader * reader, StateList * states, TransitionList * transitions)
{
	if (reader->readNextStartElement() && compare(reader->name(), "states"))
	{
		while (reader->readNextStartElement() && compare(reader->name(), "state"))
		{
			QString name = reader->attributes().value("name").toString();
			QString id = reader->attributes().value("id").toString();
			QString type = reader->attributes().value("type").toString();
			State * state = Factory::create(name, id, type);

			parseState(reader, state, transitions);

			states->append(state);
		}
	}

	return !reader->hasError();
}
Beispiel #14
0
void Parser::Private::parseStatus()
{
    Status s;

    while (notAtEnd()) {
        blockingReadNext();
        if (reader.isEndElement())
            break;
        if (reader.isStartElement()) {
            const QStringRef name = reader.name();
            if (name == QLatin1String("state"))
                s.setState(parseState(blockingReadElementText()));
            else if (name == QLatin1String("time"))
                s.setTime(blockingReadElementText());
            else if (reader.isStartElement())
                reader.skipCurrentElement();
        }
    }

    emit q->status(s);
}
Beispiel #15
0
bool FSMDescrip::loadFromXML(const std::string& xmlName, bool verbose) {
  logger << Logger::INFO_MSG << "Loading behavior from xml: " << xmlName;
  TiXmlDocument xml(xmlName);
  bool loadOkay = xml.LoadFile();

  if (!loadOkay) {
    logger << Logger::ERR_MSG << "Could not load behavior configuration xml (";
    logger << xmlName << ") due to xml syntax errors.\n";
    logger << "\t" << xml.ErrorDesc();
    return false;
  }

  TiXmlElement* popNode = xml.RootElement();
  if (!popNode) {
    logger << Logger::ERR_MSG << "Root element does not exist.";
    return false;
  }
  if (popNode->ValueStr() != "BFSM") {
    logger << Logger::ERR_MSG << "Root element value should be \"BFSM\".";
    return false;
  }

  std::string absPath;
  os::path::absPath(xmlName, absPath);
  std::string junk;
  os::path::split(absPath, _behaviorFldr, junk);
  logger << Logger::INFO_MSG << "Behavior root: " << _behaviorFldr;

  TiXmlElement* child;
  for (child = popNode->FirstChildElement(); child; child = child->NextSiblingElement()) {
    if (child->ValueStr() == "GoalSet") {
      int i;
      if (!child->Attribute("id", &i)) {
        logger << Logger::ERR_MSG << "GoalSet requires an \"id\" property.";
        return false;
      }
      size_t setID = static_cast<size_t>(i);
      // confirm that the id doesn't already exist
      if (_goalSets.find(setID) != _goalSets.end()) {
        logger << Logger::WARN_MSG << "Found multiple GoalSets with the same id: ";
        logger << setID << ".\n\tGoal definitions will be merged!";
      } else {
        _goalSets[setID] = new GoalSet();
      }
      TiXmlElement* goalNode;
      for (goalNode = child->FirstChildElement(); goalNode;
           goalNode = goalNode->NextSiblingElement()) {
        if (goalNode->ValueStr() == "Goal") {
          Goal* goal = parseGoal(goalNode, _behaviorFldr);
          if (goal == 0x0) {
            logger << Logger::ERR_MSG << "Error parsing a goal description.";
            return false;
          }
          // Make sure that this goal doesn't duplicate previous goal ids
          if (!_goalSets[setID]->addGoal(goal->getID(), goal)) {
            logger << Logger::ERR_MSG << "GoalSet " << setID;
            logger << " has two goals with the identifier: " << goal->getID();
            logger << " (second appears on line " << goalNode->Row() << ").";
            return false;
          }
        } else {
          logger << Logger::WARN_MSG
                 << "Found a child tag of the GoalSet that "
                    "is not a \"Goal\" tag on line "
                 << goalNode->Row()
                 << ". "
                    "It will be ignored.";
        }
      }

    } else if (child->ValueStr() == "State") {
      if (!parseState(child, _behaviorFldr, _states)) {
        return false;
      }
    } else if (child->ValueStr() == "Transition") {
      std::string from;
      Transition* trans = parseTransition(child, _behaviorFldr, from);
      if (trans == 0x0) {
        return false;
      }

      addTransition(from, trans);
    } else if (child->ValueStr() == "VelModifier") {
      VelModifier* vel = parseVelModifier(child, _behaviorFldr);
      if (vel == 0x0) {
        return false;
      } else {
        _velModifiers.push_back(vel);
      }
    } else if (child->ValueStr() == "Task") {
      Task* task = parseTask(child, _behaviorFldr);
      if (task == 0x0) {
        logger << Logger::WARN_MSG << "User-specified Task on line ";
        logger << child->Row()
               << " couldn't be instantiated.  "
                  "It is being ignored.";
      } else {
        _tasks.push_back(task);
      }
    } else if (child->ValueStr() == "EventSystem") {
      if (!EVENT_SYSTEM->parseEvents(child, _behaviorFldr)) {
        return false;
      }
    } else {
      logger << Logger::ERR_MSG << "Unrecognized tag as child of <Population>: <";
      logger << child->ValueStr() << ">.";
      return false;
    }
  }

  return true;
}
Beispiel #16
0
int
parseConfigLine(char *line, char *filename, int lineno, int set)
{
    int x0, x1;
    int i, from, to;
    AtomPtr name, value;
    ConfigVariablePtr var;
    int iv;
    float fv;
    AtomPtr av;
    AtomListPtr alv;
    IntListPtr ilv;

    i = skipWhitespace(line, 0);
    if(line[i] == '\n' || line[i] == '\0' || line[i] == '#')
        return 0;

    x0 = i;
    while(letter(line[i]) || digit(line[i]))
        i++;
    x1 = i;

    i = skipWhitespace(line, i);
    if(line[i] != '=') {
        goto syntax;
    }
    i++;
    i = skipWhitespace(line, i);

    name = internAtomN(line + x0, x1 - x0);
    var = findConfigVariable(name);
    releaseAtom(name);

    if(set && var->setter == NULL)
        return -2;
 
    if(var == NULL) {
        if(!set) {
            do_log(L_ERROR, "%s:%d: unknown config variable ",
                   filename, lineno);
            do_log_n(L_ERROR, line + x0, x1 - x0);
            do_log(L_ERROR, "\n");
        }
        return -1;
    }
    
    i = skipWhitespace(line, i);
    switch(var->type) {
    case CONFIG_INT: case CONFIG_OCTAL: case CONFIG_HEX:
        i = parseInt(line, i, &iv);
        if(i < 0) goto syntax;
        if(set)
            var->setter(var, &iv);
        else
            *var->value.i = iv;
    break;
    case CONFIG_TIME:
        i = parseTime(line, i, &iv);
        if(i < 0) goto syntax;
        i = skipWhitespace(line, i);
        if(line[i] != '\n' && line[i] != '\0' && line[i] != '#')
            goto syntax;
        if(set)
            var->setter(var, &iv);
        else
            *var->value.i = iv;
        break;
    case CONFIG_BOOLEAN:
    case CONFIG_TRISTATE:
    case CONFIG_TETRASTATE:
    case CONFIG_PENTASTATE:
        iv = parseState(line, i, var->type);
        if(iv < 0)
            goto syntax;
        if(set)
            var->setter(var, &iv);
        else
            *var->value.i = iv;
        break;
    case CONFIG_FLOAT: 
        if(!digit(line[i]) && line[i] != '.')
            goto syntax;
        fv = atof(line + i);
        if(set)
            var->setter(var, &fv);
        else
            *var->value.f = fv;
        break;
    case CONFIG_ATOM: case CONFIG_ATOM_LOWER: case CONFIG_PASSWORD:
        i = parseAtom(line, i, &av, (var->type == CONFIG_ATOM_LOWER));
        if(i < 0) goto syntax;
        if(!av) {
            if(!set)
                do_log(L_ERROR, "%s:%d: couldn't allocate atom.\n",
                       filename, lineno);
            return -1;
        }
        i = skipWhitespace(line, i);
        if(line[i] != '\n' && line[i] != '\0' && line[i] != '#') {
            releaseAtom(av);
            goto syntax;
        }
        if(set)
            var->setter(var, &av);
        else {
            if(*var->value.a) releaseAtom(*var->value.a);
            *var->value.a = av;
        }
        break;
    case CONFIG_INT_LIST:
        ilv = makeIntList(0);
        if(ilv == NULL) {
            if(!set)
                do_log(L_ERROR, "%s:%d: couldn't allocate int list.\n",
                       filename, lineno);
            return -1;
        }
        while(1) {
            i = parseInt(line, i, &from);
            if(i < 0) goto syntax;
            to = from;
            i = skipWhitespace(line, i);
            if(line[i] == '-') {
                i = skipWhitespace(line, i + 1);
                i = parseInt(line, i, &to);
                if(i < 0) {
                    destroyIntList(ilv);
                    goto syntax;
                }
                i = skipWhitespace(line, i);
            }
            intListCons(from, to, ilv);
            if(line[i] == '\n' || line[i] == '\0' || line[i] == '#')
                break;
            if(line[i] != ',') {
                destroyIntList(ilv);
                goto syntax;
            }
            i = skipWhitespace(line, i + 1);
        }
        if(set)
            var->setter(var, &ilv);
        else {
            if(*var->value.il) destroyIntList(*var->value.il);
            *var->value.il = ilv;
        }
        break;
    case CONFIG_ATOM_LIST: case CONFIG_ATOM_LIST_LOWER:
        alv = makeAtomList(NULL, 0);
        if(alv == NULL) {
            if(!set)
                do_log(L_ERROR, "%s:%d: couldn't allocate atom list.\n",
                       filename, lineno);
            return -1;
        }
        while(1) {
            i = parseAtom(line, i, &value, 
                          (var->type == CONFIG_ATOM_LIST_LOWER));
            if(i < 0) goto syntax;
            if(!value) {
                if(!set)
                    do_log(L_ERROR, "%s:%d: couldn't allocate atom.\n",
                           filename, lineno);
                return -1;
            }
            atomListCons(value, alv);
            i = skipWhitespace(line, i);
            if(line[i] == '\n' || line[i] == '\0' || line[i] == '#')
                break;
            if(line[i] != ',') {
                destroyAtomList(alv);
                goto syntax;
            }
            i = skipWhitespace(line, i + 1);
        }
        if(set)
            var->setter(var, &alv);
        else {
            if(*var->value.al) destroyAtomList(*var->value.al);
            *var->value.al = alv;
        }
        break;
    default: abort();
    }
    return 1;

 syntax:
    if(!set)
        do_log(L_ERROR, "%s:%d: parse error.\n", filename, lineno);
    return -1;
}