本文整理汇总了C++中json::back方法的典型用法代码示例。如果您正苦于以下问题:C++ json::back方法的具体用法?C++ json::back怎么用?C++ json::back使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类json
的用法示例。
在下文中一共展示了json::back方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: recurse_object
void recurse_object(const mxArray* in, json& obj)
{
// Go over all types
if (mxIsCell(in)) {
int N = mxGetNumberOfElements(in);
for (int a = 0; a < N; ++a) {
obj.emplace_back();
recurse_object(mxGetCell(in, a), obj.back());
}
} else if (mxIsStruct(in)) {
int M = mxGetNumberOfFields(in);
std::vector<const char*> fnames(M);
for (int b = 0; b < M; ++b)
fnames[b] = mxGetFieldNameByNumber(in, b);
int N = mxGetNumberOfElements(in);
for (int a = 0; a < N; ++a) {
json obj_;
for (int b = 0; b < M; ++b)
recurse_object(mxGetFieldByNumber(in, a, b), obj_[fnames[b]]);
if (N == 1)
obj = std::move(obj_);
else
obj.push_back(std::move(obj_));
}
} else if (mxIsChar(in)) {
obj = json::parse(mxArrayToString(in));
} else if (mxIsLogical(in)) {
int N = mxGetNumberOfElements(in);
const mxLogical* data = (const mxLogical*)mxGetData(in);
if (N == 1) {
obj = data[0] != 0;
} else {
for (int a = 0; a < N; ++a)
obj.push_back(data[a] != 0);
}
} else if (mxIsNumeric(in)) {
int N = mxGetNumberOfElements(in);
const void* data = (const void*)mxGetData(in);
switch (mxGetClassID(in)) {
case mxDOUBLE_CLASS:
if (N == 1) { obj = ((const double*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const double*)data)[a]); }
break;
case mxSINGLE_CLASS:
if (N == 1) { obj = ((const float*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const float*)data)[a]); }
break;
case mxUINT8_CLASS:
if (N == 1) { obj = ((const uint8_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const uint8_t*)data)[a]); }
break;
case mxINT8_CLASS:
if (N == 1) { obj = ((const int8_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const int8_t*)data)[a]); }
break;
case mxUINT16_CLASS:
if (N == 1) { obj = ((const uint16_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const uint16_t*)data)[a]); }
break;
case mxINT16_CLASS:
if (N == 1) { obj = ((const int16_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const int16_t*)data)[a]); }
break;
case mxUINT32_CLASS:
if (N == 1) { obj = ((const uint32_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const uint32_t*)data)[a]); }
break;
case mxINT32_CLASS:
if (N == 1) { obj = ((const int32_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const int32_t*)data)[a]); }
break;
case mxUINT64_CLASS:
if (N == 1) { obj = ((const uint64_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const uint64_t*)data)[a]); }
break;
case mxINT64_CLASS:
if (N == 1) { obj = ((const int64_t*)data)[0]; } else {
for (int a = 0; a < N; ++a) obj.push_back(((const int64_t*)data)[a]); }
break;
default:
mexErrMsgTxt("Unsupported type.");
break;
}
} else {
mexErrMsgTxt("Unrecognized type.");
}
}