本文整理汇总了C++中Any::beforeRead方法的典型用法代码示例。如果您正苦于以下问题:C++ Any::beforeRead方法的具体用法?C++ Any::beforeRead怎么用?C++ Any::beforeRead使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Any
的用法示例。
在下文中一共展示了Any::beforeRead方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: set
void Any::set(const std::string& k, const Any& v) {
beforeRead();
v.beforeRead();
verifyType(TABLE);
debugAssert(m_data != NULL);
Table<std::string, Any>& table = *(m_data->value.t);
table.set(k, v);
}
示例2:
bool Any::operator!=(const Any& x) const {
beforeRead();
x.beforeRead();
return !operator==(x);
}
示例3: switch
bool Any::operator==(const Any& x) const {
beforeRead();
x.beforeRead();
if (m_type != x.m_type) {
return false;
}
switch (m_type) {
case NONE:
return true;
case BOOLEAN:
return (m_simpleValue.b == x.m_simpleValue.b);
case NUMBER:
return (m_simpleValue.n == x.m_simpleValue.n);
case STRING:
debugAssert(m_data != NULL);
return (*(m_data->value.s) == *(x.m_data->value.s));
case TABLE: {
if (size() != x.size()) {
return false;
}
debugAssert(m_data != NULL);
if (m_data->name != x.m_data->name) {
return false;
}
Table<std::string, Any>& cmptable = *(m_data->value.t);
Table<std::string, Any>& xcmptable = *(x.m_data->value.t);
for (Table<std::string, Any>::Iterator it1 = cmptable.begin(), it2 = xcmptable.begin();
it1 != cmptable.end() && it2 != xcmptable.end();
++it1, ++it2) {
if (*it1 != *it2) {
return false;
}
}
return true;
}
case ARRAY: {
if (size() != x.size()) {
return false;
}
debugAssert(m_data != NULL);
if (m_data->name != x.m_data->name) {
return false;
}
Array<Any>& cmparray = *(m_data->value.a);
Array<Any>& xcmparray = *(x.m_data->value.a);
for (int ii = 0; ii < size(); ++ii) {
if (cmparray[ii] != xcmparray[ii]) {
return false;
}
}
return true;
}
default:
alwaysAssertM(false, "Unknown type.");
return false;
} // switch (m_type)
}