HRESULT ArgIntScan(PARG_BASE Base, const char *szOptValue) { int iValue; HRESULT hr = S_OK; if (!szOptValue) return E_FAIL; if (BeginWith(szOptValue, HEX_LPREFIX) || BeginWith(szOptValue, HEX_UPREFIX)) { if (!ParseHexValue(szOptValue + HEX_PREFIX_LEN, &iValue)) { hr = E_FAIL; } } else { if (!ParseDecValue(szOptValue, &iValue)) { hr = E_FAIL; } } if (SUCCEEDED(hr)) { if (((PARG_INT)Base)->Count >= Base->iMaxOccurs) { hr = E_FAIL; } else { ((PARG_INT)Base)->Values[((PARG_INT)Base)->Count] = iValue; ((PARG_INT)Base)->Count++; } } return hr; }
HRESULT Match(PARG_BASE Base, const char *szOpt) { if (BeginWith(szOpt, LONG_OPT_PREFIX)) { if (Base->szLongOpts && strcmp(szOpt + LONG_OPT_PREFIX_LEN, Base->szLongOpts) == 0) { return S_OK; } } else if (BeginWith(szOpt, SHORT_OPT_PREFIX)) { if (Base->szShortOpts && strcmp(szOpt + SHORT_OPT_PREFIX_LEN, Base->szShortOpts) == 0) { return S_OK; } } else if (Base->szLongOpts == NULL && Base->szShortOpts == NULL) { return S_UNTAGGED_OPT; } return E_FAIL; }
Direction Mud::findDirection(std::string direction, bool exact) { for (auto iterator : mudDirections) { if (exact) { if (iterator.first == ToLower(direction)) { return iterator.second; } } else { if (BeginWith(iterator.first, ToLower(direction))) { return iterator.second; } } } return Direction::None; }