internal static Boolean ProcessTerminaltState(DS dps, ref DateTimeResult result, ref DateTimeRawInfo raw, DateTimeFormatInfo dtfi)
{
switch (dps)
{
case DS.DX_NN:
if (!GetDayOfNN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_NNN:
if (!GetDayOfNNN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_MN:
if (!GetDayOfMN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_NM:
if (!GetDayOfNM(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_MNN:
if (!GetDayOfMNN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_DS:
// The result has got the correct value. No need to process.
break;
case DS.DX_YNN:
if (!GetDayOfYNN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_NNY:
if (!GetDayOfNNY(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_YMN:
if (!GetDayOfYMN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_YN:
if (!GetDayOfYN(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.DX_YM:
if (!GetDayOfYM(ref result, ref raw, dtfi)) {
return false;
}
break;
case DS.TX_N:
if (!GetTimeOfN(dtfi, ref result, ref raw)) {
return false;
}
break;
case DS.TX_NN:
if (!GetTimeOfNN(dtfi, ref result, ref raw)) {
return false;
}
break;
case DS.TX_NNN:
if (!GetTimeOfNNN(dtfi, ref result, ref raw)) {
return false;
}
break;
case DS.TX_TS:
// The result has got the correct value. Nothing to do.
break;
case DS.DX_DSN:
if (!GetDateOfDSN(ref result, ref raw)) {
return false;
}
break;
case DS.DX_NDS:
if (!GetDateOfNDS(ref result, ref raw)) {
return false;
}
break;
case DS.DX_NNDS:
if (!GetDateOfNNDS(ref result, ref raw, dtfi)) {
return false;
}
break;
}
if (dps > DS.ERROR)
{
//
// We have reached a terminal state. Reset the raw num count.
//
raw.numCount = 0;
}
return true;
}