Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RefineSimpleType()

XmlQualifiedName System.Xml.Schema.XmlSchemaInference.RefineSimpleType ( string s,
ref int iTypeFlags )
inlinepackage

Definition at line 1215 of file XmlSchemaInference.cs.

1216 {
1217 bool bNeedsRangeCheck = false;
1218 s = s.Trim();
1219 if (iTypeFlags == 262144 || _typeInference == InferenceOption.Relaxed)
1220 {
1221 return ST_string;
1222 }
1224 if (iTypeFlags == 262144)
1225 {
1226 return ST_string;
1227 }
1228 if (bNeedsRangeCheck)
1229 {
1230 if (((uint)iTypeFlags & 2u) != 0)
1231 {
1232 try
1233 {
1234 XmlConvert.ToSByte(s);
1235 if (((uint)iTypeFlags & 4u) != 0)
1236 {
1237 return ST_unsignedByte;
1238 }
1239 return ST_byte;
1240 }
1241 catch (FormatException)
1242 {
1243 }
1244 catch (OverflowException)
1245 {
1246 }
1247 iTypeFlags &= -3;
1248 }
1249 if (((uint)iTypeFlags & 4u) != 0)
1250 {
1251 try
1252 {
1253 XmlConvert.ToByte(s);
1254 return ST_unsignedByte;
1255 }
1256 catch (FormatException)
1257 {
1258 }
1259 catch (OverflowException)
1260 {
1261 }
1262 iTypeFlags &= -5;
1263 }
1264 if (((uint)iTypeFlags & 8u) != 0)
1265 {
1266 try
1267 {
1268 XmlConvert.ToInt16(s);
1269 if (((uint)iTypeFlags & 0x10u) != 0)
1270 {
1271 return ST_unsignedShort;
1272 }
1273 return ST_short;
1274 }
1275 catch (FormatException)
1276 {
1277 }
1278 catch (OverflowException)
1279 {
1280 }
1281 iTypeFlags &= -9;
1282 }
1283 if (((uint)iTypeFlags & 0x10u) != 0)
1284 {
1285 try
1286 {
1287 XmlConvert.ToUInt16(s);
1288 return ST_unsignedShort;
1289 }
1290 catch (FormatException)
1291 {
1292 }
1293 catch (OverflowException)
1294 {
1295 }
1296 iTypeFlags &= -17;
1297 }
1298 if (((uint)iTypeFlags & 0x20u) != 0)
1299 {
1300 try
1301 {
1302 XmlConvert.ToInt32(s);
1303 if (((uint)iTypeFlags & 0x40u) != 0)
1304 {
1305 return ST_unsignedInt;
1306 }
1307 return ST_int;
1308 }
1309 catch (FormatException)
1310 {
1311 }
1312 catch (OverflowException)
1313 {
1314 }
1315 iTypeFlags &= -33;
1316 }
1317 if (((uint)iTypeFlags & 0x40u) != 0)
1318 {
1319 try
1320 {
1321 XmlConvert.ToUInt32(s);
1322 return ST_unsignedInt;
1323 }
1324 catch (FormatException)
1325 {
1326 }
1327 catch (OverflowException)
1328 {
1329 }
1330 iTypeFlags &= -65;
1331 }
1332 if (((uint)iTypeFlags & 0x80u) != 0)
1333 {
1334 try
1335 {
1336 XmlConvert.ToInt64(s);
1337 if (((uint)iTypeFlags & 0x100u) != 0)
1338 {
1339 return ST_unsignedLong;
1340 }
1341 return ST_long;
1342 }
1343 catch (FormatException)
1344 {
1345 }
1346 catch (OverflowException)
1347 {
1348 }
1349 iTypeFlags &= -129;
1350 }
1351 if (((uint)iTypeFlags & 0x100u) != 0)
1352 {
1353 try
1354 {
1355 XmlConvert.ToUInt64(s);
1356 return ST_unsignedLong;
1357 }
1358 catch (FormatException)
1359 {
1360 }
1361 catch (OverflowException)
1362 {
1363 }
1364 iTypeFlags &= -257;
1365 }
1366 if (((uint)iTypeFlags & 0x1000u) != 0)
1367 {
1368 try
1369 {
1370 double num = XmlConvert.ToDouble(s);
1371 if (((uint)iTypeFlags & 0x200u) != 0)
1372 {
1373 return ST_integer;
1374 }
1375 if (((uint)iTypeFlags & 0x400u) != 0)
1376 {
1377 return ST_decimal;
1378 }
1379 if (((uint)iTypeFlags & 0x800u) != 0)
1380 {
1381 try
1382 {
1383 float num2 = XmlConvert.ToSingle(s);
1384 if (string.Equals(XmlConvert.ToString(num2), XmlConvert.ToString(num), StringComparison.OrdinalIgnoreCase))
1385 {
1386 return ST_float;
1387 }
1388 }
1389 catch (FormatException)
1390 {
1391 }
1392 catch (OverflowException)
1393 {
1394 }
1395 }
1396 iTypeFlags &= -2049;
1397 return ST_double;
1398 }
1399 catch (FormatException)
1400 {
1401 }
1402 catch (OverflowException)
1403 {
1404 }
1405 iTypeFlags &= -4097;
1406 }
1407 if (((uint)iTypeFlags & 0x800u) != 0)
1408 {
1409 try
1410 {
1411 XmlConvert.ToSingle(s);
1412 if (((uint)iTypeFlags & 0x200u) != 0)
1413 {
1414 return ST_integer;
1415 }
1416 if (((uint)iTypeFlags & 0x400u) != 0)
1417 {
1418 return ST_decimal;
1419 }
1420 return ST_float;
1421 }
1422 catch (FormatException)
1423 {
1424 }
1425 catch (OverflowException)
1426 {
1427 }
1428 iTypeFlags &= -2049;
1429 }
1430 if (((uint)iTypeFlags & 0x200u) != 0)
1431 {
1432 return ST_integer;
1433 }
1434 if (((uint)iTypeFlags & 0x400u) != 0)
1435 {
1436 return ST_decimal;
1437 }
1438 if (iTypeFlags == 393216)
1439 {
1440 try
1441 {
1442 XmlConvert.ToDateTime(s, XmlDateTimeSerializationMode.RoundtripKind);
1443 return ST_gYearMonth;
1444 }
1445 catch (FormatException)
1446 {
1447 }
1448 catch (OverflowException)
1449 {
1450 }
1451 iTypeFlags = 262144;
1452 return ST_string;
1453 }
1454 if (iTypeFlags == 270336)
1455 {
1456 try
1457 {
1458 XmlConvert.ToTimeSpan(s);
1459 return ST_duration;
1460 }
1461 catch (FormatException)
1462 {
1463 }
1464 catch (OverflowException)
1465 {
1466 }
1467 iTypeFlags = 262144;
1468 return ST_string;
1469 }
1470 if (iTypeFlags == 262145)
1471 {
1472 return ST_boolean;
1473 }
1474 }
1475 return iTypeFlags switch
1476 {
1477 262144 => ST_string,
1478 1 => ST_boolean,
1479 2 => ST_byte,
1480 4 => ST_unsignedByte,
1481 8 => ST_short,
1482 16 => ST_unsignedShort,
1483 32 => ST_int,
1484 64 => ST_unsignedInt,
1485 128 => ST_long,
1486 256 => ST_unsignedLong,
1487 512 => ST_integer,
1488 1024 => ST_decimal,
1489 2048 => ST_float,
1490 4096 => ST_double,
1491 8192 => ST_duration,
1492 16384 => ST_dateTime,
1493 32768 => ST_time,
1494 65536 => ST_date,
1495 131072 => ST_gYearMonth,
1496 262145 => ST_boolean,
1497 278528 => ST_dateTime,
1498 327680 => ST_date,
1499 294912 => ST_time,
1500 268288 => ST_float,
1501 266240 => ST_double,
1502 _ => ST_string,
1503 };
1504 }
static int InferSimpleType(string s, ref bool bNeedsRangeCheck)

References System.s, System.Xml.XmlConvert.ToByte(), System.Xml.XmlConvert.ToDateTime(), System.Xml.XmlConvert.ToDouble(), System.Xml.XmlConvert.ToInt16(), System.Xml.XmlConvert.ToInt32(), System.Xml.XmlConvert.ToInt64(), System.Xml.XmlConvert.ToSByte(), System.Xml.XmlConvert.ToSingle(), System.Xml.XmlConvert.ToString(), System.Xml.XmlConvert.ToTimeSpan(), System.Xml.XmlConvert.ToUInt16(), System.Xml.XmlConvert.ToUInt32(), and System.Xml.XmlConvert.ToUInt64().

Referenced by System.Xml.Schema.XmlSchemaInference.AddAttribute().