本文整理汇总了C++中ConstString::find方法的典型用法代码示例。如果您正苦于以下问题:C++ ConstString::find方法的具体用法?C++ ConstString::find怎么用?C++ ConstString::find使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConstString
的用法示例。
在下文中一共展示了ConstString::find方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lookupCore
bool RosLookup::lookupCore(const ConstString& name) {
Bottle req, reply;
req.addString("lookupNode");
req.addString("dummy_id");
req.addString(name);
rpc(getRosCoreAddress(), "xmlrpc", req, reply, verbose);
if (reply.get(0).asInt()!=1) {
fprintf(stderr, "Failure: %s\n", reply.toString().c_str());
return false;
}
ConstString url = reply.get(2).asString();
ConstString::size_type break1 = url.find("://",0);
if (break1==ConstString::npos) {
fprintf(stderr, "url not understood: %s\n", url.c_str());
return false;
}
ConstString::size_type break2 = url.find(":",break1+3);
if (break2==ConstString::npos) {
fprintf(stderr, "url not understood: %s\n", url.c_str());
return false;
}
ConstString::size_type break3 = url.find("/",break2+1);
if (break3==ConstString::npos) {
fprintf(stderr, "url not understood: %s\n", url.c_str());
return false;
}
hostname = url.substr(break1+3,break2-break1-3);
Value vportnum;
vportnum.fromString(url.substr(break2+1,break3-break2-1).c_str());
portnum = vportnum.asInt();
if (verbose) printf("%s\n", reply.toString().c_str());
valid = (portnum!=0);
rpc(getRosCoreAddress(), "xmlrpc", req, reply, verbose);
return valid;
}
示例2: registerContact
Contact YarpNameSpace::registerContact(const Contact& contact) {
NameClient& nic = HELPER(this);
Contact address = nic.registerName(contact.getName().c_str(),
contact);
if (address.isValid()) {
NestedContact nc;
nc.fromString(address.getRegName().c_str());
ConstString cat = nc.getCategory();
if (nc.getNestedName()!="") {
//bool service = (cat.find("1") != ConstString::npos);
bool publish = (cat.find("+") != ConstString::npos);
bool subscribe = (cat.find("-") != ConstString::npos);
ContactStyle style;
Contact c1 = Contact::byName(nc.getFullName());
Contact c2 = Contact::byName(ConstString("topic:/") + nc.getNestedName());
if (subscribe) {
style.persistenceType = ContactStyle::END_WITH_TO_PORT;
connectPortToTopic(c2,c1,style);
}
if (publish) {
style.persistenceType = ContactStyle::END_WITH_FROM_PORT;
connectPortToTopic(c1,c2,style);
}
}
}
return address;
}
示例3: queryName
Contact NameServer::queryName(const ConstString& name) {
ConstString base = name;
ConstString pat = "";
if (name.find("/net=") == 0) {
size_t patStart = 5;
size_t patEnd = name.find('/',patStart);
if (patEnd>=patStart && patEnd!=ConstString::npos) {
pat = name.substr(patStart,patEnd-patStart);
base = name.substr(patEnd);
YARP_DEBUG(Logger::get(),ConstString("Special query form ") +
name + " (" + pat + "/" + base + ")");
}
}
NameRecord *rec = getNameRecord(base,false);
if (rec!=YARP_NULLPTR) {
if (pat!="") {
ConstString ip = rec->matchProp("ips",pat);
if (ip!="") {
SplitString sip(ip.c_str());
Contact c = rec->getAddress();
c.setHost(sip.get(0));
return c;
}
}
return rec->getAddress();
}
return Contact();
}
示例4: getSenderSpecifier
ConstString Protocol::getSenderSpecifier() {
Route r = getRoute();
// We pull the sender name from the route.
ConstString from = r.getFromName();
// But we need to add any qualifiers looking in the carrier
// name. Ideally, we wouldn't need to bundle that in with
// the sender name, but we do it for now in the name of
// backwards compatibility.
ConstString carrier = r.getCarrierName();
size_t start = carrier.find("+");
if (start!=String::npos) {
from += " (";
for (size_t i=start+1; i<(size_t)carrier.length(); i++) {
char ch = carrier[i];
if (ch=='+') {
from += ") (";
} else if (ch=='.') {
from += " ";
} else {
from += ch;
}
}
from += ")";
}
return from;
}
示例5: detectNameServer
Contact MultiNameSpace::detectNameServer(bool useDetectedServer,
bool& scanNeeded,
bool& serverUsed) {
// This code looks like a placeholder that never got replaced.
// It is using a heuristic that namespaces with "/ros" in the
// name are ros namespaces. There's no need for guesswork like
// that anymore. Also, code duplication. Should spin this
// off into a proper plugin mechanism for namespaces.
ConstString name = NetworkBase::getNameServerName();
Contact fake, r;
if (name.find("/ros")!=ConstString::npos) {
RosNameSpace ns(fake);
r = ns.detectNameServer(useDetectedServer,scanNeeded,serverUsed);
if (r.isValid()&&useDetectedServer&&scanNeeded) {
HELPER(this).activate(true);
}
} else {
YarpNameSpace ns(fake);
r = ns.detectNameServer(useDetectedServer,scanNeeded,serverUsed);
if (r.isValid()&&useDetectedServer&&scanNeeded) {
HELPER(this).activate(true);
}
}
return r;
}
示例6: run
void FallbackNameClient::run() {
NameConfig nc;
Contact call = FallbackNameServer::getAddress();
DgramTwoWayStream send;
send.join(call, true);
listen.join(call, false);
if (!listen.isOk()) {
YARP_ERROR(Logger::get(), ConstString("Multicast not available"));
return;
}
ConstString msg = ConstString("NAME_SERVER query ") + nc.getNamespace();
send.beginPacket();
send.writeLine(msg.c_str(), (int)msg.length());
send.flush();
send.endPacket();
for (int i=0; i<5; i++) {
listen.beginPacket();
ConstString txt = listen.readLine();
listen.endPacket();
if (closed) return;
YARP_DEBUG(Logger::get(), ConstString("Fallback name client got ") + txt);
if (txt.find("registration ")==0) {
address = NameClient::extractAddress(txt);
YARP_INFO(Logger::get(), ConstString("Received address ") +
address.toURI());
return;
}
}
}
示例7: ncmdList
Bottle NameServer::ncmdList(int argc, char *argv[]) {
Bottle response;
ConstString prefix = "";
if (argc==1) {
prefix = STR(argv[0]);
}
response.addString("ports");
for (PLATFORM_MAP(ConstString,NameRecord)::iterator it = nameMap.begin(); it!=nameMap.end(); it++) {
NameRecord& rec = PLATFORM_MAP_ITERATOR_SECOND(it);
ConstString iname = rec.getAddress().getRegName();
if (iname.find(prefix)==0) {
if (iname==prefix || iname[prefix.length()]=='/' ||
prefix[prefix.length()-1]=='/') {
if (rec.getAddress().isValid()) {
response.addList() = botify(rec.getAddress());
}
}
}
}
return response;
}
示例8: unregisterName
Contact YarpNameSpace::unregisterName(const ConstString& name) {
NestedContact nc;
nc.fromString(name);
ConstString cat = nc.getCategory();
if (nc.getNestedName()!="") {
//bool service = (cat.find("1") != ConstString::npos);
bool publish = (cat.find("+") != ConstString::npos);
bool subscribe = (cat.find("-") != ConstString::npos);
ContactStyle style;
Contact c1 = Contact::byName(nc.getFullName());
Contact c2 = Contact::byName(ConstString("topic:/") + nc.getNestedName());
if (subscribe) {
disconnectPortFromTopic(c2,c1,style);
}
if (publish) {
disconnectPortFromTopic(c1,c2,style);
}
}
NameClient& nic = HELPER(this);
return nic.unregisterName(name);
}
示例9: toRosName
ConstString RosNameSpace::toRosName(const ConstString& name) {
if (name.find(':')==ConstString::npos) return name;
ConstString result;
for (size_t i=0; i<name.length(); i++) {
if (name[i]!=':') {
result += name[i];
} else {
result += "__";
}
}
return result;
}
示例10: toDox
// helper method for "yarpdev" body
static void toDox(PolyDriver& dd, FILE *os) {
fprintf(os,"===============================================================\n");
fprintf(os,"== Options checked by device:\n== \n");
Bottle order = dd.getOptions();
for (int i=0; i<order.size(); i++) {
ConstString name = order.get(i).toString();
if (name=="wrapped"||(name.find(".wrapped")!=ConstString::npos)) {
continue;
}
ConstString desc = dd.getComment(name.c_str());
Value def = dd.getDefaultValue(name.c_str());
Value actual = dd.getValue(name.c_str());
ConstString out = "";
out += name;
if (!actual.isNull()) {
if (actual.toString()!="") {
out += "=";
if (actual.toString().length()<40) {
out += actual.toString().c_str();
} else {
out += "(value too long)";
}
}
}
if (!def.isNull()) {
if (def.toString()!="") {
out += " [";
if (def.toString().length()<40) {
out += def.toString().c_str();
} else {
out += "(value too long)";
}
out += "]";
}
}
if (desc!="") {
out += "\n ";
out += desc.c_str();
}
fprintf(os,"%s\n", out.c_str());
}
fprintf(os,"==\n");
fprintf(os,"===============================================================\n");
}
示例11: queryName
Contact RosNameSpace::queryName(const ConstString& name) {
dbg_printf("ROSNameSpace queryName(%s)\n", name.c_str());
NestedContact nc(name);
ConstString full = name;
ConstString node = nc.getNodeName();
ConstString srv = nc.getNestedName();
ConstString cat = nc.getCategory();
bool is_service = false;
Bottle cmd,reply;
if (cat.find("-1")==ConstString::npos) {
cmd.addString("lookupNode");
cmd.addString("dummy_id");
cmd.addString(toRosNodeName(node));
NetworkBase::write(getNameServerContact(),
cmd, reply);
}
Contact contact;
if (reply.get(0).asInt()!=1) {
cmd.clear();
reply.clear();
cmd.addString("lookupService");
cmd.addString("dummy_id");
cmd.addString(toRosNodeName(node));
NetworkBase::write(getNameServerContact(),
cmd, reply);
is_service = true;
}
contact = Contact::fromString(reply.get(2).asString());
// unfortunate differences in labeling carriers
if (contact.getCarrier()=="rosrpc") {
contact = contact.addCarrier(ConstString("rossrv+service.") + name);
} else {
contact = contact.addCarrier("xmlrpc");
}
contact = contact.addName(name);
if (srv == "" || !is_service) return contact;
return Contact();
}
示例12: fromRosName
ConstString RosNameSpace::fromRosName(const ConstString& name) {
if (name.find("__")==ConstString::npos) return name;
// length is at least 2
ConstString result;
int ct = 0;
for (size_t i=0; i<name.length(); i++) {
if (name[i]!='_') {
if (ct) result += '_';
result += name[i];
ct = 0;
} else {
ct++;
if (ct==2) {
result += ':';
ct = 0;
}
}
}
if (ct) result += '_';
return result;
}
示例13: cmdList
bool NameServiceOnTriples::cmdList(NameTripleState& act) {
if (!act.bottleMode) {
act.reply.addString("old");
} else {
act.reply.addString("ports");
}
lock();
Triple t;
t.setNameValue("port","*");
ConstString prefix = "";
if (act.cmd.size()>1) {
prefix = act.cmd.get(1).asString();
}
list<Triple> lst = act.mem.query(t, YARP_NULLPTR);
act.nestedMode = true;
for (list<Triple>::iterator it=lst.begin(); it!=lst.end(); it++) {
if (prefix=="") {
act.cmd.clear();
act.cmd.addString("query");
act.cmd.addString(it->value.c_str());
act.mem.reset();
cmdQuery(act,true);
} else {
ConstString iname = it->value.c_str();
if (iname.find(prefix)==0) {
if (iname==prefix || iname[prefix.length()]=='/' ||
prefix[prefix.length()-1]=='/') {
act.cmd.clear();
act.cmd.addString("query");
act.cmd.addString(iname);
act.mem.reset();
cmdQuery(act,true);
}
}
}
}
unlock();
return true;
}
示例14: main
int main(int argc, char *argv[]) {
Property p;
p.fromCommand(argc,argv);
// To make sure that the dev test are able to find all the devices
// compile by YARP, also the one compiled as dynamic plugins
// we add the build directory to the YARP_DATA_DIRS enviromental variable
// CMAKE_CURRENT_DIR is the define by the CMakeLists.txt tests file
ConstString dirs = CMAKE_BINARY_DIR +
yarp::os::Network::getDirectorySeparator() +
"share" +
yarp::os::Network::getDirectorySeparator() +
"yarp";
// Add TEST_DATA_DIR to YARP_DATA_DIRS in order to find the contexts used
// by the tests
dirs += yarp::os::Network::getPathSeparator() +
TEST_DATA_DIR;
// If set, append user YARP_DATA_DIRS
// FIXME check if this can be removed
Network::getEnvironment("YARP_DATA_DIRS");
if (!Network::getEnvironment("YARP_DATA_DIRS").empty()) {
dirs += yarp::os::Network::getPathSeparator() +
Network::getEnvironment("YARP_DATA_DIRS");
}
Network::setEnvironment("YARP_DATA_DIRS", dirs);
printf("YARP_DATA_DIRS=\"%s\"\n", Network::getEnvironment("YARP_DATA_DIRS").c_str());
// check where to put description of device
ConstString dest = "";
dest = p.check("doc",Value("")).toString();
ConstString fileName = p.check("file",Value("default.ini")).asString();
if (p.check("file")) {
p.fromConfigFile(fileName);
}
ConstString deviceName = p.check("device",Value("")).asString();
// if no device given, we should be operating a completely
// standard test harness like for libYARP_OS and libYARP_sig
if (deviceName=="") {
return harness_main(argc,argv);
}
// device name given - use special device testing procedure
#ifdef CHECK_FOR_LEAKS
mtrace();
#endif
int result = 0;
Network::init();
Network::setLocalMode(true);
ConstString seek = fileName.c_str();
ConstString exampleName = "";
int pos = seek.rfind('/');
if (pos==-1) {
pos = seek.rfind('\\');
}
if (pos==-1) {
pos = 0;
} else {
pos++;
}
int len = seek.find('.',pos);
if (len==-1) {
len = seek.length();
} else {
len -= pos;
}
exampleName = seek.substr(pos,len).c_str();
ConstString shortFileName = seek.substr(pos,seek.length()).c_str();
PolyDriver dd;
YARP_DEBUG(Logger::get(), "harness opening...");
bool ok = dd.open(p);
YARP_DEBUG(Logger::get(), "harness opened.");
result = ok?0:1;
ConstString wrapperName = "";
ConstString codeName = "";
DriverCreator *creator =
Drivers::factory().find(deviceName.c_str());
if (creator!=nullptr) {
wrapperName = creator->getWrapper();
codeName = creator->getCode();
}
if (dest!="") {
ConstString dest2 = dest.c_str();
if (result!=0) {
//.........这里部分代码省略.........
示例15: main
int main(int argc, char *argv[]) {
Property p;
p.fromCommand(argc,argv);
// check where to put description of device
ConstString dest = "";
dest = p.check("doc",Value("")).toString();
ConstString fileName = p.check("file",Value("default.ini")).asString();
if (p.check("file")) {
p.fromConfigFile(fileName);
}
ConstString deviceName = p.check("device",Value("")).asString();
// if no device given, we should be operating a completely
// standard test harness like for libYARP_OS and libYARP_sig
if (deviceName=="") {
return harness_main(argc,argv);
}
// device name given - use special device testing procedure
#ifdef CHECK_FOR_LEAKS
mtrace();
#endif
int result = 0;
Network::init();
Network::setLocalMode(true);
ConstString seek = fileName.c_str();
ConstString exampleName = "";
int pos = seek.rfind('/');
if (pos==-1) {
pos = seek.rfind('\\');
}
if (pos==-1) {
pos = 0;
} else {
pos++;
}
int len = seek.find('.',pos);
if (len==-1) {
len = seek.length();
} else {
len -= pos;
}
exampleName = seek.substr(pos,len).c_str();
ConstString shortFileName = seek.substr(pos,seek.length()).c_str();
PolyDriver dd;
YARP_DEBUG(Logger::get(), "harness opening...");
bool ok = dd.open(p);
YARP_DEBUG(Logger::get(), "harness opened.");
result = ok?0:1;
ConstString wrapperName = "";
ConstString codeName = "";
DriverCreator *creator =
Drivers::factory().find(deviceName.c_str());
if (creator!=NULL) {
wrapperName = creator->getWrapper();
codeName = creator->getCode();
}
if (dest!="") {
ConstString dest2 = dest.c_str();
if (result!=0) {
dest2 += ".fail";
}
FILE *fout = fopen(dest2.c_str(),"w");
if (fout==NULL) {
printf("Problem writing to %s\n", dest2.c_str());
yarp::os::exit(1);
}
fprintf(fout,"/**\n");
fprintf(fout," * \\ingroup dev_examples\n");
fprintf(fout," *\n");
fprintf(fout," * \\defgroup %s Example for %s (%s)\n\n",
exampleName.c_str(),
deviceName.c_str(),
exampleName.c_str());
fprintf(fout, "Instantiates \\ref cmd_device_%s \"%s\" device implemented by %s.\n",
deviceName.c_str(), deviceName.c_str(), codeName.c_str());
fprintf(fout, "\\verbatim\n%s\\endverbatim\n",
getFile(fileName.c_str()).c_str());
fprintf(fout, "If this text is saved in a file called %s then the device can be created by doing:\n",
shortFileName.c_str());
fprintf(fout, "\\verbatim\nyarpdev --file %s\n\\endverbatim\n",
shortFileName.c_str());
fprintf(fout, "Of course, the configuration could be passed just as command line options, or as a yarp::os::Property object in a program:\n");
fprintf(fout, "\\code\n");
fprintf(fout, "Property p;\n");
fprintf(fout, "p.fromConfigFile(\"%s\");\n",
//.........这里部分代码省略.........