本文整理汇总了C++中CVariant::asDouble方法的典型用法代码示例。如果您正苦于以下问题:C++ CVariant::asDouble方法的具体用法?C++ CVariant::asDouble怎么用?C++ CVariant::asDouble使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CVariant
的用法示例。
在下文中一共展示了CVariant::asDouble方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InternalWrite
bool CJSONVariantWriter::InternalWrite(yajl_gen g, const CVariant &value)
{
bool success = false;
switch (value.type())
{
case CVariant::VariantTypeInteger:
success = yajl_gen_status_ok == yajl_gen_integer(g, (long long int)value.asInteger());
break;
case CVariant::VariantTypeUnsignedInteger:
success = yajl_gen_status_ok == yajl_gen_integer(g, (long long int)value.asUnsignedInteger());
break;
case CVariant::VariantTypeDouble:
success = yajl_gen_status_ok == yajl_gen_double(g, value.asDouble());
break;
case CVariant::VariantTypeBoolean:
success = yajl_gen_status_ok == yajl_gen_bool(g, value.asBoolean() ? 1 : 0);
break;
case CVariant::VariantTypeString:
success = yajl_gen_status_ok == yajl_gen_string(g, (const unsigned char*)value.c_str(), (size_t)value.size());
break;
case CVariant::VariantTypeArray:
success = yajl_gen_status_ok == yajl_gen_array_open(g);
for (CVariant::const_iterator_array itr = value.begin_array(); itr != value.end_array() && success; ++itr)
success &= InternalWrite(g, *itr);
if (success)
success = yajl_gen_status_ok == yajl_gen_array_close(g);
break;
case CVariant::VariantTypeObject:
success = yajl_gen_status_ok == yajl_gen_map_open(g);
for (CVariant::const_iterator_map itr = value.begin_map(); itr != value.end_map() && success; ++itr)
{
success &= yajl_gen_status_ok == yajl_gen_string(g, (const unsigned char*)itr->first.c_str(), (size_t)itr->first.length());
if (success)
success &= InternalWrite(g, itr->second);
}
if (success)
success &= yajl_gen_status_ok == yajl_gen_map_close(g);
break;
case CVariant::VariantTypeConstNull:
case CVariant::VariantTypeNull:
default:
success = yajl_gen_status_ok == yajl_gen_null(g);
break;
}
return success;
}
示例2: GetText
std::string CGUIControlSliderSetting::GetText(const CSettingControlSlider *control, const CVariant &value, const CVariant &minimum, const CVariant &step, const CVariant &maximum)
{
if (control == NULL ||
!(value.isInteger() || value.isDouble()))
return "";
SettingControlSliderFormatter formatter = control->GetFormatter();
if (formatter != NULL)
return formatter(control, value, minimum, step, maximum);
std::string formatString = control->GetFormatString();
if (control->GetFormatLabel() > -1)
formatString = g_localizeStrings.Get(control->GetFormatLabel());
if (value.isDouble())
return StringUtils::Format(formatString.c_str(), value.asDouble());
return StringUtils::Format(formatString.c_str(), static_cast<int>(value.asInteger()));
}
示例3: SetSettingValue
JSONRPC_STATUS CSettingsOperations::SetSettingValue(const std::string &method, ITransportLayer *transport, IClient *client, const CVariant ¶meterObject, CVariant &result)
{
std::string settingId = parameterObject["setting"].asString();
CVariant value = parameterObject["value"];
SettingPtr setting = CServiceBroker::GetSettings().GetSetting(settingId);
if (setting == NULL ||
!setting->IsVisible())
return InvalidParams;
switch (setting->GetType())
{
case SettingTypeBool:
if (!value.isBoolean())
return InvalidParams;
result = std::static_pointer_cast<CSettingBool>(setting)->SetValue(value.asBoolean());
break;
case SettingTypeInteger:
if (!value.isInteger() && !value.isUnsignedInteger())
return InvalidParams;
result = std::static_pointer_cast<CSettingInt>(setting)->SetValue((int)value.asInteger());
break;
case SettingTypeNumber:
if (!value.isDouble())
return InvalidParams;
result = std::static_pointer_cast<CSettingNumber>(setting)->SetValue(value.asDouble());
break;
case SettingTypeString:
if (!value.isString())
return InvalidParams;
result = std::static_pointer_cast<CSettingString>(setting)->SetValue(value.asString());
break;
case SettingTypeList:
{
if (!value.isArray())
return InvalidParams;
std::vector<CVariant> values;
for (CVariant::const_iterator_array itValue = value.begin_array(); itValue != value.end_array(); ++itValue)
values.push_back(*itValue);
result = CServiceBroker::GetSettings().SetList(settingId, values);
break;
}
case SettingTypeNone:
case SettingTypeAction:
default:
return InvalidParams;
}
return OK;
}
示例4:
TEST(TestUrlOptions, AddOption)
{
const char *keyChar = "char";
const char *keyString = "string";
const char *keyEmpty = "empty";
const char *keyInt = "int";
const char *keyFloat = "float";
const char *keyDouble = "double";
const char *keyBool = "bool";
const char *valueChar = "valueChar";
const std::string valueString = "valueString";
const char *valueEmpty = "";
int valueInt = 1;
float valueFloat = 1.0f;
double valueDouble = 1.0;
bool valueBool = true;
CVariant variantValue;
CUrlOptions urlOptions;
urlOptions.AddOption(keyChar, valueChar);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyChar, variantValue));
EXPECT_TRUE(variantValue.isString());
EXPECT_STREQ(valueChar, variantValue.asString().c_str());
}
urlOptions.AddOption(keyString, valueString);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyString, variantValue));
EXPECT_TRUE(variantValue.isString());
EXPECT_STREQ(valueString.c_str(), variantValue.asString().c_str());
}
urlOptions.AddOption(keyEmpty, valueEmpty);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyEmpty, variantValue));
EXPECT_TRUE(variantValue.isString());
EXPECT_STREQ(valueEmpty, variantValue.asString().c_str());
}
urlOptions.AddOption(keyInt, valueInt);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyInt, variantValue));
EXPECT_TRUE(variantValue.isInteger());
EXPECT_EQ(valueInt, (int)variantValue.asInteger());
}
urlOptions.AddOption(keyFloat, valueFloat);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyFloat, variantValue));
EXPECT_TRUE(variantValue.isDouble());
EXPECT_EQ(valueFloat, variantValue.asFloat());
}
urlOptions.AddOption(keyDouble, valueDouble);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyDouble, variantValue));
EXPECT_TRUE(variantValue.isDouble());
EXPECT_EQ(valueDouble, variantValue.asDouble());
}
urlOptions.AddOption(keyBool, valueBool);
{
CVariant variantValue;
EXPECT_TRUE(urlOptions.GetOption(keyBool, variantValue));
EXPECT_TRUE(variantValue.isBoolean());
EXPECT_EQ(valueBool, variantValue.asBoolean());
}
}