/* the return value is the | of all the typeMasks of the holidays */ int getHebHolidays( date_t dth, holstorep_t *holiList ) { int tmpMask; holstorep_t tmpholip, chp; /* current holiday pointer */ tmpMask = 0; *holiList = NULL; for (chp = holidays[dth.mm][dth.dd]; /* static holidays */ chp; chp = chp->next) { tmpMask |= PushHoliday (chp, holiList); } for (chp = var_holidays[dth.mm][dth.dd]; /* variable holidays */ chp; chp = chp->next) { tmpMask |= PushHoliday (chp, holiList); } if (dth.dd == 1) { if(dth.mm == TISHREI) /* special processing for rosh hashana */ { tmpholip = getHolstorep (); initStr (&tmpholip->name, 22); sprintf (tmpholip->name, "%s %d", _("Rosh Hashana"), dth.yy); PushHoliday (tmpholip, &var_holidays[TISHREI][1]); tmpMask |= PushHoliday (tmpholip, holiList); } else { if( ! suppress_rosh_chodesh_sw ) /* rosh Chodesh Processing... */ { tmpholip = getHolstorep(); initStr (&tmpholip->name, NM_LEN); sprintf (tmpholip->name, _("Rosh Chodesh %s"), LANGUAGE2(hMonths[LEAP_YR_HEB (dth.yy)][dth.mm].name)); tmpMask |= PushHoliday (tmpholip, holiList); } } } if (dth.dd == 30 && ! suppress_rosh_chodesh_sw) { tmpholip = getHolstorep (); initStr (&tmpholip->name, NM_LEN); sprintf (tmpholip->name, _("Rosh Chodesh %s"), LANGUAGE2(hMonths[LEAP_YR_HEB (dth.yy)][dth.mm + 1].name)); tmpMask |= PushHoliday (tmpholip, holiList); } return tmpMask; }
void localize_to_city(const char *cityNameArg) { size_t len = strlen(cityNameArg); char *pc, *cityStr; city_t *pcity; initStr(&cityStr, strlen(cityNameArg)); strcpy(cityStr, cityNameArg); if (cityName != NULL) free(cityName); /* convert non-alpha to spaces */ for ( pc = cityStr; *pc != '\0'; pc++ ) if ( ! isalpha( (int)*pc ) ) *pc = ' '; for (pcity = &cities[0]; pcity->name != NULL; pcity++) if (0 == istrncasecmp(len, cityStr, pcity->name)) { if (!(longp || latp)) /* -l and -L override -C */ { latdeg = pcity->latdeg; latmin = pcity->latmin; longdeg = pcity->longdeg; longmin = pcity->longmin; } if (!zonep) { TZ = pcity->TZ; DST_scheme = pcity->DST_scheme; } free(cityStr); initStr(&cityName, strlen(pcity->name)); strcpy(cityName, pcity->name); return; } warn("unknown city: %s. Use a nearby city or geographic coordinates.", cityNameArg); warn("run 'hebcal cities' for a list of cities.", ""); ok_to_run = 0; }
void localize_to_city(const char *cityNameArg) { size_t len = strlen(cityNameArg); char *pc, *cityStr; city_t *pcity; initStr(&cityStr, strlen(cityNameArg)); strcpy(cityStr, cityNameArg); if (cityName != NULL) free(cityName); /* convert non-alpha to spaces */ for ( pc = cityStr; *pc != '\0'; pc++ ) if ( ! isalpha( (int)*pc ) ) *pc = ' '; for (pcity = &cities[0]; pcity->name != NULL; pcity++) if (0 == istrncasecmp(len, cityStr, pcity->name)) { if (!(longp || latp)) /* -l and -L override -C */ { latdeg = pcity->latdeg; latmin = pcity->latmin; longdeg = pcity->longdeg; longmin = pcity->longmin; } TZ_INFO = timelib_parse_tzfile(pcity->tz, timelib_builtin_db()); if (TZ_INFO == NULL) { die("unable to read time zone argument: %s", pcity->tz); } free(cityStr); initStr(&cityName, strlen(pcity->name)); strcpy(cityName, pcity->name); return; } warn("unknown city: %s. Use a nearby city or geographic coordinates.", cityNameArg); warn("run 'hebcal cities' for a list of cities.", ""); ok_to_run = 0; }
int main() { FILE *fin = fopen("kimbits.in", "r"); fout = fopen("kimbits.out", "w"); int length, number, i; long long index; fscanf(fin, "%d %d %lld\n", &length, &number, &index); initStr(); //for (i = 1; i <= 19; i++) { printbits(length, number, index-1); fprintf(fout, "\n"); //} fclose(fin); fclose(fout); }
/* list, returning the typemask of the pushed element */ int PushHoliday( holstorep_t hp, /* the holiday to be added */ holstorep_t *lp /* pointer to the list to be added to. */ ) { holstorep_t temp; temp = getHolstorep (); initStr (&temp->name, MAX_LINE_LEN); strcpy (temp->name, hp->name); temp->typeMask = hp->typeMask; if ( ! *lp ) /* if there are no holidays here yet, start a new bucket */ *lp = temp; else { temp->next = *lp; /* put hp at the head of the list */ *lp = temp; } return temp->typeMask; }
GsmTrack::GsmTrack(QObject *parent) : QObject(parent) { nextCmd.clear(); trackTimer = new QTimer(this); trackTimer->setInterval(1500); connect(trackTimer, SIGNAL(timeout()), SLOT(slUpdateGSM())); initStr(); gsmSerial = new QSerialPort(this); connect(gsmSerial, SIGNAL(readyRead()), SLOT(slReadSerial())); QString PortName; // 假如只有一个设备 foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { QString description = info.description(); #define _GSMTRACK_TEST_XP_x #ifdef _GSMTRACK_TEST_XP_ if(description.contains("UI Interface", Qt::CaseInsensitive)){ #else if(description.contains("Control", Qt::CaseInsensitive)){ #endif PortName = info.portName(); } } gsmSerial->setPortName( PortName ); gsmSerial->setBaudRate( QSerialPort::Baud9600 ); gsmSerial->setDataBits(QSerialPort::Data8); bool isOK = gsmSerial->open(QIODevice::ReadWrite); if(isOK){ qDebug("open successful"); }else{ qDebug("open failed"); } trackTimer->start(); }
EngineConfiguration EngineConfigurationDialog::engineConfiguration() { EngineConfiguration engine; engine.setName(ui->m_nameEdit->text()); engine.setCommand(ui->m_commandEdit->text()); engine.setWorkingDirectory(ui->m_workingDirEdit->text()); engine.setProtocol(ui->m_protocolCombo->currentText()); QString initStr(ui->m_initStringEdit->toPlainText()); if (!initStr.isEmpty()) engine.setInitStrings(initStr.split('\n')); engine.setWhiteEvalPov(ui->m_whitePovCheck->checkState() == Qt::Checked); QList<EngineOption*> optionCopies; foreach (EngineOption* option, m_options) optionCopies << option->copy(); engine.setOptions(optionCopies); engine.setSupportedVariants(m_variants); return engine; }
void init_yahrtzeits( int hyear ) { holstorep_t tmpholp; char *s, *monthStr, *eventStr, nextChar; int index, inMonth, inDay, inYear, lineNum = 1; date_t hDeath, gDeath; initStr (&s, MAX_LINE_LEN); initStr (&monthStr, MAX_LINE_LEN); rewind (yFile); nextChar = (char) getc (yFile); /* priming getc */ for (; !feof (yFile); lineNum++, nextChar = (char) getc (yFile)) { /* force an EOF */ ungetc (nextChar, yFile); if (!fgets (s, MAX_LINE_LEN, yFile)) { warn ("yahrtzeit file read error. Skipping line %s", hc_itoa (lineNum)); continue; } if (s[0] == '\n') /* blank line */ continue; if (sscanf (s, "%s %d %d%n", monthStr, &inDay, &inYear, &index) < 3) { warn ("Error in yahrtzeit file. Skipping line %s", hc_itoa (lineNum)); continue; } if (!isAllNums (monthStr)) { warn ("Non-numeric month in yahrtzeit file. Skipping line %s", hc_itoa (lineNum)); continue; } sscanf (monthStr, "%d", &inMonth); if (inMonth > 12 || inMonth < 1 || inDay < 1 || inDay > MonthLengths[LEAP (inYear)][inMonth]) { warn ("Date out of range in yahrtzeit file. Skipping line %s", hc_itoa (lineNum)); continue; } gDeath.dd = inDay; gDeath.mm = inMonth; gDeath.yy = inYear; hDeath = abs2hebrew (greg2abs (gDeath)); /* If it's Heshvan 30 it depends on the first anniversary; if that was not Heshvan 30, use the day before Kislev 1. */ if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !long_cheshvan (hDeath.yy + 1)) { hDeath.dd = 1; hDeath.mm = KISLEV; hDeath.yy = hyear; hDeath = abs2hebrew (hebrew2abs (hDeath) - 1L); } /* If it's Kislev 30 it depends on the first anniversary; if that was not Kislev 30, use the day before Teveth 1. */ else if (hDeath.mm == KISLEV && hDeath.dd == 30 && !short_kislev (hDeath.yy + 1)) { hDeath.dd = 1; hDeath.mm = TEVET; hDeath.yy = hyear; hDeath = abs2hebrew (hebrew2abs (hDeath) - 1L); } /* If it's Adar II, use the same day in last month of year (Adar or Adar II). */ else if (hDeath.mm == ADAR_II) { hDeath.mm = MONTHS_IN_HEB (hyear); } /* If it's the 30th in Adar I and year is not a leap year (so Adar has only 29 days), use the last day in Shevat. */ else if (hDeath.mm == ADAR_I && hDeath.dd == 30 && !LEAP_YR_HEB (hyear)) { hDeath.dd = 30; hDeath.mm = SHVAT; } /* In all other cases, use the normal anniversary of the date of death. */ /* advance day to rosh chodesh if needed */ if (hDeath.mm == CHESHVAN && hDeath.dd == 30 && !long_cheshvan(hyear)) { hDeath.mm = KISLEV; hDeath.dd = 1; } else if (hDeath.mm == KISLEV && hDeath.dd == 30 && short_kislev(hyear)) { hDeath.mm = TEVET; hDeath.dd = 1; } eventStr = s + index + 1; /* get the name of the event */ /* if (eventStr[strlen(eventStr)-1] == '\n') */ eventStr[strlen (eventStr) - 1] = '\0'; /* chop off the \n */ /* store the holiday in the LUT */ tmpholp = getHolstorep (); initStr (&tmpholp->name, MAX_LINE_LEN); strcpy (tmpholp->name, eventStr); /* load the user holiday into it. */ tmpholp->typeMask = USER_EVENT; PushHoliday (tmpholp, &var_holidays[hDeath.mm][hDeath.dd]); } }
void init_user_holidays( int hyear ) { holstorep_t tmpholp; char *s, *monthStr, *eventStr, nextChar; int index, inMonth, inDay, lineNum = 1; initStr (&s, MAX_LINE_LEN); initStr (&monthStr, MAX_LINE_LEN); rewind (inFile); nextChar = (char) getc (inFile); /* priming getc */ for (; !feof (inFile); lineNum++, nextChar = (char) getc (inFile)) { /* force an EOF */ ungetc (nextChar, inFile); if (!fgets (s, MAX_LINE_LEN, inFile)) { warn ("input file read error. Skipping line %s", hc_itoa (lineNum)); continue; } if (s[0] == '\n') /* blank line */ continue; if (!sscanf (s, "%s %d%n", monthStr, &inDay, &index)) { warn ("Error in input file. Skipping line %s", hc_itoa (lineNum)); continue; } if (isAllNums (monthStr)) { warn ("Numeric hebrew month in input file. Skipping line %s", hc_itoa (lineNum)); continue; } if (!(inMonth = lookup_hebrew_month (monthStr))) { warn ("Unrecognized hebrew month in input file. Skipping line %s", hc_itoa (lineNum)); continue; } if (inDay < 1 || inDay > 30) { warn ("Date out of range in input file. Skipping line %s", hc_itoa (lineNum)); continue; } if (inMonth == ADAR_II && !LEAP_YR_HEB (hyear)) inMonth = ADAR_I; eventStr = s + index + 1; /* get the name of the event */ if (eventStr[strlen (eventStr) - 1] == '\n') eventStr[strlen (eventStr) - 1] = '\0'; /* chop off the \n */ /* store the holiday in the LUT */ tmpholp = getHolstorep (); initStr (&tmpholp->name, MAX_LINE_LEN); strcpy (tmpholp->name, eventStr); /* load the user holiday into it. */ tmpholp->typeMask = USER_EVENT; PushHoliday (tmpholp, &var_holidays[inMonth][inDay]); } }
void main_calendar( long todayAbs, long endAbs) /* the range of the desired printout */ { date_t todayGreg, todayHeb; holstorep_t holi_start,holip; /* a list of holidays for today */ year_t theYear; char *omerStr ; int omer, day_of_week, first_weekday, returnedMask; int omer_today, sedra_today, candle_today, holidays_today, molad_today; molad_t moladNext; int monthNext; int today_zemanim, i_zman; int num_zmanim = sizeof (zemanim) / sizeof (struct _zman); char buffer[80]; /* Used to decide whether a particular type of daily info should be included in the abbreviated view. In abbreviated mode things like sunrise, daf, omer are printed once a week. */ #define INCLUDE_TODAY(_sw) \ ( (_sw) && ((!abbrev_sw) || (first_weekday == day_of_week))) todayHeb = abs2hebrew (todayAbs); todayGreg = abs2greg (todayAbs); theYear = yearData (todayHeb.yy); /* plug in light_offset before starting the loop */ for (i_zman = 0; i_zman < num_zmanim; i_zman ++) if (zemanim[i_zman].flags == ZMAN_CANDLES_BEFORE) zemanim[i_zman].min_offset = light_offset; else if (zemanim[i_zman].flags == ZMAN_CANDLES_AFTER || zemanim[i_zman].flags == ZMAN_HAVDALAH ) zemanim[i_zman].min_offset = havdalah_minutes; /*============== Main Year Loop ==============*/ reset_Omer (todayHeb.yy); if (sedraAllWeek_sw || sedrot_sw) reset_sedra (todayHeb.yy); first_weekday = day_of_week = (int) (todayAbs % 7L); while (todayAbs <= endAbs) { /* get the holidays for today */ returnedMask = getHebHolidays (todayHeb, &holip); sedra_today = sedraAllWeek_sw || (sedrot_sw && (day_of_week == SAT)); omer_today = printOmer_sw && (todayAbs >= beginOmer) && (todayAbs <= endOmer); holidays_today = holip && (!noHolidays_sw || (returnedMask & USER_EVENT)); molad_today = printMolad_sw && (day_of_week == SAT) && (todayHeb.dd >= 23 && todayHeb.dd <= 29) && (todayHeb.mm != ELUL); /* no birkat hachodesh before rosh hashana */ today_zemanim = 0; if (INCLUDE_TODAY(default_zemanim)) today_zemanim |= default_zemanim; if (candleLighting_sw) { if (day_of_week == FRI) today_zemanim |= ZMAN_CANDLES_BEFORE; else { if (returnedMask & LIGHT_CANDLES) today_zemanim |= (day_of_week == SAT) ? ZMAN_CANDLES_AFTER : ZMAN_CANDLES_BEFORE; else if ((returnedMask & LIGHT_CANDLES_TZEIS) && ! (returnedMask & YOM_TOV_ENDS)) today_zemanim |= ZMAN_CANDLES_AFTER; } if (!(today_zemanim & (ZMAN_CANDLES_BEFORE | ZMAN_CANDLES_AFTER)) && (day_of_week == SAT || returnedMask & YOM_TOV_ENDS)) today_zemanim |= ZMAN_HAVDALAH; if (!(today_zemanim & (ZMAN_CANDLES_BEFORE)) && (returnedMask & CHANUKAH_CANDLES)) today_zemanim |= ZMAN_CANDLES_AFTER; /* even if havdalah */ } if (INCLUDE_TODAY(printHebDates_sw) || ((printSomeHebDates_sw || printHebDates_sw) && (holidays_today || sedra_today || omer_today || (today_zemanim & (ZMAN_CANDLES_BEFORE|ZMAN_CANDLES_AFTER|ZMAN_HAVDALAH))))) { PrintGregDate (todayGreg); printf ("%d%s of %s, %d\n", todayHeb.dd, /* print the hebrew date */ numSuffix( todayHeb.dd ), _(hMonths[LEAP_YR_HEB( todayHeb.yy )][todayHeb.mm].name), todayHeb.yy); } if (printSunriseSunset_sw) { print_sunrise_sunset(todayGreg); } /* print the sedra, if desired */ if (sedra_today) { char sedraStr[40]; int foundSedra = sedra( todayAbs, sedraStr, 40 ); if (foundSedra) { PrintGregDate( todayGreg ); printf( "%s %s\n", _("Parashat"), sedraStr ); } } /* print today's holidays */ holi_start=holip; /* store the head of the list for freeing */ for (; holip; holip = holip->next) { if (!noHolidays_sw || (holip->typeMask & USER_EVENT)) { PrintGregDate( todayGreg ); puts( holip->name ); } } /* Print the Omer */ if (INCLUDE_TODAY(omer_today)) { initStr (&omerStr, NM_LEN); omer = (int) (todayAbs - beginOmer + 1L); if (!tabs_sw) { strncat (omerStr, hc_itoa (omer), NM_LEN); strncat (omerStr, numSuffix (omer), NM_LEN); strncat (omerStr, " day of the Omer", NM_LEN); } else { strncat (omerStr, "Omer: ", NM_LEN); strncat (omerStr, hc_itoa (omer), NM_LEN); } PrintGregDate (todayGreg); printf ("%s\n", omerStr); free( omerStr ); } if (INCLUDE_TODAY(dafYomi_sw)) hebcal_dafyomi(&todayGreg); /* Print CandleLighting times */ if (today_zemanim) { print_candlelighting_times (today_zemanim, day_of_week, todayGreg); } /* Print Molad */ if (molad_today) { PrintGregDate (todayGreg); monthNext = (todayHeb.mm == MONTHS_IN_HEB(todayHeb.yy) ? 1 : todayHeb.mm + 1); moladNext = get_molad(todayHeb.yy, monthNext); printf ("Molad %s: %s, %d minutes and %d chalakim after %d %s\n", hMonths[LEAP_YR_HEB(todayHeb.yy)][monthNext].name, ShortDayNames[dayOfWeek(abs2greg(moladNext.day))], (int) moladNext.chalakim / 18, moladNext.chalakim % 18, (moladNext.hour > 12 ? moladNext.hour - 12 : moladNext.hour), (moladNext.hour > 12 ? "PM" : "AM") ); } incHebGregDate (&todayHeb, &todayGreg, &todayAbs, &day_of_week, &theYear); # ifdef PLUG_LEAKS free_holidays(*holip); # endif } #undef INCLUDE_TODAY }
/* Start a new race. */ static void newrace(int index, tCarElt* car, tSituation *s) { total_tics[index]=0; /*********************************************************************************** ************************* UDP client identification ******************************** ***********************************************************************************/ bool identified=false; char line[UDP_MSGLEN]; // Set timeout if (getTimeout()>0) UDP_TIMEOUT = getTimeout(); //Set sensor range if (strcmp(getVersion(),"2009")==0) { __SENSORS_RANGE__ = 100; printf("*****2009*****\n"); } else if (strcmp(getVersion(),"2010")==0 || strcmp(getVersion(),"2011")==0) __SENSORS_RANGE__ = 200; else { printf("%s is not a recognized version",getVersion()); exit(0); } listenSocket[index] = socket(AF_INET, SOCK_DGRAM, 0); if (listenSocket[index] < 0) { std::cerr << "Error: cannot create listenSocket!"; exit(1); } srand(time(NULL)); // Bind listen socket to listen port. serverAddress[index].sin_family = AF_INET; serverAddress[index].sin_addr.s_addr = htonl(INADDR_ANY); serverAddress[index].sin_port = htons(getUDPListenPort()+index); if (bind(listenSocket[index], (struct sockaddr *) &serverAddress[index], sizeof(serverAddress[index])) < 0) { std::cerr << "cannot bind socket"; exit(1); } // Wait for connections from clients. listen(listenSocket[index], 5); std::cout << "Waiting for request on port " << getUDPListenPort()+index << "\n"; // Loop until a client identifies correctly while (!identified) { clientAddressLength[index] = sizeof(clientAddress[index]); // Set line to all zeroes memset(line, 0x0, UDP_MSGLEN); if (recvfrom(listenSocket[index], line, UDP_MSGLEN, 0, (struct sockaddr *) &clientAddress[index], &clientAddressLength[index]) < 0) { std::cerr << "Error: problem in receiving from the listen socket"; exit(1); } #ifdef __UDP_SERVER_VERBOSE__ // show the client's IP address std::cout << " from " << inet_ntoa(clientAddress[index].sin_addr); // show the client's port number. std::cout << ":" << ntohs(clientAddress[index].sin_port) << "\n"; // Show the line std::cout << " Received: " << line << "\n"; #endif // compare received string with the ID if (strncmp(line,UDP_ID,3)==0) { #ifdef __UDP_SERVER_VERBOSE__ std::cout << "IDENTIFIED" << std::endl; #endif std::string initStr(line); if (SimpleParser::parse(initStr,std::string("init"),trackSensAngle[index],19)==false) { for (int i = 0; i < 19; ++i) { trackSensAngle[index][i] =-90 + 10*i; } } // char line[UDP_MSGLEN]; sprintf(line,"***identified***"); // Sending the car state to the client if (sendto(listenSocket[index], line, strlen(line) + 1, 0, (struct sockaddr *) &clientAddress[index], sizeof(clientAddress[index])) < 0) std::cerr << "Error: cannot send identification message"; identified=true; } } focusSens[index] = new Sensors(car, 5);//ML for (int i = 0; i < 5; ++i) {//ML focusSens[index]->setSensor(i,(car->_focusCmd)+i-2,200);//ML }//ML // Initialization of track sensors trackSens[index] = new Sensors(car, 19); for (int i = 0; i < 19; ++i) { trackSens[index]->setSensor(i,trackSensAngle[index][i],__SENSORS_RANGE__); #ifdef __UDP_SERVER_VERBOSE__ std::cout << "Set Track Sensors " << i+1 << " at angle " << trackSensAngle[index][i] << std::endl; #endif } // Initialization of opponents sensors oppSens[index] = new ObstacleSensors(36, curTrack, car, s, __SENSORS_RANGE__); prevDist[index]=-1; }
bool SceneIO::processSceneRobot(rapidxml::xml_node<char>* sceneXMLNode, ScenePtr scene, const std::string& basePath ) { THROW_VR_EXCEPTION_IF(!sceneXMLNode, "NULL data in processSceneRobot"); // get name std::string robotName = processNameAttribute(sceneXMLNode,true); if (robotName.empty()) { THROW_VR_EXCEPTION("Please specify the name of the robot..."); return false; } std::string initStr("initconfig"); std::string initConfigName = processStringAttribute(initStr,sceneXMLNode,true); std::vector< RobotConfigPtr > configs; std::vector< std::vector< RobotConfig::Configuration > > configDefinitions; std::vector< std::string > configNames; Eigen::Matrix4f globalPose = Eigen::Matrix4f::Identity(); std::string fileName; rapidxml::xml_node<>* node = sceneXMLNode->first_node(); std::vector< rapidxml::xml_node<>* > rnsNodes; while (node) { std::string nodeName = getLowerCase(node->name()); if (nodeName == "file") { THROW_VR_EXCEPTION_IF(!fileName.empty(), "Multiple files defined in scene's robot tag '" << robotName << "'." << endl); fileName = processFileNode(node,basePath); } else if (nodeName == "configuration") { bool c*K = processConfigurationNodeList(node, configDefinitions, configNames); THROW_VR_EXCEPTION_IF(!c*K, "Invalid configuration defined in scene's robot tag '" << robotName << "'." << endl); } else if (nodeName == "globalpose") { processTransformNode(node, robotName, globalPose); } else if (nodeName == "robotnodeset") { rnsNodes.push_back(node); } else { THROW_VR_EXCEPTION("XML definition <" << nodeName << "> not supported in scene's Robot definition <" << robotName << ">." << endl); } node = node->next_sibling(); } // create & register robot THROW_VR_EXCEPTION_IF(fileName.empty(), "Missing file definition in scene's robot tag '" << robotName << "'." << endl); RobotPtr robot = RobotIO::loadRobot(fileName); THROW_VR_EXCEPTION_IF(!robot, "Invalid robot file in scene's robot tag '" << robotName << "'." << endl); robot->setGlobalPose(globalPose); scene->registerRobot(robot); // create & register node sets int rnsNr = 0; for (size_t i=0;i<rnsNodes.size();i++) { // registers rns to robot RobotNodeSetPtr r = processRobotNodeSet(rnsNodes[i], robot, robot->getRootNode()->getName(), rnsNr); THROW_VR_EXCEPTION_IF(!r, "Invalid RobotNodeSet definition " << endl); } // create & register configs THROW_VR_EXCEPTION_IF(configDefinitions.size()!=configNames.size(), "Invalid RobotConfig definitions " << endl); for (size_t i=0;i<configDefinitions.size();i++) { RobotConfigPtr rc(new RobotConfig(robot,configNames[i],configDefinitions[i])); scene->registerRobotConfig(robot,rc); } // process init config if (!initConfigName.empty()) { THROW_VR_EXCEPTION_IF(!scene->hasRobotConfig(robot,initConfigName), "Scene's robot tag '" << robotName << "' does not have the initConfig '" << initConfigName << "'." << endl); robot->setJointValues(scene->getRobotConfig(robot,initConfigName)); } return true; }