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

◆ ProcessTerminal_HM_S_D()

static bool System.Globalization.TimeSpanParse.ProcessTerminal_HM_S_D ( ref TimeSpanRawInfo raw,
TimeSpanStandardStyles style,
ref TimeSpanResult result )
inlinestaticprivate

Definition at line 989 of file TimeSpanParse.cs.

990 {
991 if (raw._sepCount != 4 || (style & TimeSpanStandardStyles.RequireFull) != 0)
992 {
993 return result.SetBadTimeSpanFailure();
994 }
995 bool flag = (style & TimeSpanStandardStyles.Invariant) != 0;
996 bool flag2 = (style & TimeSpanStandardStyles.Localized) != 0;
997 bool flag3 = false;
998 bool flag4 = false;
999 bool flag5 = false;
1000 TimeSpanToken timeSpanToken = new TimeSpanToken(0);
1001 long result2 = 0L;
1002 if (flag)
1003 {
1004 if (raw.FullHMSMatch(TimeSpanFormat.PositiveInvariantFormatLiterals))
1005 {
1006 flag3 = true;
1007 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, out result2);
1008 flag5 = flag5 || !flag4;
1009 }
1010 if (!flag4 && raw.FullDHMMatch(TimeSpanFormat.PositiveInvariantFormatLiterals))
1011 {
1012 flag3 = true;
1013 flag4 = TryTimeToTicks(flag3, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, timeSpanToken, out result2);
1014 flag5 = flag5 || !flag4;
1015 }
1016 if (!flag4 && raw.PartialAppCompatMatch(TimeSpanFormat.PositiveInvariantFormatLiterals))
1017 {
1018 flag3 = true;
1019 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, timeSpanToken, raw._numbers2, out result2);
1020 flag5 = flag5 || !flag4;
1021 }
1022 if (!flag4 && raw.FullHMSMatch(TimeSpanFormat.NegativeInvariantFormatLiterals))
1023 {
1024 flag3 = false;
1025 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, out result2);
1026 flag5 = flag5 || !flag4;
1027 }
1028 if (!flag4 && raw.FullDHMMatch(TimeSpanFormat.NegativeInvariantFormatLiterals))
1029 {
1030 flag3 = false;
1031 flag4 = TryTimeToTicks(flag3, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, timeSpanToken, out result2);
1032 flag5 = flag5 || !flag4;
1033 }
1034 if (!flag4 && raw.PartialAppCompatMatch(TimeSpanFormat.NegativeInvariantFormatLiterals))
1035 {
1036 flag3 = false;
1037 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, timeSpanToken, raw._numbers2, out result2);
1038 flag5 = flag5 || !flag4;
1039 }
1040 }
1041 if (flag2)
1042 {
1043 if (!flag4 && raw.FullHMSMatch(raw.PositiveLocalized))
1044 {
1045 flag3 = true;
1046 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, out result2);
1047 flag5 = flag5 || !flag4;
1048 }
1049 if (!flag4 && raw.FullDHMMatch(raw.PositiveLocalized))
1050 {
1051 flag3 = true;
1052 flag4 = TryTimeToTicks(flag3, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, timeSpanToken, out result2);
1053 flag5 = flag5 || !flag4;
1054 }
1055 if (!flag4 && raw.PartialAppCompatMatch(raw.PositiveLocalized))
1056 {
1057 flag3 = true;
1058 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, timeSpanToken, raw._numbers2, out result2);
1059 flag5 = flag5 || !flag4;
1060 }
1061 if (!flag4 && raw.FullHMSMatch(raw.NegativeLocalized))
1062 {
1063 flag3 = false;
1064 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, out result2);
1065 flag5 = flag5 || !flag4;
1066 }
1067 if (!flag4 && raw.FullDHMMatch(raw.NegativeLocalized))
1068 {
1069 flag3 = false;
1070 flag4 = TryTimeToTicks(flag3, raw._numbers0, raw._numbers1, raw._numbers2, timeSpanToken, timeSpanToken, out result2);
1071 flag5 = flag5 || !flag4;
1072 }
1073 if (!flag4 && raw.PartialAppCompatMatch(raw.NegativeLocalized))
1074 {
1075 flag3 = false;
1076 flag4 = TryTimeToTicks(flag3, timeSpanToken, raw._numbers0, raw._numbers1, timeSpanToken, raw._numbers2, out result2);
1077 flag5 = flag5 || !flag4;
1078 }
1079 }
1080 if (flag4)
1081 {
1082 if (!flag3)
1083 {
1084 result2 = -result2;
1085 if (result2 > 0)
1086 {
1087 return result.SetOverflowFailure();
1088 }
1089 }
1090 result.parsedTimeSpan = new TimeSpan(result2);
1091 return true;
1092 }
1093 if (!flag5)
1094 {
1095 return result.SetBadTimeSpanFailure();
1096 }
1097 return result.SetOverflowFailure();
1098 }
static bool TryTimeToTicks(bool positive, TimeSpanToken days, TimeSpanToken hours, TimeSpanToken minutes, TimeSpanToken seconds, TimeSpanToken fraction, out long result)

References System.L, System.Globalization.TimeSpanFormat.NegativeInvariantFormatLiterals, System.Globalization.TimeSpanFormat.PositiveInvariantFormatLiterals, and System.Globalization.TimeSpanParse.TryTimeToTicks().

Referenced by System.Globalization.TimeSpanParse.ProcessTerminalState().