aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/YEngine
diff options
context:
space:
mode:
authorUbitUmarov2018-11-29 21:07:46 +0000
committerUbitUmarov2018-11-29 21:07:46 +0000
commitcc7a241cbc262b91362736201c1727cdcf35c542 (patch)
tree60435912bef34ef73880b76b925e1734a67b8963 /OpenSim/Region/ScriptEngine/YEngine
parentfix CopyInventoryFromNotecard error handling (diff)
downloadopensim-SC-cc7a241cbc262b91362736201c1727cdcf35c542.zip
opensim-SC-cc7a241cbc262b91362736201c1727cdcf35c542.tar.gz
opensim-SC-cc7a241cbc262b91362736201c1727cdcf35c542.tar.bz2
opensim-SC-cc7a241cbc262b91362736201c1727cdcf35c542.tar.xz
remove xmr json functions that where a fix for ossl ones now removed
Diffstat (limited to 'OpenSim/Region/ScriptEngine/YEngine')
-rw-r--r--OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs259
1 files changed, 0 insertions, 259 deletions
diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs
index 092d9c2..a440cf3 100644
--- a/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs
+++ b/OpenSim/Region/ScriptEngine/YEngine/XMRInstAbstract.cs
@@ -1163,265 +1163,6 @@ namespace OpenSim.Region.ScriptEngine.Yengine
1163 } 1163 }
1164 1164
1165 /** 1165 /**
1166 * @brief Implement osParseJSON() so we return an array to the script.
1167 * No coherent example of its use in scripts on web found.
1168 * see http://www.json.org/ for more details on JSON
1169 */
1170 private static LSL_List nullList = new LSL_List(new object[0]);
1171 public new XMR_Array osParseJSON(string json)
1172 {
1173 XMR_Array dict = new XMR_Array(this);
1174 int idx = ParseJSON(dict, nullList, json, 0);
1175 while(idx < json.Length)
1176 {
1177 if(json[idx] > ' ')
1178 throw new Exception("left-over json " + json);
1179 idx++;
1180 }
1181 return dict;
1182 }
1183
1184 private static int ParseJSON(XMR_Array dict, LSL_List keys, string json, int idx)
1185 {
1186 char c;
1187
1188 while((c = json[idx++]) <= ' ')
1189 {
1190 }
1191 switch(c)
1192 {
1193
1194 // '{' <keystring> ':' <value> [ ',' <keystring> ':' <value> ... ] '}'
1195 case '{':
1196 do
1197 {
1198 string key = ParseJSONString(json, ref idx);
1199 while((c = json[idx++]) <= ' ')
1200 {
1201 }
1202 if(c != ':')
1203 throw new Exception("missing : after key");
1204 idx = ParseJSON(dict, ParseJSONKeyAdd(keys, key), json, idx);
1205 while((c = json[idx++]) <= ' ')
1206 {
1207 }
1208 } while(c == ',');
1209 if(c != '}')
1210 throw new Exception("missing , or } after value");
1211 break;
1212
1213
1214 // '[' <value> [ ',' <value> ... ] ']'
1215 case '[':
1216 int index = 0;
1217 do
1218 {
1219 object key = index++;
1220 idx = ParseJSON(dict, ParseJSONKeyAdd(keys, key), json, idx);
1221 while((c = json[idx++]) <= ' ')
1222 {
1223 }
1224 } while(c == ',');
1225 if(c != ']')
1226 throw new Exception("missing , or ] after value");
1227 break;
1228
1229
1230 // '"'<string>'"'
1231 case '"':
1232 {
1233 --idx;
1234 string val = ParseJSONString(json, ref idx);
1235 dict.SetByKey(keys, val);
1236 break;
1237 }
1238 // true false null
1239 case 't':
1240 if(json.Substring(idx, 3) != "rue")
1241 throw new Exception("bad true in json");
1242 idx += 3;
1243 dict.SetByKey(keys, 1);
1244 break;
1245
1246 case 'f':
1247 if(json.Substring(idx, 4) != "alse")
1248 throw new Exception("bad false in json");
1249 idx += 4;
1250 dict.SetByKey(keys, 0);
1251 break;
1252
1253 case 'n':
1254 if(json.Substring(idx, 3) != "ull")
1255 throw new Exception("bad null in json");
1256 idx += 3;
1257 dict.SetByKey(keys, null);
1258 break;
1259
1260 // otherwise assume it's a number
1261 default:
1262 {
1263 --idx;
1264 object val = ParseJSONNumber(json, ref idx);
1265 dict.SetByKey(keys, val);
1266 break;
1267 }
1268 }
1269 return idx;
1270 }
1271
1272 // Given the key for a whole array, create a key for a given element of the array
1273 private static LSL_List ParseJSONKeyAdd(LSL_List oldkeys, object key)
1274 {
1275 int oldkeyslen = oldkeys.Length;
1276 object[] array = oldkeys.Data;
1277 Array.Resize<object>(ref array, oldkeyslen + 1);
1278 array[oldkeyslen] = key;
1279 return new LSL_List(array);
1280 }
1281
1282 // Parse out a JSON string
1283 private static string ParseJSONString(string json, ref int idx)
1284 {
1285 char c;
1286
1287 while((c = json[idx++]) <= ' ')
1288 {
1289 }
1290 if(c != '"')
1291 throw new Exception("bad start of json string");
1292
1293 StringBuilder sb = new StringBuilder();
1294 while((c = json[idx++]) != '"')
1295 {
1296 if(c == '\\')
1297 {
1298 c = json[idx++];
1299 switch(c)
1300 {
1301 case 'b':
1302 c = '\b';
1303 break;
1304
1305 case 'f':
1306 c = '\f';
1307 break;
1308
1309 case 'n':
1310 c = '\n';
1311 break;
1312
1313 case 'r':
1314 c = '\r';
1315 break;
1316
1317 case 't':
1318 c = '\t';
1319 break;
1320
1321 case 'u':
1322 c = (char)Int32.Parse(json.Substring(idx, 4),
1323 System.Globalization.NumberStyles.HexNumber);
1324 idx += 4;
1325 break;
1326
1327 default:
1328 break;
1329 }
1330 }
1331 sb.Append(c);
1332 }
1333 return sb.ToString();
1334 }
1335
1336 // Parse out a JSON number
1337 private static object ParseJSONNumber(string json, ref int idx)
1338 {
1339 char c;
1340
1341 while((c = json[idx++]) <= ' ')
1342 {
1343 }
1344
1345 bool expneg = false;
1346 bool isneg = false;
1347 int decpt = -1;
1348 int expon = 0;
1349 int ival = 0;
1350 double dval = 0;
1351
1352 if(c == '-')
1353 {
1354 isneg = true;
1355 c = json[idx++];
1356 }
1357 if((c < '0') || (c > '9'))
1358 throw new Exception("bad json number");
1359
1360 while((c >= '0') && (c <= '9'))
1361 {
1362 dval *= 10;
1363 ival *= 10;
1364 dval += c - '0';
1365 ival += c - '0';
1366 c = '\0';
1367 if(idx < json.Length)
1368 c = json[idx++];
1369 }
1370 if(c == '.')
1371 {
1372 decpt = 0;
1373 c = '\0';
1374 if(idx < json.Length)
1375 c = json[idx++];
1376 while((c >= '0') && (c <= '9'))
1377 {
1378 dval *= 10;
1379 dval += c - '0';
1380 decpt++;
1381 c = '\0';
1382 if(idx < json.Length)
1383 c = json[idx++];
1384 }
1385 }
1386 if((c == 'e') || (c == 'E'))
1387 {
1388 if(decpt < 0)
1389 decpt = 0;
1390 c = json[idx++];
1391 if(c == '-')
1392 expneg = true;
1393 if((c == '-') || (c == '+'))
1394 c = json[idx++];
1395 while((c >= '0') && (c <= '9'))
1396 {
1397 expon *= 10;
1398 expon += c - '0';
1399 c = '\0';
1400 if(idx < json.Length)
1401 c = json[idx++];
1402 }
1403 if(expneg)
1404 expon = -expon;
1405 }
1406
1407 if(c != 0)
1408 --idx;
1409 if(decpt < 0)
1410 {
1411 if(isneg)
1412 ival = -ival;
1413 return ival;
1414 }
1415 else
1416 {
1417 if(isneg)
1418 dval = -dval;
1419 dval *= Math.Pow(10, expon - decpt);
1420 return dval;
1421 }
1422 }
1423
1424 /**
1425 * @brief Exception-related runtime calls. 1166 * @brief Exception-related runtime calls.
1426 */ 1167 */
1427 // Return exception message (no type information just the message) 1168 // Return exception message (no type information just the message)