本文整理汇总了C++中empty函数的典型用法代码示例。如果您正苦于以下问题:C++ empty函数的具体用法?C++ empty怎么用?C++ empty使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了empty函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: empty
OGRGeometryCollection::~OGRGeometryCollection()
{
empty();
}
示例2: MoveIdle
void MotionMaster::MoveIdle()
{
if( empty() || !isStatic( top() ) )
push( &si_idleMovement );
}
示例3: Status
Status DatabasePlugin::call(const PluginRequest& request,
PluginResponse& response) {
if (request.count("action") == 0) {
return Status(1, "Database plugin must include a request action");
}
// Get a domain/key, which are used for most database plugin actions.
auto domain = (request.count("domain") > 0) ? request.at("domain") : "";
auto key = (request.count("key") > 0) ? request.at("key") : "";
if (request.at("action") == "reset") {
WriteLock lock(kDatabaseReset);
DatabasePlugin::kDBInitialized = false;
// Prevent RocksDB reentrancy by logger plugins during plugin setup.
VLOG(1) << "Resetting the database plugin: " << getName();
auto status = this->reset();
if (!status.ok()) {
// The active database could not be reset, fallback to an ephemeral.
Registry::get().setActive("database", "ephemeral");
LOG(WARNING) << "Unable to reset database plugin: " << getName();
}
DatabasePlugin::kDBInitialized = true;
return status;
}
// Switch over the possible database plugin actions.
ReadLock lock(kDatabaseReset);
if (request.at("action") == "get") {
std::string value;
auto status = this->get(domain, key, value);
response.push_back({{"v", value}});
return status;
} else if (request.at("action") == "put") {
if (request.count("value") == 0) {
return Status(1, "Database plugin put action requires a value");
}
return this->put(domain, key, request.at("value"));
} else if (request.at("action") == "remove") {
return this->remove(domain, key);
} else if (request.at("action") == "remove_range") {
auto key_high = (request.count("high") > 0) ? request.at("key_high") : "";
if (!key_high.empty() && !key.empty()) {
return this->removeRange(domain, key, key_high);
}
return Status(1, "Missing range");
} else if (request.at("action") == "scan") {
// Accumulate scanned keys into a vector.
std::vector<std::string> keys;
// Optionally allow the caller to request a max number of keys.
size_t max = 0;
if (request.count("max") > 0) {
max = std::stoul(request.at("max"));
}
auto status = this->scan(domain, keys, request.at("prefix"), max);
for (const auto& k : keys) {
response.push_back({{"k", k}});
}
return status;
}
return Status(1, "Unknown database plugin action");
}
示例4: urlObj
int SoapyRPCSocket::multicastJoin(const std::string &group, const bool loop, const int ttl, int iface)
{
/*
* Multicast join docs:
* http://www.tldp.org/HOWTO/Multicast-HOWTO-6.html
* http://www.tenouk.com/Module41c.html
*/
//lookup group url
SoapyURL urlObj(group);
SockAddrData addr;
const auto errorMsg = urlObj.toSockAddr(addr);
if (not errorMsg.empty())
{
this->reportError("getaddrinfo("+group+")", errorMsg);
return -1;
}
//create socket if null
if (this->null()) _sock = ::socket(addr.addr()->sa_family, SOCK_DGRAM, 0);
if (this->null()) return -1;
int ret = 0;
int loopInt = loop?1:0;
switch(addr.addr()->sa_family)
{
case AF_INET: {
//setup IP_MULTICAST_LOOP
ret = ::setsockopt(_sock, IPPROTO_IP, IP_MULTICAST_LOOP, (const char *)&loopInt, sizeof(loopInt));
if (ret != 0)
{
this->reportError("setsockopt(IP_MULTICAST_LOOP)");
return -1;
}
//setup IP_MULTICAST_TTL
ret = ::setsockopt(_sock, IPPROTO_IP, IP_MULTICAST_TTL, (const char *)&ttl, sizeof(ttl));
if (ret != 0)
{
this->reportError("setsockopt(IP_MULTICAST_TTL)");
return -1;
}
//setup IP_ADD_MEMBERSHIP
auto *addr_in = (const struct sockaddr_in *)addr.addr();
struct ip_mreq mreq;
mreq.imr_multiaddr = addr_in->sin_addr;
mreq.imr_interface.s_addr = INADDR_ANY;
ret = ::setsockopt(_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char *)&mreq, sizeof(mreq));
if (ret != 0)
{
this->reportError("setsockopt(IP_ADD_MEMBERSHIP)");
return -1;
}
break;
}
case AF_INET6: {
//setup IPV6_MULTICAST_LOOP
ret = ::setsockopt(_sock, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, (const char *)&loopInt, sizeof(loopInt));
if (ret != 0)
{
this->reportError("setsockopt(IPV6_MULTICAST_LOOP)");
return -1;
}
//setup IPV6_MULTICAST_HOPS
ret = ::setsockopt(_sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, (const char *)&ttl, sizeof(ttl));
if (ret != 0)
{
this->reportError("setsockopt(IPV6_MULTICAST_HOPS)");
return -1;
}
//setup IPV6_MULTICAST_IF
if (iface == 0) iface = getDefaultIfaceIndex();
if (iface != 0)
{
ret = ::setsockopt(_sock, IPPROTO_IPV6, IPV6_MULTICAST_IF, (const char *)&iface, sizeof(iface));
if (ret != 0)
{
this->reportError("setsockopt(IPV6_MULTICAST_IF)");
return -1;
}
}
//setup IPV6_ADD_MEMBERSHIP
auto *addr_in6 = (const struct sockaddr_in6 *)addr.addr();
struct ipv6_mreq mreq6;
mreq6.ipv6mr_multiaddr = addr_in6->sin6_addr;
mreq6.ipv6mr_interface = iface;
ret = ::setsockopt(_sock, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, (const char *)&mreq6, sizeof(mreq6));
if (ret != 0)
{
this->reportError("setsockopt(IPV6_ADD_MEMBERSHIP)");
return -1;
}
break;
//.........这里部分代码省略.........
示例5: assertx
SrcKey RegionDesc::start() const {
assertx(!empty());
return m_blocks[0]->start();
}
示例6: strncmp
req::ptr<File> HttpStreamWrapper::open(const String& filename,
const String& mode, int /*options*/,
const req::ptr<StreamContext>& context) {
if (RuntimeOption::ServerHttpSafeMode && !is_cli_mode()) {
return nullptr;
}
if (strncmp(filename.data(), "http://", sizeof("http://") - 1) &&
strncmp(filename.data(), "https://", sizeof("https://") - 1)) {
return nullptr;
}
Array headers;
String method = s_GET;
String post_data = null_string;
String proxy_host;
String proxy_user;
String proxy_pass;
int proxy_port = -1;
int max_redirs = 20;
int timeout = -1;
bool ignore_errors = false;
if (context && !context->getOptions().isNull() &&
!context->getOptions()[s_http].isNull()) {
Array opts = context->getOptions()[s_http].toArray();
if (opts.exists(s_method)) {
method = opts[s_method].toString();
}
if (opts.exists(s_header)) {
Array lines;
if (opts[s_header].isString()) {
lines = StringUtil::Explode(
opts[s_header].toString(), "\r\n").toArray();
} else if (opts[s_header].isArray()) {
lines = opts[s_header];
}
for (ArrayIter it(lines); it; ++it) {
Array parts = StringUtil::Explode(
it.second().toString(), ":", 2).toArray();
headers.set(parts.rvalAt(0).unboxed().tv(), parts.rvalAt(1).tv());
}
}
if (opts.exists(s_user_agent) && !headers.exists(s_User_Agent)) {
headers.set(s_User_Agent, opts[s_user_agent]);
}
if (opts.exists(s_max_redirects)) {
max_redirs = opts[s_max_redirects].toInt64();
}
if (opts.exists(s_timeout)) {
timeout = opts[s_timeout].toInt64();
}
if (opts.exists(s_ignore_errors)) {
ignore_errors = opts[s_ignore_errors].toBoolean();
}
if (opts.exists(s_proxy)) {
Variant host = f_parse_url(opts[s_proxy].toString(), k_PHP_URL_HOST);
Variant port = f_parse_url(opts[s_proxy].toString(), k_PHP_URL_PORT);
if (!same(host, false) && !same(port, false)) {
proxy_host = host.toString();
proxy_port = port.toInt64();
Variant user = f_parse_url(opts[s_proxy].toString(), k_PHP_URL_USER);
Variant pass = f_parse_url(opts[s_proxy].toString(), k_PHP_URL_PASS);
if (!same(user, false) && !same(pass, false)) {
proxy_user = user.toString();
proxy_pass = pass.toString();
}
}
}
post_data = opts[s_content].toString();
}
if (!headers.exists(s_User_Agent)) {
auto default_user_agent = ThreadInfo::s_threadInfo.getNoCheck()
->m_reqInjectionData.getUserAgent();
if (!default_user_agent.empty()) {
headers.set(s_User_Agent, default_user_agent);
}
}
auto file = req::make<UrlFile>(method.data(), headers,
post_data, max_redirs,
timeout, ignore_errors);
file->setStreamContext(context);
file->setProxy(proxy_host, proxy_port, proxy_user, proxy_pass);
bool ret = file->open(filename, mode);
if (!ret) {
raise_warning("Failed to open %s (%s)", filename.data(),
file->getLastError().c_str());
return nullptr;
}
return file;
}
示例7: StringToDimension
void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
{
int Seed = m_ChunkGenerator.GetSeed();
eDimension Dimension = StringToDimension(a_IniFile.GetValue("General", "Dimension", "Overworld"));
auto seaLevel = a_IniFile.GetValueI("Generator", "SeaLevel");
AString Finishers = a_IniFile.GetValueSet("Generator", "Finishers", "");
// Create all requested finishers:
AStringVector Str = StringSplitAndTrim(Finishers, ",");
for (AStringVector::const_iterator itr = Str.begin(); itr != Str.end(); ++itr)
{
auto split = StringSplitAndTrim(*itr, ":");
if (split.empty())
{
continue;
}
const auto & finisher = split[0];
// Finishers, alpha-sorted:
if (NoCaseCompare(finisher, "Animals") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenPassiveMobs(Seed, a_IniFile, Dimension)));
}
else if (NoCaseCompare(finisher, "BottomLava") == 0)
{
int DefaultBottomLavaLevel = (Dimension == dimNether) ? 30 : 10;
int BottomLavaLevel = a_IniFile.GetValueSetI("Generator", "BottomLavaLevel", DefaultBottomLavaLevel);
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenBottomLava(BottomLavaLevel)));
}
else if (NoCaseCompare(finisher, "DeadBushes") == 0)
{
// A list with all the allowed biomes.
cFinishGenSingleTopBlock::BiomeList AllowedBiomes;
AllowedBiomes.push_back(biDesert);
AllowedBiomes.push_back(biDesertHills);
AllowedBiomes.push_back(biDesertM);
AllowedBiomes.push_back(biMesa);
AllowedBiomes.push_back(biMesaBryce);
AllowedBiomes.push_back(biMesaPlateau);
AllowedBiomes.push_back(biMesaPlateauF);
AllowedBiomes.push_back(biMesaPlateauFM);
AllowedBiomes.push_back(biMesaPlateauM);
AllowedBiomes.push_back(biMegaTaiga);
// A list with all the allowed blocks that can be below the dead bush.
cFinishGenSingleTopBlock::BlockList AllowedBlocks;
AllowedBlocks.push_back(E_BLOCK_SAND);
AllowedBlocks.push_back(E_BLOCK_HARDENED_CLAY);
AllowedBlocks.push_back(E_BLOCK_STAINED_CLAY);
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenSingleTopBlock(Seed, E_BLOCK_DEAD_BUSH, AllowedBiomes, 2, AllowedBlocks)));
}
else if (NoCaseCompare(finisher, "DirectOverhangs") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cStructGenDirectOverhangs(Seed)));
}
else if (NoCaseCompare(finisher, "DirtPockets") == 0)
{
auto gen = std::make_shared<cFinishGenOrePockets>(Seed + 1, cFinishGenOrePockets::DefaultNaturalPatches());
if (gen->Initialize(a_IniFile, "DirtPockets"))
{
m_FinishGens.push_back(gen);
}
}
else if (NoCaseCompare(finisher, "DistortedMembraneOverhangs") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cStructGenDistortedMembraneOverhangs(Seed)));
}
else if (NoCaseCompare(finisher, "DualRidgeCaves") == 0)
{
float Threshold = static_cast<float>(a_IniFile.GetValueSetF("Generator", "DualRidgeCavesThreshold", 0.3));
m_FinishGens.push_back(cFinishGenPtr(new cStructGenDualRidgeCaves(Seed, Threshold)));
}
else if (NoCaseCompare(finisher, "DungeonRooms") == 0)
{
int GridSize = a_IniFile.GetValueSetI("Generator", "DungeonRoomsGridSize", 48);
int MaxSize = a_IniFile.GetValueSetI("Generator", "DungeonRoomsMaxSize", 7);
int MinSize = a_IniFile.GetValueSetI("Generator", "DungeonRoomsMinSize", 5);
AString HeightDistrib = a_IniFile.GetValueSet ("Generator", "DungeonRoomsHeightDistrib", "0, 0; 10, 10; 11, 500; 40, 500; 60, 40; 90, 1");
m_FinishGens.push_back(cFinishGenPtr(new cDungeonRoomsFinisher(m_ShapeGen, Seed, GridSize, MaxSize, MinSize, HeightDistrib)));
}
else if (NoCaseCompare(finisher, "GlowStone") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenGlowStone(Seed)));
}
else if (NoCaseCompare(finisher, "Ice") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenIce));
}
else if (NoCaseCompare(finisher, "LavaLakes") == 0)
{
int Probability = a_IniFile.GetValueSetI("Generator", "LavaLakesProbability", 10);
m_FinishGens.push_back(cFinishGenPtr(new cStructGenLakes(Seed * 5 + 16873, E_BLOCK_STATIONARY_LAVA, m_ShapeGen, Probability)));
}
else if (NoCaseCompare(finisher, "LavaSprings") == 0)
{
m_FinishGens.push_back(cFinishGenPtr(new cFinishGenFluidSprings(Seed, E_BLOCK_LAVA, a_IniFile, Dimension)));
}
else if (NoCaseCompare(finisher, "Lilypads") == 0)
{
//.........这里部分代码省略.........
示例8: getFilesOnDirectory
void CameraParameterReader::readParameters(const std::string& cameraParameterPath,
const std::vector<std::string>& serialNumbers)
{
try
{
// Serial numbers
if (serialNumbers.empty())
{
mSerialNumbers = getFilesOnDirectory(cameraParameterPath, "xml");
for (auto& serialNumber : mSerialNumbers)
serialNumber = getFileNameNoExtension(serialNumber);
}
else
mSerialNumbers = serialNumbers;
// Commong saving/loading
const auto dataFormat = DataFormat::Xml;
const std::vector<std::string> cvMatNames {
"CameraMatrix", "Intrinsics", "Distortion"
};
// Load parameters
mCameraMatrices.clear();
mCameraExtrinsics.clear();
mCameraIntrinsics.clear();
mCameraDistortions.clear();
// log("Camera matrices:");
for (auto i = 0ull ; i < mSerialNumbers.size() ; i++)
{
const auto parameterPath = cameraParameterPath + mSerialNumbers.at(i);
const auto cameraParameters = loadData(cvMatNames, parameterPath, dataFormat);
// Error if empty element
if (cameraParameters.empty() || cameraParameters.at(0).empty()
|| cameraParameters.at(1).empty() || cameraParameters.at(2).empty())
{
const std::string errorMessage = " of the camera with serial number `" + mSerialNumbers[i]
+ "` (file: " + parameterPath + "." + dataFormatToString(dataFormat)
+ "). Is its format valid? You might want to check the example xml"
+ " file.";
if (cameraParameters.empty())
error("Error at reading the camera parameters" + errorMessage,
__LINE__, __FUNCTION__, __FILE__);
if (cameraParameters.at(0).empty())
error("Error at reading the camera matrix parameters" + errorMessage,
__LINE__, __FUNCTION__, __FILE__);
if (cameraParameters.at(1).empty())
error("Error at reading the camera intrinsics parameters" + errorMessage,
__LINE__, __FUNCTION__, __FILE__);
if (cameraParameters.at(2).empty())
error("Error at reading the camera distortion parameters" + errorMessage,
__LINE__, __FUNCTION__, __FILE__);
}
mCameraExtrinsics.emplace_back(cameraParameters.at(0));
mCameraIntrinsics.emplace_back(cameraParameters.at(1));
mCameraDistortions.emplace_back(cameraParameters.at(2));
mCameraMatrices.emplace_back(mCameraIntrinsics.back() * mCameraExtrinsics.back());
// log(cameraParameters.at(0));
}
// // mCameraMatrices
// log("\nFull camera matrices:");
// for (const auto& cvMat : mCameraMatrices)
// log(cvMat);
// // mCameraIntrinsics
// log("\nCamera intrinsic parameters:");
// for (const auto& cvMat : mCameraIntrinsics)
// log(cvMat);
// // mCameraDistortions
// log("\nCamera distortion parameters:");
// for (const auto& cvMat : mCameraDistortions)
// log(cvMat);
}
catch (const std::exception& e)
{
error(e.what(), __LINE__, __FUNCTION__, __FILE__);
}
}
示例9: vpart_id
/**
* Reads in a vehicle part from a JsonObject.
*/
void vpart_info::load( JsonObject &jo, const std::string &src )
{
vpart_info def;
if( jo.has_string( "copy-from" ) ) {
auto const base = vpart_info_all.find( vpart_id( jo.get_string( "copy-from" ) ) );
auto const ab = abstract_parts.find( vpart_id( jo.get_string( "copy-from" ) ) );
if( base != vpart_info_all.end() ) {
def = base->second;
} else if( ab != abstract_parts.end() ) {
def = ab->second;
} else {
deferred.emplace_back( jo.str(), src );
return;
}
}
if( jo.has_string( "abstract" ) ) {
def.id = vpart_id( jo.get_string( "abstract" ) );
} else {
def.id = vpart_id( jo.get_string( "id" ) );
}
assign( jo, "name", def.name_ );
assign( jo, "item", def.item );
assign( jo, "location", def.location );
assign( jo, "durability", def.durability );
assign( jo, "damage_modifier", def.dmg_mod );
assign( jo, "power", def.power );
assign( jo, "epower", def.epower );
assign( jo, "fuel_type", def.fuel_type );
assign( jo, "default_ammo", def.default_ammo );
assign( jo, "folded_volume", def.folded_volume );
assign( jo, "size", def.size );
assign( jo, "difficulty", def.difficulty );
assign( jo, "bonus", def.bonus );
assign( jo, "flags", def.flags );
if( jo.has_member( "requirements" ) ) {
auto reqs = jo.get_object( "requirements" );
parse_vp_reqs( reqs, def.id.str(), "install", def.install_reqs, def.install_skills, def.install_moves );
parse_vp_reqs( reqs, def.id.str(), "removal", def.removal_reqs, def.removal_skills, def.removal_moves );
parse_vp_reqs( reqs, def.id.str(), "repair", def.repair_reqs, def.repair_skills, def.repair_moves );
def.legacy = false;
}
if( jo.has_member( "symbol" ) ) {
def.sym = jo.get_string( "symbol" )[ 0 ];
}
if( jo.has_member( "broken_symbol" ) ) {
def.sym_broken = jo.get_string( "broken_symbol" )[ 0 ];
}
if( jo.has_member( "color" ) ) {
def.color = color_from_string( jo.get_string( "color" ) );
}
if( jo.has_member( "broken_color" ) ) {
def.color_broken = color_from_string( jo.get_string( "broken_color" ) );
}
if( jo.has_member( "breaks_into" ) ) {
JsonIn& stream = *jo.get_raw( "breaks_into" );
def.breaks_into_group = item_group::load_item_group( stream, "collection" );
}
auto qual = jo.get_array( "qualities" );
if( !qual.empty() ) {
def.qualities.clear();
while( qual.has_more() ) {
auto pair = qual.next_array();
def.qualities[ quality_id( pair.get_string( 0 ) ) ] = pair.get_int( 1 );
}
}
if( jo.has_member( "damage_reduction" ) ) {
JsonObject dred = jo.get_object( "damage_reduction" );
def.damage_reduction = load_damage_array( dred );
} else {
def.damage_reduction.fill( 0.0f );
}
if( jo.has_string( "abstract" ) ) {
abstract_parts[def.id] = def;
} else {
vpart_info_all[def.id] = def;
}
}
示例10: Error
//.........这里部分代码省略.........
if (this->glcontext == nullptr) {
throw Error(MSG(err) << "Failed creating OpenGL context: " << SDL_GetError());
}
// check the OpenGL version, for shaders n stuff
if (!epoxy_is_desktop_gl() || epoxy_gl_version() < 21) {
throw Error(MSG(err) << "OpenGL 2.1 not available");
}
// to quote the standard doc:
// 'The value gives a rough estimate
// of the largest texture that the GL can handle'
// -> wat?
// anyways, we need at least 1024x1024.
int max_texture_size;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_texture_size);
log::log(MSG(dbg) << "Maximum supported texture size: " << max_texture_size);
if (max_texture_size < 1024) {
throw Error(MSG(err) << "Maximum supported texture size too small: " << max_texture_size);
}
int max_texture_units;
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &max_texture_units);
log::log(MSG(dbg) << "Maximum supported texture units: " << max_texture_units);
if (max_texture_units < 2) {
throw Error(MSG(err) << "Your GPU has too less texture units: " << max_texture_units);
}
// vsync on
SDL_GL_SetSwapInterval(1);
// enable alpha blending
glEnable(GL_BLEND);
// order of drawing relevant for depth
// what gets drawn last is displayed on top.
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// initialize job manager with cpucount-2 worker threads
int number_of_worker_threads = SDL_GetCPUCount() - 2;
if (number_of_worker_threads <= 0) {
number_of_worker_threads = 1;
}
this->job_manager = new job::JobManager{number_of_worker_threads};
// initialize audio
auto devices = audio::AudioManager::get_devices();
if (devices.empty()) {
throw Error{MSG(err) << "No audio devices found"};
}
// initialize engine related global keybinds
auto &global_input_context = this->get_input_manager().get_global_context();
global_input_context.bind(input::action_t::STOP_GAME, [this](const input::action_arg_t &) {
this->stop();
});
global_input_context.bind(input::action_t::TOGGLE_HUD, [this](const input::action_arg_t &) {
this->drawing_huds.value = !this->drawing_huds.value;
});
global_input_context.bind(input::action_t::SCREENSHOT, [this](const input::action_arg_t &) {
this->get_screenshot_manager().save_screenshot();
});
global_input_context.bind(input::action_t::TOGGLE_DEBUG_OVERLAY, [this](const input::action_arg_t &) {
this->drawing_debug_overlay.value = !this->drawing_debug_overlay.value;
});
global_input_context.bind(input::action_t::TOGGLE_PROFILER, [this](const input::action_arg_t &) {
if (this->external_profiler.currently_profiling) {
this->external_profiler.stop();
this->external_profiler.show_results();
} else {
this->external_profiler.start();
}
});
global_input_context.bind(input::event_class::MOUSE, [this](const input::action_arg_t &arg) {
if (arg.e.cc.has_class(input::event_class::MOUSE_MOTION) &&
this->get_input_manager().is_down(input::event_class::MOUSE_BUTTON, 2)) {
this->move_phys_camera(arg.motion.x, arg.motion.y);
return true;
}
return false;
});
// Switching between players with the 1-8 keys
auto bind_player_switch = [this, &global_input_context](input::action_t action, int player) {
global_input_context.bind(action, [this, player](const input::action_arg_t &) {
this->current_player.value = player;
});
};
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_1, 1);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_2, 2);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_3, 3);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_4, 4);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_5, 5);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_6, 6);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_7, 7);
bind_player_switch(input::action_t::SWITCH_TO_PLAYER_8, 8);
}
示例11: UpdateFinalDistanceToTarget
void MotionMaster::UpdateFinalDistanceToTarget(float fDistance)
{
if (!empty())
top()->UpdateFinalDistance(fDistance);
}
示例12: MakeFunctionNameStandOut
static std::string MakeFunctionNameStandOut(std::string origName)
{
try // guard against exception, since this is used for exception reporting
{
auto name = origName;
// strip off modifiers for parsing (will be put back at the end)
std::string modifiers;
auto pos = name.find_last_not_of(" abcdefghijklmnopqrstuvwxyz");
if (pos != std::string::npos)
{
modifiers = name.substr(pos + 1);
name = name.substr(0, pos + 1);
}
bool hasArgList = !name.empty() && name.back() == ')';
size_t angleDepth = 0;
size_t parenDepth = 0;
bool hitEnd = !hasArgList; // hit end of function name already?
bool hitStart = false;
// we parse the function name from the end; escape nested <> and ()
// We look for the end and start of the function name itself (without namespace qualifiers),
// and for commas separating function arguments.
for (size_t i = name.size(); i--> 0;)
{
// account for nested <> and ()
if (name[i] == '>')
angleDepth++;
else if (name[i] == '<')
angleDepth--;
else if (name[i] == ')')
parenDepth++;
else if (name[i] == '(')
parenDepth--;
// space before '>'
if (name[i] == ' ' && i + 1 < name.size() && name[i + 1] == '>')
name.erase(i, 1); // remove
// commas
if (name[i] == ',')
{
if (i + 1 < name.size() && name[i + 1] == ' ')
name.erase(i + 1, 1); // remove spaces after comma
if (!hitEnd && angleDepth == 0 && parenDepth == 1)
name.insert(i + 1, " "); // except for top-level arguments, we separate them by 2 spaces for better readability
}
// function name
if ((name[i] == '(' || name[i] == '<') &&
parenDepth == 0 && angleDepth == 0 &&
(i == 0 || name[i - 1] != '>') &&
!hitEnd && !hitStart) // we hit the start of the argument list
{
hitEnd = true;
name.insert(i, " ");
}
else if ((name[i] == ' ' || name[i] == ':' || name[i] == '>') && hitEnd && !hitStart && i > 0) // we hit the start of the function name
{
if (name[i] != ' ')
name.insert(i + 1, " ");
name.insert(i + 1, " "); // in total insert 2 spaces
hitStart = true;
}
}
return name + modifiers;
}
catch (...)
{
return origName;
}
}
示例13: __CS_cs
void *t1(void *arg)
{
int value;
int i;
__CS_cs();
if (__CS_ret != 0) return 0;
__CS_pthread_mutex_lock(&m[__CS_round]);
__CS_cs();
if (__CS_ret != 0) return 0;
value = nondet_int();
__CS_cs();
if (__CS_ret != 0) return 0;
if (enqueue(&queue[__CS_round], value))
{
__CS_cs();
if (__CS_ret != 0) return 0;
goto __CS_ERROR;
__CS_cs();
if (__CS_ret != 0) return 0;
}
__CS_cs();
if (__CS_ret != 0) return 0;
stored_elements[__CS_round][0] = value;
__CS_cs();
if (__CS_ret != 0) return 0;
if (empty(&queue[__CS_round]))
{
__CS_cs();
if (__CS_ret != 0) return 0;
goto __CS_ERROR;
__CS_cs();
if (__CS_ret != 0) return 0;
}
__CS_cs();
if (__CS_ret != 0) return 0;
__CS_pthread_mutex_unlock(&m[__CS_round]);
__CS_cs();
if (__CS_ret != 0) return 0;
for (i = 0; i < (20 - 1); i++)
{
__CS_cs();
if (__CS_ret != 0) return 0;
__CS_pthread_mutex_lock(&m[__CS_round]);
__CS_cs();
if (__CS_ret != 0) return 0;
if (enqueue_flag[__CS_round])
{
__CS_cs();
if (__CS_ret != 0) return 0;
value = nondet_int();
__CS_cs();
if (__CS_ret != 0) return 0;
enqueue(&queue[__CS_round], value);
__CS_cs();
if (__CS_ret != 0) return 0;
stored_elements[__CS_round][i + 1] = value;
__CS_cs();
if (__CS_ret != 0) return 0;
enqueue_flag[__CS_round] = 0;
__CS_cs();
if (__CS_ret != 0) return 0;
dequeue_flag[__CS_round] = 1;
__CS_cs();
if (__CS_ret != 0) return 0;
}
__CS_cs();
if (__CS_ret != 0) return 0;
__CS_pthread_mutex_unlock(&m[__CS_round]);
__CS_cs();
if (__CS_ret != 0) return 0;
}
__CS_cs();
if (__CS_ret != 0) return 0;
return 0;
__CS_cs();
if (__CS_ret != 0) return 0;
__CS_ERROR:
__CS_error = 1;
__CS_ret = __CS_ret_ERROR;
return 0;
__CS_cs();
if (__CS_ret != 0) return 0;
;
__CS_cs();
if (__CS_ret != 0) return 0;
}
示例14: TEST_F
TEST_F(TestHelpText, Application)
{
qi::Application app(argc, argv);
const auto helpText = app.helpText();
EXPECT_FALSE(helpText.empty());
}
示例15: OGRWktReadToken
OGRErr OGRPoint::importFromWkt( char ** ppszInput )
{
char szToken[OGR_WKT_TOKEN_MAX];
const char *pszInput = *ppszInput;
/* -------------------------------------------------------------------- */
/* Read and verify the ``POINT'' keyword token. */
/* -------------------------------------------------------------------- */
pszInput = OGRWktReadToken( pszInput, szToken );
if( !EQUAL(szToken,"POINT") )
return OGRERR_CORRUPT_DATA;
/* -------------------------------------------------------------------- */
/* Check for EMPTY ... but treat like a point at 0,0. */
/* -------------------------------------------------------------------- */
const char *pszPreScan;
pszPreScan = OGRWktReadToken( pszInput, szToken );
if( !EQUAL(szToken,"(") )
return OGRERR_CORRUPT_DATA;
pszPreScan = OGRWktReadToken( pszPreScan, szToken );
if( EQUAL(szToken,"EMPTY") )
{
pszInput = OGRWktReadToken( pszPreScan, szToken );
if( !EQUAL(szToken,")") )
return OGRERR_CORRUPT_DATA;
else
{
*ppszInput = (char *) pszInput;
empty();
return OGRERR_NONE;
}
}
/* -------------------------------------------------------------------- */
/* Read the point list which should consist of exactly one point. */
/* -------------------------------------------------------------------- */
OGRRawPoint *poPoints = NULL;
double *padfZ = NULL;
int nMaxPoint = 0, nPoints = 0;
pszInput = OGRWktReadPoints( pszInput, &poPoints, &padfZ,
&nMaxPoint, &nPoints );
if( pszInput == NULL || nPoints != 1 )
return OGRERR_CORRUPT_DATA;
x = poPoints[0].x;
y = poPoints[0].y;
CPLFree( poPoints );
if( padfZ != NULL )
{
z = padfZ[0];
CPLFree( padfZ );
}
*ppszInput = (char *) pszInput;
return OGRERR_NONE;
}