/// EmitLoadOfLValue - Given an RValue reference for a complex, emit code to /// load the real and imaginary pieces, returning them as Real/Imag. ComplexPairTy ComplexExprEmitter::EmitLoadOfLValue(LValue lvalue, SourceLocation loc) { assert(lvalue.isSimple() && "non-simple complex l-value?"); if (lvalue.getType()->isAtomicType()) return CGF.EmitAtomicLoad(lvalue, loc).getComplexVal(); Address SrcPtr = lvalue.getAddress(); bool isVolatile = lvalue.isVolatileQualified(); llvm::Value *Real = nullptr, *Imag = nullptr; if (!IgnoreReal || isVolatile) { Address RealP = CGF.emitAddrOfRealComponent(SrcPtr, lvalue.getType()); Real = Builder.CreateLoad(RealP, isVolatile, SrcPtr.getName() + ".real"); } if (!IgnoreImag || isVolatile) { Address ImagP = CGF.emitAddrOfImagComponent(SrcPtr, lvalue.getType()); Imag = Builder.CreateLoad(ImagP, isVolatile, SrcPtr.getName() + ".imag"); } return ComplexPairTy(Real, Imag); }
string RoutingCompiler_iosacl::PrintRule::_printRGtw(RoutingRule *rule) { FWObject *ref; RuleElementRGtw *gtwrel = rule->getRGtw(); ref = gtwrel->front(); Address *gtw = Address::cast(FWReference::cast(ref)->getPointer()); if (Interface::isA(gtw) && gtw->isChildOf(compiler->fw)) { // gateway is interface of this firewall. Generate command // ip route A.B.C.D N.N.N.N interface metric return gtw->getName() + " "; } string gateway = _printAddr(gtw); if (gateway != "default ") return gateway; else return " "; }
bool Port::open(const Contact& contact, bool registerName, const char *fakeName) { Contact contact2 = contact; if (!NetworkBase::initialized()) { YARP_ERROR(Logger::get(), "YARP not initialized; create a yarp::os::Network object before using ports"); return false; } ConstString n = contact2.getName(); if (n!="..." && n!="" && n[0]!='/') { if (fakeName==NULL) { YARP_SPRINTF1(Logger::get(),error, "Port name '%s' needs to start with a '/' character", n.c_str()); return false; } } if (n!="..." && n!="") { if (fakeName==NULL) { ConstString prefix = NetworkBase::getEnvironment("YARP_PORT_PREFIX"); if (prefix!="") { n = prefix + n; contact2 = contact2.addName(n); } } } // Allow for open() to be called safely many times on the same Port PortCoreAdapter *currentCore = &(HELPER(implementation)); if (currentCore->isOpened()) { PortCoreAdapter *newCore = new PortCoreAdapter(*this); YARP_ASSERT(newCore!=NULL); // copy state that should survive in a new open() if (currentCore->checkPortReader()!=NULL) { newCore->configReader(*(currentCore->checkPortReader())); } if (currentCore->checkReadCreator()!=NULL) { newCore->configReadCreator(*(currentCore->checkReadCreator())); } if (currentCore->checkWaitAfterSend()>=0) { newCore->configWaitAfterSend(currentCore->checkWaitAfterSend()); } close(); delete ((PortCoreAdapter*)implementation); implementation = newCore; } PortCoreAdapter& core = HELPER(implementation); core.openable(); bool local = false; if (NetworkBase::localNetworkAllocation()&&contact2.getPort()<=0) { YARP_DEBUG(Logger::get(),"local network allocation needed"); local = true; } bool success = true; Address caddress(contact2.getHost().c_str(), contact2.getPort(), contact2.getCarrier().c_str(), contact2.getName().c_str()); Address address = caddress; core.setReadHandler(core); if (contact2.getPort()>0 && contact2.getHost()!="") { registerName = false; } if (registerName&&!local) { Contact contactFull = NetworkBase::registerContact(contact2); address = Address::fromContact(contactFull); } core.setControlRegistration(registerName); success = (address.isValid()||local)&&(fakeName==NULL); ConstString blame = "invalid address"; if (success) { success = core.listen(address,registerName); blame = "address conflict"; if (success) { success = core.start(); blame = "manager did not start"; } } if (success) { address = core.getAddress(); if (registerName&&local) { contact2 = contact2.addSocket(address.getCarrierName().c_str(), address.getName().c_str(), address.getPort()); contact2 = contact2.addName(address.getRegName().c_str()); Contact newName = NetworkBase::registerContact(contact2); core.resetPortName(newName.getName()); address = core.getAddress(); } if (core.getVerbosity()>=1) { YARP_INFO(Logger::get(), String("Port ") + address.getRegName() + " active at " + address.toString()); } } if (fakeName!=NULL) { success = core.manualStart(fakeName); blame = "unmanaged port failed to start"; } if (!success) { YARP_ERROR(Logger::get(), String("Port ") + (address.isValid()?(address.getRegName().c_str()):(contact2.getName().c_str())) + " failed to activate" + (address.isValid()?" at ":"") + (address.isValid()?address.toString():String("")) + " (" + blame.c_str() + ")"); } return success; }
bool yarp::os::impl::HttpCarrier::expectSenderSpecifier(Protocol& proto) { proto.setRoute(proto.getRoute().addFromName("web")); String remainder = NetType::readLine(proto.is()); if (!urlDone) { for (unsigned int i=0; i<remainder.length(); i++) { if (remainder[i]!=' ') { url += remainder[i]; } else { break; } } } bool done = false; expectPost = false; contentLength = 0; while (!done) { String result = NetType::readLine(proto.is()); if (result == "") { done = true; } else { //printf(">>> %s\n", result.c_str()); Bottle b; b.fromString(result.c_str()); if (b.get(0).asString()=="Content-Length:") { //printf("]]] got length %d\n", b.get(1).asInt()); contentLength = b.get(1).asInt(); } if (b.get(0).asString()=="Content-Type:") { //printf("]]] got type %s\n", b.get(1).asString()); if (b.get(1).asString()=="application/x-www-form-urlencoded") { expectPost = true; } } } } if (expectPost) { //printf("[[[this is a post message of length %d]]]\n", contentLength); ManagedBytes blk(contentLength+1); Bytes start(blk.get(),contentLength); NetType::readFull(proto.is(),start); blk.get()[contentLength] = '\0'; //printf("message: %s\n", blk.get()); input = blk.get(); } else { //printf("message: %s\n", url.c_str()); input = url; } prop.fromQuery(input.c_str()); prop.put("REQUEST_URI",url.c_str()); //printf("Property %s\n",prop.toString().c_str()); Contact chome = NetworkBase::getNameServerContact(); Address home = Address::fromContact(chome); Address me = proto.getStreams().getLocalAddress(); String from = "<html><head><link href=\"http://"; from += home.getName(); from += ":"; from += NetType::toString(home.getPort()); from += "/web/main.css\" rel=\"stylesheet\" type=\"text/css\"/></head><body bgcolor='#ffffcc'><h1>yarp port "; from += proto.getRoute().getToName(); from += "</h1>\n"; from += "<p>(<a href=\"http://"; from += home.getName(); from += ":"; from += NetType::toString(home.getPort()); from += "/data=list\">All ports</a>) \n"; from += "(<a href=\"http://"; from += me.getName(); from += ":"; from += NetType::toString(me.getPort()); from += "/\">connections</a>) \n"; from += "(<a href=\"http://"; from += me.getName(); from += ":"; from += NetType::toString(me.getPort()); from += "/data=help\">help</a>) \n"; from += "(<a href=\"http://"; from += me.getName(); from += ":"; from += NetType::toString(me.getPort()); from += "/r\">read</a>) \n"; from += "</p>\n"; from += "<p>\n"; from += "<form method=\"post\" action=\"http://"; from += me.getName(); from += ":"; from += NetType::toString(me.getPort()); from += "/form\">"; prefix = from; //Bytes b2((char*)from.c_str(),from.length()); //proto.os().write(b2); //proto.os().flush(); // Message gets finished by the stream return proto.os().isOk(); }
void yarp::os::impl::HttpTwoWayStream::apply(char ch) { if (ch=='\r') { return; } if (ch == '\n') { proc = ""; Address addr = yarp::os::impl::NameClient::extractAddress(part); if (addr.isValid()) { if (addr.getCarrierName()=="tcp"&& (YARP_STRSTR(addr.getRegName(),"/quit")==String::npos)) { proc += "<a href=\"http://"; proc += addr.getName(); proc += ":"; proc += NetType::toString(addr.getPort()); proc += "\">"; proc += addr.getRegName(); proc += "</A> "; size_t len = addr.getRegName().length(); size_t target = 30; if (len<target) { for (size_t i=0; i<target-len; i++) { proc += " "; } } proc += "("; proc += addr.toString().c_str(); proc += ")"; proc += "\n"; } else { // Don't show non tcp connections //proc += part; //proc += "\n"; } } else { if ((part[0]=='\"'&&part[1]=='[')||(part[0]=='+')) { // translate this to a form if (part[0]=='+') { part[0] = ' '; } String org = part; part = "<p><form method=post action='/form'>"; size_t i=0; for (i=0; i<org.length(); i++) { if (org[i]=='"') { org[i] = ' '; } } part += "<input type=hidden name=data value=\""; part += org; part += "\">"; part += org; org += " "; bool arg = false; String var = ""; for (i=0; i<org.length(); i++) { char ch = org[i]; if (arg) { if ((ch>='A'&&ch<='Z')|| (ch>='a'&&ch<='z')|| (ch>='0'&&ch<='9')|| (ch=='_')) { var += ch; } else { arg = false; part += "\n "; part += var; part += " "; part += "<input type=text name="; part += var; part += " size=5 value=\"\">"; var = ""; } } if (ch=='$') { arg = true; } } part += "<input type=submit value=\"go\">"; part += "</form></p>"; } proc += part; proc += "\n"; } if (data||!filterData) { Bytes tmp((char*)proc.c_str(),proc.length()); delegate->getOutputStream().write(tmp); delegate->getOutputStream().flush(); } data = false; if (proc[0] == 'd' || proc[0] == 'D') { data = true; } part = ""; } else { part += ch; } }
Address CodeGenFunction::emitAddrOfImagComponent(Address addr, QualType complexType) { QualType eltType = complexType->castAs<ComplexType>()->getElementType(); CharUnits offset = getContext().getTypeSizeInChars(eltType); return Builder.CreateStructGEP(addr, 1, offset, addr.getName() + ".imagp"); }
Address CodeGenFunction::emitAddrOfRealComponent(Address addr, QualType complexType) { CharUnits offset = CharUnits::Zero(); return Builder.CreateStructGEP(addr, 0, offset, addr.getName() + ".realp"); }