void TExampleForMissing::resetExample() { checkProperty(dataDescription); DCs.clear(); DKs.clear(); float averageWeight=1; TVarList::const_iterator vi(domain->attributes->begin()), vie(domain->attributes->end()); TExample::iterator ei(begin()), bei(ei); vector<float>::const_iterator ai(dataDescription->averages.begin()), aei(dataDescription->averages.end()); for(; vi!=vie; ei++, vi++) { if ((*ei).isSpecial()) { if ((*vi)->varType==TValue::FLOATVAR) *ei=TValue(*ai); else if (dataDescription->missingWeight && (*ei).isDK()) { DKs.push_back(ei-bei); averageWeight/=float((*vi)->noOfValues()); } else DCs.push_back(ei-bei); (*vi)->firstValue(*ei); } if (ai!=aei) ai++; } if (dataDescription->missingWeight) { float weight = dataDescription->originalWeight ? getMeta(dataDescription->originalWeight).floatV : 1; if (dataDescription->domainDistributions) { TDomainDistributions::const_iterator di(dataDescription->domainDistributions->begin()); ITERATE(vector<int>, ci, DKs) { // DKs contain only discrete variables, so it is safe to cast const TDiscDistribution &dist = CAST_TO_DISCDISTRIBUTION(*(di+*ci)); if (dist.abs) weight *= dist.front() / dist.abs; } }
void nl80211::setup_family(boost::system::error_code& ec) { genetlink::message msg; msg.flags(netlink::message::request | netlink::message::ack); msg.command(genetlink::message::cmd_get_family); msg.version(1); msg.push_attr(genetlink::message::attr_family_name, "nl80211", 8); _gnl.send(msg.cbuffer()); size_t rbytes = _gnl.receive(boost::asio::buffer(_buffer)); for (netlink::message_iterator mit(_buffer, rbytes); mit; ++mit) { if (mit.type() == netlink::message::error) { ec = boost::system::error_code(mit.error(), boost::system::system_category()); return; } if (mit.type() == netlink::message::min_type) { genetlink::message rmsg(mit.get()); for (netlink::attribute_iterator ai(rmsg); ai; ++ai) { switch (ai.type()) { case genetlink::message::attr_family_id: _family = *ai.get<uint16>(); break; case genetlink::message::attr_family_name: BOOST_ASSERT(!strcmp(ai.get<const char>(), "nl80211")); break; case genetlink::message::attr_version: _version = *ai.get<uint32>(); break; case genetlink::message::attr_hdrsize: _hdrsize = *ai.get<uint32>(); break; case genetlink::message::attr_mcast_groups: for (netlink::attribute_iterator ali(rmsg, ai); ali; ++ali) { const char* name = nullptr; uint32 id = 0; for (netlink::attribute_iterator aei(rmsg, ali); aei; ++aei) { switch (aei.type()) { case genetlink::message::attr_mcast_name: name = aei.get<const char>(); break; case genetlink::message::attr_mcast_id: id = *aei.get<uint32>(); break; } } if (name && !strcmp(name, "mlme")) { _mlne_mcast_id = id; break; } } break; } } break; } } }