JsonValue JsonValue::read(const std::string &json, size_t &pos) { read_whitespace(json, pos); if (pos == json.length()) throw JsonException("Unexpected end of JSON data"); switch (json[pos]) { case '{': return read_object(json, pos); case '[': return read_array(json, pos); case '"': return read_string(json, pos); case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return read_number(json, pos); case 'f': case 't': return read_boolean(json, pos); default: throw JsonException("Unexpected character in JSON data"); } }
static bool read_data(int _iDatasetId, int _iItemPos, int *_piAddress, VarInfo* _pInfo) { bool bRet = false; _pInfo->iType = getScilabTypeFromDataSet(_iDatasetId); switch (_pInfo->iType) { case sci_matrix: { bRet = read_double(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_strings: { bRet = read_string(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_list: case sci_tlist: case sci_mlist: { bRet = read_list(_iDatasetId, _pInfo->iType, _iItemPos, _piAddress, _pInfo); break; } case sci_boolean: { bRet = read_boolean(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_poly: { bRet = read_poly(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_ints: { bRet = read_integer(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_sparse: { bRet = read_sparse(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_boolean_sparse: { bRet = read_boolean_sparse(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_void: //void item only on list variable { bRet = read_void(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } case sci_undefined: //undefined item only on list variable { bRet = read_undefined(_iDatasetId, _iItemPos, _piAddress, _pInfo); break; } default: { Scierror(999, _("%s: Invalid HDF5 Scilab format.\n"), "listvar_in_hdf5"); break; } } return bRet; }
static bool read_data(int dataset, VarInfo6& info) { bool bRet = false; char* ctype = getScilabTypeFromDataSet6(dataset); std::string type(ctype); FREE(ctype); info.ctype = type; if (type == g_SCILAB_CLASS_DOUBLE) { info.type = sci_matrix; return read_double(dataset, info); } if (type == g_SCILAB_CLASS_STRING) { info.type = sci_strings; return read_string(dataset, info); } if (type == g_SCILAB_CLASS_LIST) { info.type = sci_list; return read_list(dataset, info, "list"); } if (type == g_SCILAB_CLASS_TLIST) { info.type = sci_tlist; return read_list(dataset, info, "tlist"); } if (type == g_SCILAB_CLASS_MLIST) { info.type = sci_mlist; return read_list(dataset, info, "mlist"); } if (type == g_SCILAB_CLASS_BOOLEAN) { info.type = sci_boolean; return read_boolean(dataset, info); } if (type == g_SCILAB_CLASS_POLY) { info.type = sci_poly; return read_poly(dataset, info); } if (type == g_SCILAB_CLASS_INT) { info.type = sci_ints; return read_integer(dataset, info); } if (type == g_SCILAB_CLASS_SPARSE) { info.type = sci_sparse; return read_sparse(dataset, info); } if (type == g_SCILAB_CLASS_BSPARSE) { info.type = sci_boolean_sparse; return read_boolean_sparse(dataset, info); } if (type == g_SCILAB_CLASS_VOID) { info.type = sci_void; return read_void(dataset, info); } if (type == g_SCILAB_CLASS_UNDEFINED) { info.type = sci_undefined; return read_undefined(dataset, info); } if (type == g_SCILAB_CLASS_STRUCT) { info.type = sci_mlist; return read_struct(dataset, info); } if (type == g_SCILAB_CLASS_CELL) { info.type = sci_mlist; return read_cell(dataset, info); } if (type == g_SCILAB_CLASS_HANDLE) { info.type = sci_handles; return read_handles(dataset, info); } if (type == g_SCILAB_CLASS_MACRO) { info.type = sci_c_function; return read_macro(dataset, info); } Scierror(999, _("%s: Invalid HDF5 Scilab format.\n"), "listvar_in_hdf5"); return false; }